{"version":3,"file":"static/js/main.3be71b9f.js","mappings":"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lB,EAAES,GAAK,CACH,GAGX,CACDmuJ,EAAGl2J,KAAKsH,EACX,CACD,OAAO4uJ,CACV,CAyeFoC,CAAG,CACRl1J,IAAKgW,EAAE,CACP,GACA,EACA,EACA,GACA,EACA,GACA1V,EACA,CAAC,EAAG,GACJ,EACAA,EACA,CAAC,EAAG,IACJA,EACA,CAAC,GAAI,GACLuH,EACA,CAAC,GAAI,GACL,EACA,EACA,GACA,EACA,EACA,EACAvH,EACA,CAAC,EAAG,GACJ,EACA,EACA,EACAuH,EACA,CAAC,GAAI,GACLA,EACA,CAAC,GAAI,GACL,EACA,EACA,IAEA4wE,OAAQziE,EAAE,CACV,EACA,EACA,EACA,GACA,GACA1V,EACA,CAAC,GAAI,GAAI,GACT,EACA,EACAA,EACA,CAAC,EAAG,EAAG,GACPuH,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,GACL,EACA,EACA,GACA,GACAA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,GACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,IAAK,GACN,EACAA,EACA,CAAC,GAAI,IACL,EACAA,EACA,CAAC,IAAK,IACN,GACAA,EACA,CAAC,IAAK,GACN,EACAA,EACA,CAAC,EAAG,GACJA,EACA,CAAC,EAAG,GACJ,EACA,EACA,GACAA,EACA,CAAC,IAAK,IACNA,EACA,CAAC,GAAI,MAELoM,KAAM+B,EAAE,CACR1V,EACA,CAAC,EAAG,IACJA,EACA,CAAC,EAAG,GACJ,EACAA,EACA,CAAC,EAAG,IACJA,EACA,CAAC,EAAG,GACJuH,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,IAAK,MAENqzH,MAAOllH,EAAE,CACT,EACA,EACA,EACA,EACA,EACA,GACAnO,EACA,CAAC,EAAG,GACJ,GACA,GACAA,EACA,CAAC,EAAG,GACJ,GACAA,EACA,CAAC,EAAG,GACJ,GACAA,EACA,CAAC,EAAG,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","sources":["../node_modules/axios/node_modules/form-data/lib/browser.js","../node_modules/classnames/index.js","../node_modules/css-unit-converter/index.js","../node_modules/decimal.js-light/decimal.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/eventemitter3/index.js","../node_modules/fast-equals/src/utils.ts","../node_modules/fast-equals/src/comparator.ts","../node_modules/fast-equals/src/index.ts","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/json2mq/index.js","../node_modules/leaflet/src/core/Util.js","../node_modules/leaflet/src/core/Class.js","../node_modules/leaflet/src/core/Events.js","../node_modules/leaflet/src/geometry/Point.js","../node_modules/leaflet/src/geometry/Bounds.js","../node_modules/leaflet/src/geo/LatLngBounds.js","../node_modules/leaflet/src/geo/LatLng.js","../node_modules/leaflet/src/geo/crs/CRS.js","../node_modules/leaflet/src/geo/crs/CRS.Earth.js","../node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js","../node_modules/leaflet/src/geometry/Transformation.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js","../node_modules/leaflet/src/layer/vector/SVG.Util.js","../node_modules/leaflet/src/core/Browser.js","../node_modules/leaflet/src/dom/DomEvent.Pointer.js","../node_modules/leaflet/src/dom/DomEvent.DoubleTap.js","../node_modules/leaflet/src/dom/DomUtil.js","../node_modules/leaflet/src/dom/DomEvent.js","../node_modules/leaflet/src/dom/PosAnimation.js","../node_modules/leaflet/src/map/Map.js","../node_modules/leaflet/src/control/Control.js","../node_modules/leaflet/src/control/Control.Layers.js","../node_modules/leaflet/src/control/Control.Zoom.js","../node_modules/leaflet/src/control/Control.Scale.js","../node_modules/leaflet/src/control/Control.Attribution.js","../node_modules/leaflet/src/control/index.js","../node_modules/leaflet/src/core/Handler.js","../node_modules/leaflet/src/core/index.js","../node_modules/leaflet/src/geometry/LineUtil.js","../node_modules/leaflet/src/dom/Draggable.js","../node_modules/leaflet/src/geometry/PolyUtil.js","../node_modules/leaflet/src/geo/projection/Projection.LonLat.js","../node_modules/leaflet/src/geo/projection/Projection.Mercator.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js","../node_modules/leaflet/src/geo/crs/CRS.Simple.js","../node_modules/leaflet/src/geo/crs/index.js","../node_modules/leaflet/src/layer/Layer.js","../node_modules/leaflet/src/layer/LayerGroup.js","../node_modules/leaflet/src/layer/FeatureGroup.js","../node_modules/leaflet/src/layer/marker/Icon.js","../node_modules/leaflet/src/layer/marker/Icon.Default.js","../node_modules/leaflet/src/layer/marker/Marker.Drag.js","../node_modules/leaflet/src/layer/marker/Marker.js","../node_modules/leaflet/src/layer/vector/Path.js","../node_modules/leaflet/src/layer/vector/CircleMarker.js","../node_modules/leaflet/src/layer/vector/Circle.js","../node_modules/leaflet/src/layer/vector/Polyline.js","../node_modules/leaflet/src/layer/vector/Polygon.js","../node_modules/leaflet/src/layer/GeoJSON.js","../node_modules/leaflet/src/layer/ImageOverlay.js","../node_modules/leaflet/src/layer/VideoOverlay.js","../node_modules/leaflet/src/layer/SVGOverlay.js","../node_modules/leaflet/src/layer/DivOverlay.js","../node_modules/leaflet/src/layer/Popup.js","../node_modules/leaflet/src/layer/Tooltip.js","../node_modules/leaflet/src/layer/marker/DivIcon.js","../node_modules/leaflet/src/layer/marker/index.js","../node_modules/leaflet/src/layer/tile/GridLayer.js","../node_modules/leaflet/src/layer/tile/TileLayer.js","../node_modules/leaflet/src/layer/tile/TileLayer.WMS.js","../node_modules/leaflet/src/layer/tile/index.js","../node_modules/leaflet/src/layer/vector/Renderer.js","../node_modules/leaflet/src/layer/vector/Canvas.js","../node_modules/leaflet/src/layer/vector/SVG.VML.js","../node_modules/leaflet/src/layer/vector/SVG.js","../node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js","../node_modules/leaflet/src/layer/vector/Rectangle.js","../node_modules/leaflet/src/layer/vector/index.js","../node_modules/leaflet/src/layer/index.js","../node_modules/leaflet/src/map/handler/Map.BoxZoom.js","../node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js","../node_modules/leaflet/src/map/handler/Map.Drag.js","../node_modules/leaflet/src/map/handler/Map.Keyboard.js","../node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js","../node_modules/leaflet/src/map/handler/Map.TapHold.js","../node_modules/leaflet/src/map/handler/Map.TouchZoom.js","../node_modules/leaflet/src/map/index.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_LazyWrapper.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_LodashWrapper.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayEvery.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseEvery.js","../node_modules/lodash/_baseExtremum.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseLodash.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSetData.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseSome.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_composeArgs.js","../node_modules/lodash/_composeArgsRight.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_countHolders.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createBind.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCtor.js","../node_modules/lodash/_createCurry.js","../node_modules/lodash/_createFind.js","../node_modules/lodash/_createHybrid.js","../node_modules/lodash/_createPartial.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_createRecurry.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/_createWrap.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getData.js","../node_modules/lodash/_getFuncName.js","../node_modules/lodash/_getHolder.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getWrapDetails.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_insertWrapDetails.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isLaziable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_mergeData.js","../node_modules/lodash/_metaMap.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_realNames.js","../node_modules/lodash/_reorder.js","../node_modules/lodash/_replaceHolders.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setData.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_setWrapToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_updateWrapDetails.js","../node_modules/lodash/_wrapperClone.js","../node_modules/lodash/constant.js","../node_modules/lodash/curry.js","../node_modules/lodash/debounce.js","../node_modules/lodash/eq.js","../node_modules/lodash/every.js","../node_modules/lodash/find.js","../node_modules/lodash/findIndex.js","../node_modules/lodash/flatMap.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBoolean.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isNaN.js","../node_modules/lodash/isNil.js","../node_modules/lodash/isNumber.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isString.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/last.js","../node_modules/lodash/map.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/max.js","../node_modules/lodash/memoize.js","../node_modules/lodash/min.js","../node_modules/lodash/noop.js","../node_modules/lodash/now.js","../node_modules/lodash/property.js","../node_modules/lodash/range.js","../node_modules/lodash/some.js","../node_modules/lodash/sortBy.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/throttle.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toString.js","../node_modules/lodash/uniqBy.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/wrapperLodash.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-crossfade-image/node_modules/react/cjs/react.production.min.js","../node_modules/react-crossfade-image/node_modules/react/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js","../node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js","../node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js","../node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","../node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-smooth/node_modules/react-transition-group/Transition.js","../node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","../node_modules/react-smooth/node_modules/react-transition-group/index.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/recharts/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/recharts/node_modules/react-is/index.js","../node_modules/reduce-css-calc/dist/index.js","../node_modules/reduce-css-calc/dist/lib/convert.js","../node_modules/reduce-css-calc/dist/lib/reducer.js","../node_modules/reduce-css-calc/dist/lib/stringifier.js","../node_modules/reduce-css-calc/dist/parser.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/index.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/parse.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/stringify.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/unit.js","../node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/walk.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/universal-cookie/node_modules/cookie/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/nonce","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/react-redux/es/index.js","../node_modules/react-redux/es/components/connect.js","../node_modules/@remix-run/router/utils.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/framer-motion/dist/es/utils/process.mjs","../node_modules/framesync/dist/es/on-next-frame.mjs","../node_modules/framesync/dist/es/index.mjs","../node_modules/framesync/dist/es/create-render-step.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../node_modules/framer-motion/dist/es/utils/warn-once.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../node_modules/universal-cookie/es6/index.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","components/icons/Searchicon.jsx","store/Address/types.js","store/Address/action.js","api/config.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/env/classes/FormData.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/index.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/index.js","store/Show/types.js","store/Show/action.js","store/Order/types.js","store/Order/action.js","store/Roof/types.js","store/Roof/action.js","components/Search/Search.jsx","pages/Home/Home.jsx","components/icons/Ðrrowicon.jsx","../node_modules/react-crossfade-image/index.es5.js","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","components/SendEmail/ButtonEmail.jsx","pages/About/About.jsx","pages/Solutions/Solutions.jsx","components/icons/Phoneicon.jsx","components/icons/Envelopeicon.jsx","components/icons/Globeicon.jsx","components/icons/Buildingicon.jsx","components/ContactForm/ContactForm.jsx","pages/Contact/Contact.jsx","pages/SubmissionView/SubmissionView.jsx","../node_modules/@react-leaflet/core/lib/context.js","../node_modules/react-leaflet/lib/hooks.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-leaflet/lib/MapContainer.js","../node_modules/@react-leaflet/core/lib/element.js","../node_modules/@react-leaflet/core/lib/component.js","../node_modules/@react-leaflet/core/lib/control.js","../node_modules/react-leaflet/lib/LayersControl.js","../node_modules/@react-leaflet/core/lib/events.js","../node_modules/@react-leaflet/core/lib/pane.js","../node_modules/@react-leaflet/core/lib/layer.js","../node_modules/@react-leaflet/core/lib/attribution.js","../node_modules/@react-leaflet/core/lib/path.js","../node_modules/@react-leaflet/core/lib/generic.js","../node_modules/@react-leaflet/core/lib/grid-layer.js","../node_modules/react-leaflet/lib/TileLayer.js","../node_modules/react-leaflet/lib/Polygon.js","../node_modules/react-leaflet/lib/WMSTileLayer.js","../node_modules/react-leaflet/lib/Marker.js","api/getCoordinatesApi.js","api/getAddressFromLatLng.js","components/OrderMap/OrderMap.jsx","components/RoofColor/RoofColor.jsx","components/icons/Houseicon.jsx","components/icons/Lightbulbicon.jsx","components/icons/Buildingorangeicon.jsx","components/RoofDescription/RoofDescription.jsx","pages/SearchResults/SearchResults.jsx","components/icons/Leftarrowicon.jsx","components/icons/Closeicon.jsx","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/react-tooltip/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-tooltip/node_modules/core-js/internals/global.js","../node_modules/react-tooltip/node_modules/core-js/internals/fails.js","../node_modules/react-tooltip/node_modules/core-js/internals/descriptors.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-bind-native.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-call.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-v8-version.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-uncurry-this-raw.js","../node_modules/react-tooltip/node_modules/core-js/internals/classof-raw.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-uncurry-this.js","../node_modules/react-tooltip/node_modules/core-js/internals/indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/react-tooltip/node_modules/core-js/internals/require-object-coercible.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-indexed-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/document-all.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-callable.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/get-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/react-tooltip/node_modules/core-js/internals/engine-user-agent.js","../node_modules/react-tooltip/node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/react-tooltip/node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/try-to-string.js","../node_modules/react-tooltip/node_modules/core-js/internals/a-callable.js","../node_modules/react-tooltip/node_modules/core-js/internals/get-method.js","../node_modules/react-tooltip/node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/react-tooltip/node_modules/core-js/internals/define-global-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-store.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/has-own-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/uid.js","../node_modules/react-tooltip/node_modules/core-js/internals/well-known-symbol.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-primitive.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-property-key.js","../node_modules/react-tooltip/node_modules/core-js/internals/document-create-element.js","../node_modules/react-tooltip/node_modules/core-js/internals/ie8-dom-define.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/react-tooltip/node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/react-tooltip/node_modules/core-js/internals/an-object.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-name.js","../node_modules/react-tooltip/node_modules/core-js/internals/inspect-source.js","../node_modules/react-tooltip/node_modules/core-js/internals/internal-state.js","../node_modules/react-tooltip/node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/react-tooltip/node_modules/core-js/internals/shared-key.js","../node_modules/react-tooltip/node_modules/core-js/internals/hidden-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/make-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/define-built-in.js","../node_modules/react-tooltip/node_modules/core-js/internals/math-trunc.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-absolute-index.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-length.js","../node_modules/react-tooltip/node_modules/core-js/internals/length-of-array-like.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-includes.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys-internal.js","../node_modules/react-tooltip/node_modules/core-js/internals/enum-bug-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/react-tooltip/node_modules/core-js/internals/own-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-forced.js","../node_modules/react-tooltip/node_modules/core-js/internals/export.js","../node_modules/react-tooltip/node_modules/core-js/internals/function-bind-context.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-array.js","../node_modules/react-tooltip/node_modules/core-js/internals/to-string-tag-support.js","../node_modules/react-tooltip/node_modules/core-js/internals/classof.js","../node_modules/react-tooltip/node_modules/core-js/internals/is-constructor.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-species-constructor.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-species-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/array-iteration.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-keys.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-define-properties.js","../node_modules/react-tooltip/node_modules/core-js/internals/html.js","../node_modules/react-tooltip/node_modules/core-js/internals/object-create.js","../node_modules/react-tooltip/node_modules/core-js/internals/add-to-unscopables.js","../node_modules/react-tooltip/node_modules/core-js/modules/es.array.find.js","../node_modules/react-tooltip/src/constant.js","../node_modules/react-tooltip/src/decorators/staticMethods.js","../node_modules/react-tooltip/src/decorators/customEvent.js","../node_modules/react-tooltip/src/decorators/bodyMode.js","../node_modules/react-tooltip/src/utils/getPosition.js","../node_modules/react-tooltip/src/utils/getTipContent.js","../node_modules/react-tooltip/src/utils/aria.js","../node_modules/react-tooltip/src/utils/nodeListToArray.js","../node_modules/react-tooltip/src/decorators/defaultStyles.js","../node_modules/react-tooltip/src/decorators/styler.js","../node_modules/react-tooltip/src/index.js","../node_modules/react-tooltip/src/decorators/trackRemoval.js","../node_modules/react-tooltip/src/decorators/windowListener.js","../node_modules/react-tooltip/src/decorators/isCapture.js","../node_modules/react-tooltip/src/decorators/getEffect.js","../node_modules/react-tooltip/src/utils/uuid.js","components/TooltipComponent/TooltipComponent.jsx","components/RoofTypes/RoofTypes.jsx","components/icons/Arrowdownicon.jsx","api/getRoofCalculation.js","../node_modules/recharts/es6/util/types.js","../node_modules/recharts/es6/container/Surface.js","../node_modules/recharts/es6/container/Layer.js","../node_modules/react-smooth/es6/setRafTimeout.js","../node_modules/react-smooth/es6/AnimateManager.js","../node_modules/react-smooth/es6/util.js","../node_modules/react-smooth/es6/easing.js","../node_modules/react-smooth/es6/configUpdate.js","../node_modules/react-smooth/es6/Animate.js","../node_modules/react-smooth/es6/AnimateGroupChild.js","../node_modules/react-smooth/es6/AnimateGroup.js","../node_modules/react-smooth/es6/index.js","../node_modules/recharts/es6/util/DataUtils.js","../node_modules/recharts/es6/component/DefaultTooltipContent.js","../node_modules/recharts/es6/util/Global.js","../node_modules/recharts/es6/component/Tooltip.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/recharts/es6/shape/Symbols.js","../node_modules/d3-shape/src/symbol.js","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/component/Legend.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/recharts/es6/shape/Curve.js","../node_modules/recharts/es6/shape/Cross.js","../node_modules/recharts/es6/util/PolarUtils.js","../node_modules/recharts/es6/shape/Sector.js","../node_modules/recharts/es6/shape/Dot.js","../node_modules/recharts/es6/shape/Rectangle.js","../node_modules/recharts/es6/util/ShallowEqual.js","../node_modules/recharts/es6/util/ReactUtils.js","../node_modules/recharts/es6/util/DOMUtils.js","../node_modules/recharts/es6/component/Text.js","../node_modules/recharts/es6/component/Label.js","../node_modules/recharts/es6/cartesian/CartesianAxis.js","../node_modules/d3-array/src/range.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/recharts-scale/es6/util/utils.js","../node_modules/recharts-scale/es6/util/arithmetic.js","../node_modules/recharts-scale/es6/getNiceTickValues.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/recharts/es6/util/ChartUtils.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/recharts/es6/util/CssPrefixUtils.js","../node_modules/recharts/es6/cartesian/Brush.js","../node_modules/recharts/es6/util/IfOverflowMatches.js","../node_modules/recharts/es6/util/CartesianUtils.js","../node_modules/recharts/es6/util/LogUtils.js","../node_modules/recharts/es6/cartesian/ReferenceDot.js","../node_modules/recharts/es6/cartesian/ReferenceLine.js","../node_modules/recharts/es6/cartesian/ReferenceArea.js","../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../node_modules/recharts/es6/util/Events.js","../node_modules/recharts/es6/chart/generateCategoricalChart.js","../node_modules/recharts/es6/component/LabelList.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/recharts/es6/cartesian/XAxis.js","../node_modules/recharts/es6/cartesian/YAxis.js","../node_modules/recharts/es6/chart/LineChart.js","../node_modules/recharts/es6/cartesian/CartesianGrid.js","components/ProductionChart/ProductionChart.jsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/dom-lib/esm/getWindow.js","../node_modules/dom-lib/esm/canUseDOM.js","../node_modules/dom-lib/esm/contains.js","../node_modules/dom-lib/esm/getOffset.js","../node_modules/dom-lib/esm/ownerDocument.js","../node_modules/dom-lib/esm/getWidth.js","../node_modules/rsuite/esm/utils/prefix.js","../node_modules/rsuite/esm/CustomProvider/CustomProvider.js","../node_modules/rsuite/esm/utils/useClassNames.js","../node_modules/rsuite/esm/Slider/ProgressBar.js","../node_modules/dom-lib/esm/on.js","../node_modules/dom-lib/esm/utils/getGlobal.js","../node_modules/dom-lib/esm/cancelAnimationFramePolyfill.js","../node_modules/dom-lib/esm/utils/emptyFunction.js","../node_modules/dom-lib/esm/requestAnimationFramePolyfill.js","../node_modules/dom-lib/esm/DOMMouseMoveTracker.js","../node_modules/dom-lib/esm/utils/hyphenateStyleName.js","../node_modules/dom-lib/esm/utils/stringFormatter.js","../node_modules/dom-lib/esm/removeStyle.js","../node_modules/dom-lib/esm/addStyle.js","../node_modules/rsuite/esm/Tooltip/Tooltip.js","../node_modules/rsuite/esm/Tooltip/index.js","../node_modules/rsuite/esm/utils/mergeRefs.js","../node_modules/rsuite/esm/Slider/Input.js","../node_modules/rsuite/esm/Slider/Handle.js","../node_modules/rsuite/esm/Slider/utils.js","../node_modules/rsuite/esm/Slider/Mark.js","../node_modules/rsuite/esm/Slider/Graduated.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-GB/_lib/formatLong/index.js","../node_modules/rsuite/esm/locales/default.js","../node_modules/date-fns/esm/locale/en-GB/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/rsuite/esm/utils/useCustom.js","../node_modules/rsuite/esm/utils/useControlled.js","../node_modules/rsuite/esm/Plaintext/Plaintext.js","../node_modules/rsuite/esm/Plaintext/index.js","../node_modules/rsuite/esm/Slider/Slider.js","../node_modules/dom-lib/esm/getHeight.js","../node_modules/rsuite/esm/Slider/index.js","components/ProgressBar/ProgressBar.jsx","components/RoofPanel/RoofPanel.jsx","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/node/id.mjs","../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/style-value-types/dist/es/utils.mjs","../node_modules/style-value-types/dist/es/numbers/units.mjs","../node_modules/style-value-types/dist/es/numbers/index.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/utils/types.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/events/use-dom-event.mjs","../node_modules/framer-motion/dist/es/gestures/utils/event-type.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","../node_modules/framer-motion/dist/es/events/utils.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/popmotion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs","../node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/tslib/tslib.es6.js","../node_modules/popmotion/dist/es/utils/clamp.mjs","../node_modules/popmotion/dist/es/animations/utils/find-spring.mjs","../node_modules/popmotion/dist/es/animations/generators/spring.mjs","../node_modules/popmotion/dist/es/utils/progress.mjs","../node_modules/popmotion/dist/es/utils/mix.mjs","../node_modules/style-value-types/dist/es/color/utils.mjs","../node_modules/style-value-types/dist/es/color/rgba.mjs","../node_modules/style-value-types/dist/es/color/hex.mjs","../node_modules/style-value-types/dist/es/color/hsla.mjs","../node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/popmotion/dist/es/utils/mix-color.mjs","../node_modules/style-value-types/dist/es/color/index.mjs","../node_modules/style-value-types/dist/es/complex/index.mjs","../node_modules/popmotion/dist/es/utils/inc.mjs","../node_modules/popmotion/dist/es/utils/mix-complex.mjs","../node_modules/popmotion/dist/es/utils/interpolate.mjs","../node_modules/popmotion/dist/es/easing/utils.mjs","../node_modules/popmotion/dist/es/easing/index.mjs","../node_modules/popmotion/dist/es/animations/generators/keyframes.mjs","../node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs","../node_modules/popmotion/dist/es/animations/generators/decay.mjs","../node_modules/popmotion/dist/es/animations/utils/elapsed.mjs","../node_modules/popmotion/dist/es/animations/index.mjs","../node_modules/popmotion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/popmotion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/animation/utils/easing.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/style-value-types/dist/es/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/popmotion/dist/es/animations/inertia.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/render/utils/animation.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/popmotion/dist/es/utils/is-point.mjs","../node_modules/popmotion/dist/es/utils/is-point-3d.mjs","../node_modules/popmotion/dist/es/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/PanSession.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","../node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/render/utils/lifecycles.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/index.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","../node_modules/framer-motion/dist/es/render/html/visual-element.mjs","../node_modules/framer-motion/dist/es/render/svg/visual-element.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","../node_modules/framer-motion/dist/es/animation/animate.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/render/dom/motion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","components/LoadingSpinner/LoadingSpinner.jsx","../node_modules/styled-components/src/base.js","components/ErrorMessage/ErrorMessage.jsx","components/icons/Discounticon.jsx","components/RoofPrice/RoofPrice.jsx","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/controller.tsx","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/logic/focusFieldBy.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/fillEmptyArray.ts","../node_modules/react-hook-form/src/utils/getValidationModes.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","components/icons/Usericon.jsx","components/icons/Addresscardicon.jsx","components/icons/Housegreyicon.jsx","components/icons/Buildinggreyicon.jsx","components/icons/Cityicon.jsx","components/icons/Envelopeiconmin.jsx","components/icons/Phoneiconmin.jsx","components/RoofOrder/RoofOrder.jsx","../node_modules/react-hook-form/src/useForm.ts","components/CompleteOrder/CompleteOrder.jsx","pages/Offer/Offer.jsx","pages/Unsubscribe/Unsubscribe.jsx","assets/images/solkartlogo.svg","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/react-sidebar/dist/react-sidebar.esm.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","components/Header/Header.jsx","components/icons/FooterLogoicon.jsx","components/Footer/Footer.jsx","components/HeaderForIframe/HeaderForIframe.jsx","../node_modules/reactjs-popup/src/hooks.tsx","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/reactjs-popup/src/styles.ts","../node_modules/reactjs-popup/src/Utils.ts","../node_modules/reactjs-popup/src/index.tsx","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","components/SimpleSlider/SimpleSlider.jsx","components/PopupModal/PopupModal.jsx","components/icons/OrangeCloseicon.jsx","components/Cookie/Cookie.jsx","routes/Routes.js","api/getPartnerId.js","App.js","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","store/Address/state.js","store/Address/reducer.js","store/Roof/state.js","store/Roof/reducer.js","store/Show/state.js","store/Show/reducer.js","store/Order/state.js","store/Order/reducer.js","store/reducers.js","store/index.js","index.js"],"sourcesContent":["/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var conversions = {\r\n // length\r\n 'px': {\r\n 'px': 1,\r\n 'cm': 96.0/2.54,\r\n 'mm': 96.0/25.4,\r\n 'in': 96,\r\n 'pt': 96.0/72.0,\r\n 'pc': 16\r\n },\r\n 'cm': {\r\n 'px': 2.54/96.0,\r\n 'cm': 1,\r\n 'mm': 0.1,\r\n 'in': 2.54,\r\n 'pt': 2.54/72.0,\r\n 'pc': 2.54/6.0\r\n },\r\n 'mm': {\r\n 'px': 25.4/96.0,\r\n 'cm': 10,\r\n 'mm': 1,\r\n 'in': 25.4,\r\n 'pt': 25.4/72.0,\r\n 'pc': 25.4/6.0\r\n },\r\n 'in': {\r\n 'px': 1.0/96.0,\r\n 'cm': 1.0/2.54,\r\n 'mm': 1.0/25.4,\r\n 'in': 1,\r\n 'pt': 1.0/72.0,\r\n 'pc': 1.0/6.0\r\n },\r\n 'pt': {\r\n 'px': 0.75,\r\n 'cm': 72.0/2.54,\r\n 'mm': 72.0/25.4,\r\n 'in': 72,\r\n 'pt': 1,\r\n 'pc': 12\r\n },\r\n 'pc': {\r\n 'px': 6.0/96.0,\r\n 'cm': 6.0/2.54,\r\n 'mm': 6.0/25.4,\r\n 'in': 6,\r\n 'pt': 6.0/72.0,\r\n 'pc': 1\r\n },\r\n // angle\r\n 'deg': {\r\n 'deg': 1,\r\n 'grad': 0.9,\r\n 'rad': 180/Math.PI,\r\n 'turn': 360\r\n },\r\n 'grad': {\r\n 'deg': 400/360,\r\n 'grad': 1,\r\n 'rad': 200/Math.PI,\r\n 'turn': 400\r\n },\r\n 'rad': {\r\n 'deg': Math.PI/180,\r\n 'grad': Math.PI/200,\r\n 'rad': 1,\r\n 'turn': Math.PI*2\r\n },\r\n 'turn': {\r\n 'deg': 1/360,\r\n 'grad': 1/400,\r\n 'rad': 0.5/Math.PI,\r\n 'turn': 1\r\n },\r\n // time\r\n 's': {\r\n 's': 1,\r\n 'ms': 1/1000\r\n },\r\n 'ms': {\r\n 's': 1000,\r\n 'ms': 1\r\n },\r\n // frequency\r\n 'Hz': {\r\n 'Hz': 1,\r\n 'kHz': 1000\r\n },\r\n 'kHz': {\r\n 'Hz': 1/1000,\r\n 'kHz': 1\r\n },\r\n // resolution\r\n 'dpi': {\r\n 'dpi': 1,\r\n 'dpcm': 1.0/2.54,\r\n 'dppx': 1/96\r\n },\r\n 'dpcm': {\r\n 'dpi': 2.54,\r\n 'dpcm': 1,\r\n 'dppx': 2.54/96.0\r\n },\r\n 'dppx': {\r\n 'dpi': 96,\r\n 'dpcm': 96.0/2.54,\r\n 'dppx': 1\r\n }\r\n};\r\n\r\nmodule.exports = function (value, sourceUnit, targetUnit, precision) {\r\n if (!conversions.hasOwnProperty(targetUnit))\r\n throw new Error(\"Cannot convert to \" + targetUnit);\r\n\r\n if (!conversions[targetUnit].hasOwnProperty(sourceUnit))\r\n throw new Error(\"Cannot convert from \" + sourceUnit + \" to \" + targetUnit);\r\n \r\n var converted = conversions[targetUnit][sourceUnit] * value;\r\n \r\n if (precision !== false) {\r\n precision = Math.pow(10, parseInt(precision) || 5);\r\n return Math.round(converted * precision) / precision;\r\n }\r\n \r\n return converted;\r\n};\r\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","const HAS_WEAKSET_SUPPORT = typeof WeakSet === 'function';\n\nconst { keys } = Object;\n\ntype Cache = {\n add: (value: any) => void;\n has: (value: any) => boolean;\n};\n\nexport type EqualityComparator = (a: any, b: any, meta?: any) => boolean;\n\n/**\n * are the values passed strictly equal or both NaN\n *\n * @param a the value to compare against\n * @param b the value to test\n * @returns are the values equal by the SameValueZero principle\n */\nexport function sameValueZeroEqual(a: any, b: any) {\n return a === b || (a !== a && b !== b);\n}\n\n/**\n * is the value a plain object\n *\n * @param value the value to test\n * @returns is the value a plain object\n */\nexport function isPlainObject(value: any) {\n return value.constructor === Object || value.constructor == null;\n}\n\n/**\n * is the value promise-like (meaning it is thenable)\n *\n * @param value the value to test\n * @returns is the value promise-like\n */\nexport function isPromiseLike(value: any) {\n return !!value && typeof value.then === 'function';\n}\n\n/**\n * is the value passed a react element\n *\n * @param value the value to test\n * @returns is the value a react element\n */\nexport function isReactElement(value: any) {\n return !!(value && value.$$typeof);\n}\n\n/**\n * in cases where WeakSet is not supported, creates a new custom\n * object that mimics the necessary API aspects for cache purposes\n *\n * @returns the new cache object\n */\nexport function getNewCacheFallback(): Cache {\n const values: any[] = [];\n\n return {\n add(value: any) {\n values.push(value);\n },\n\n has(value: any) {\n return values.indexOf(value) !== -1;\n },\n };\n}\n\n/**\n * get a new cache object to prevent circular references\n *\n * @returns the new cache object\n */\nexport const getNewCache = ((canUseWeakMap: boolean) => {\n if (canUseWeakMap) {\n return function _getNewCache(): Cache {\n return new WeakSet();\n };\n }\n\n return getNewCacheFallback;\n})(HAS_WEAKSET_SUPPORT);\n\n/**\n * create a custom isEqual handler specific to circular objects\n *\n * @param [isEqual] the isEqual comparator to use instead of isDeepEqual\n * @returns the method to create the `isEqual` function\n */\nexport function createCircularEqualCreator(isEqual?: EqualityComparator) {\n return function createCircularEqual(comparator: EqualityComparator) {\n const _comparator = isEqual || comparator;\n\n return function circularEqual(\n a: any,\n b: any,\n cache: Cache = getNewCache(),\n ) {\n const isCacheableA = !!a && typeof a === 'object';\n const isCacheableB = !!b && typeof b === 'object';\n\n if (isCacheableA || isCacheableB) {\n const hasA = isCacheableA && cache.has(a);\n const hasB = isCacheableB && cache.has(b);\n\n if (hasA || hasB) {\n return hasA && hasB;\n }\n\n if (isCacheableA) {\n cache.add(a);\n }\n\n if (isCacheableB) {\n cache.add(b);\n }\n }\n\n return _comparator(a, b, cache);\n };\n };\n}\n\n/**\n * are the arrays equal in value\n *\n * @param a the array to test\n * @param b the array to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta object to pass through\n * @returns are the arrays equal\n */\nexport function areArraysEqual(\n a: any[],\n b: any[],\n isEqual: EqualityComparator,\n meta: any,\n) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!isEqual(a[index], b[index], meta)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * are the maps equal in value\n *\n * @param a the map to test\n * @param b the map to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta map to pass through\n * @returns are the maps equal\n */\nexport function areMapsEqual(\n a: Map<any, any>,\n b: Map<any, any>,\n isEqual: EqualityComparator,\n meta: any,\n) {\n let isValueEqual = a.size === b.size;\n\n if (isValueEqual && a.size) {\n const matchedIndices: Record<number, true> = {};\n\n a.forEach((aValue, aKey) => {\n if (isValueEqual) {\n let hasMatch = false;\n let matchIndex = 0;\n\n b.forEach((bValue, bKey) => {\n if (!hasMatch && !matchedIndices[matchIndex]) {\n hasMatch =\n isEqual(aKey, bKey, meta) && isEqual(aValue, bValue, meta);\n\n if (hasMatch) {\n matchedIndices[matchIndex] = true;\n }\n }\n\n matchIndex++;\n });\n\n isValueEqual = hasMatch;\n }\n });\n }\n\n return isValueEqual;\n}\n\ntype Dictionary<Type> = {\n [key: string]: Type;\n [index: number]: Type;\n};\n\nconst OWNER = '_owner';\n\nconst hasOwnProperty = Function.prototype.bind.call(\n Function.prototype.call,\n Object.prototype.hasOwnProperty,\n);\n\n/**\n * are the objects equal in value\n *\n * @param a the object to test\n * @param b the object to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta object to pass through\n * @returns are the objects equal\n */\nexport function areObjectsEqual(\n a: Dictionary<any>,\n b: Dictionary<any>,\n isEqual: EqualityComparator,\n meta: any,\n) {\n const keysA = keys(a);\n\n let index = keysA.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n if (index) {\n let key: string;\n\n while (index-- > 0) {\n key = keysA[index];\n\n if (key === OWNER) {\n const reactElementA = isReactElement(a);\n const reactElementB = isReactElement(b);\n\n if (\n (reactElementA || reactElementB) &&\n reactElementA !== reactElementB\n ) {\n return false;\n }\n }\n\n if (!hasOwnProperty(b, key) || !isEqual(a[key], b[key], meta)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * are the regExps equal in value\n *\n * @param a the regExp to test\n * @param b the regExp to test agains\n * @returns are the regExps equal\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp) {\n return (\n a.source === b.source &&\n a.global === b.global &&\n a.ignoreCase === b.ignoreCase &&\n a.multiline === b.multiline &&\n a.unicode === b.unicode &&\n a.sticky === b.sticky &&\n a.lastIndex === b.lastIndex\n );\n}\n\n/**\n * are the sets equal in value\n *\n * @param a the set to test\n * @param b the set to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta set to pass through\n * @returns are the sets equal\n */\nexport function areSetsEqual(\n a: Set<any>,\n b: Set<any>,\n isEqual: EqualityComparator,\n meta: any,\n) {\n let isValueEqual = a.size === b.size;\n\n if (isValueEqual && a.size) {\n const matchedIndices: Record<number, true> = {};\n\n a.forEach((aValue) => {\n if (isValueEqual) {\n let hasMatch = false;\n let matchIndex = 0;\n\n b.forEach((bValue) => {\n if (!hasMatch && !matchedIndices[matchIndex]) {\n hasMatch = isEqual(aValue, bValue, meta);\n\n if (hasMatch) {\n matchedIndices[matchIndex] = true;\n }\n }\n\n matchIndex++;\n });\n\n isValueEqual = hasMatch;\n }\n });\n }\n\n return isValueEqual;\n}\n","import {\n EqualityComparator,\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areRegExpsEqual,\n areSetsEqual,\n isPlainObject,\n isPromiseLike,\n sameValueZeroEqual,\n} from './utils';\n\nconst HAS_MAP_SUPPORT = typeof Map === 'function';\nconst HAS_SET_SUPPORT = typeof Set === 'function';\n\ntype EqualityComparatorCreator = (fn: EqualityComparator) => EqualityComparator;\n\nexport function createComparator(createIsEqual?: EqualityComparatorCreator) {\n const isEqual: EqualityComparator =\n /* eslint-disable no-use-before-define */\n typeof createIsEqual === 'function'\n ? createIsEqual(comparator)\n : comparator;\n /* eslint-enable */\n\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n *\n * @param a the value to test against\n * @param b the value to test\n * @param [meta] an optional meta object that is passed through to all equality test calls\n * @returns are a and b equivalent in value\n */\n function comparator(a: any, b: any, meta?: any) {\n if (a === b) {\n return true;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (isPlainObject(a) && isPlainObject(b)) {\n return areObjectsEqual(a, b, isEqual, meta);\n }\n\n let aShape = Array.isArray(a);\n let bShape = Array.isArray(b);\n\n if (aShape || bShape) {\n return aShape === bShape && areArraysEqual(a, b, isEqual, meta);\n }\n\n aShape = a instanceof Date;\n bShape = b instanceof Date;\n\n if (aShape || bShape) {\n return (\n aShape === bShape && sameValueZeroEqual(a.getTime(), b.getTime())\n );\n }\n\n aShape = a instanceof RegExp;\n bShape = b instanceof RegExp;\n\n if (aShape || bShape) {\n return aShape === bShape && areRegExpsEqual(a, b);\n }\n\n if (isPromiseLike(a) || isPromiseLike(b)) {\n return a === b;\n }\n\n if (HAS_MAP_SUPPORT) {\n aShape = a instanceof Map;\n bShape = b instanceof Map;\n\n if (aShape || bShape) {\n return aShape === bShape && areMapsEqual(a, b, isEqual, meta);\n }\n }\n\n if (HAS_SET_SUPPORT) {\n aShape = a instanceof Set;\n bShape = b instanceof Set;\n\n if (aShape || bShape) {\n return aShape === bShape && areSetsEqual(a, b, isEqual, meta);\n }\n }\n\n return areObjectsEqual(a, b, isEqual, meta);\n }\n\n return a !== a && b !== b;\n }\n\n return comparator;\n}\n","import { createComparator } from './comparator';\nimport { createCircularEqualCreator, sameValueZeroEqual } from './utils';\n\nexport { createComparator as createCustomEqual, sameValueZeroEqual };\n\nexport const deepEqual = createComparator();\nexport const shallowEqual = createComparator(() => sameValueZeroEqual);\n\nexport const circularDeepEqual = createComparator(createCircularEqualCreator());\nexport const circularShallowEqual = createComparator(\n createCircularEqualCreator(sameValueZeroEqual),\n);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.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'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\tif (!('_leaflet_id' in obj)) {\r\n\t\tobj['_leaflet_id'] = ++lastId;\r\n\t}\r\n\treturn obj._leaflet_id;\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t min = range[0],\r\n\t d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, precision?: Number|false): Number\r\n// Returns the number `num` rounded with specified `precision`.\r\n// The default `precision` value is 6 decimal places.\r\n// `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\nexport function formatNum(num, precision) {\r\n\tif (precision === false) { return num; }\r\n\tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n","import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\tUtil.setOptions(this);\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\tdelete proto.statics;\r\n\tdelete proto.includes;\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tproto.options = parentProto.options ? Util.create(parentProto.options) : {};\r\n\t\tUtil.extend(proto.options, props.options);\r\n\t}\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tvar parentOptions = this.prototype.options;\r\n\tUtil.extend(this.prototype, props);\r\n\tif (props.options) {\r\n\t\tthis.prototype.options = parentOptions;\r\n\t\tthis.mergeOptions(props.options);\r\n\t}\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n","import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!arguments.length) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tvar removeAll = arguments.length === 1;\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tif (removeAll) {\r\n\t\t\t\t\tthis._off(types[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context, _once) {\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if fn already there\r\n\t\tif (this._listens(type, fn, context) !== false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar newListener = {fn: fn, ctx: context};\r\n\t\tif (_once) {\r\n\t\t\tnewListener.once = true;\r\n\t\t}\r\n\r\n\t\tthis._events = this._events || {};\r\n\t\tthis._events[type] = this._events[type] || [];\r\n\t\tthis._events[type].push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t i,\r\n\t\t len;\r\n\r\n\t\tif (!this._events) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlisteners = this._events[type];\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (arguments.length === 1) { // remove all\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// Set all removed listeners to noop\r\n\t\t\t\t// so they are not called if remove happens in fire\r\n\t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find fn and remove it\r\n\t\tvar index = this._listens(type, fn, context);\r\n\t\tif (index !== false) {\r\n\t\t\tvar listener = listeners[index];\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\tlistener.fn = Util.falseFn;\r\n\r\n\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t}\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide a data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n\t\t\t\t\tvar fn = l.fn;\r\n\t\t\t\t\tif (l.once) {\r\n\t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String, propagate?: Boolean): Boolean\r\n\t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n\tlistens: function (type, fn, context, propagate) {\r\n\t\tif (typeof type !== 'string') {\r\n\t\t\tconsole.warn('\"string\" type argument expected');\r\n\t\t}\r\n\r\n\t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n\t\tvar _fn = fn;\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tpropagate = !!fn;\r\n\t\t\t_fn = undefined;\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) {\r\n\t\t\tif (this._listens(type, _fn, context) !== false) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// returns the index (number) or false\r\n\t_listens: function (type, fn, context) {\r\n\t\tif (!this._events) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events[type] || [];\r\n\t\tif (!fn) {\r\n\t\t\treturn !!listeners.length;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn, true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n","import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t formatNum(this.x) + ', ' +\r\n\t\t formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n","import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: Bounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar min2, max2;\r\n\t\tif (!obj) { return this; }\r\n\r\n\t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n\t\t\tmin2 = max2 = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t\tmin2 = obj.min;\r\n\t\t\tmax2 = obj.max;\r\n\r\n\t\t\tif (!min2 || !max2) { return this; }\r\n\t\t}\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = min2.clone();\r\n\t\t\tthis.max = max2.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn toPoint(\r\n\t\t (this.min.x + this.max.x) / 2,\r\n\t\t (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn toPoint(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn toPoint(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t (max.x <= this.max.x) &&\r\n\t\t (min.y >= this.min.y) &&\r\n\t\t (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t},\r\n\r\n\r\n\t// @method pad(bufferRatio: Number): Bounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar min = this.min,\r\n\t\tmax = this.max,\r\n\t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n\t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n\t\treturn toBounds(\r\n\t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n\t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n\t},\r\n\r\n\r\n\t// @method equals(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n\tequals: function (bounds) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n\t\t\tthis.max.equals(bounds.getBottomRight());\r\n\t},\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n","import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n","import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t Math.abs(this.lat - obj.lat),\r\n\t\t Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n","\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t s = this.scale(zoom),\r\n\t\t min = this.transformation.transform(b.min, s),\r\n\t\t max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t newCenter = this.wrapLatLng(center),\r\n\t\t latShift = center.lat - newCenter.lat,\r\n\t\t lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t ne = bounds.getNorthEast(),\r\n\t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n","import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see https://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t lat1 = latlng1.lat * rad,\n\t\t lat2 = latlng2.lat * rad,\n\t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t max = this.MAX_LATITUDE,\r\n\t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n","import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t (point.x / scale - this._b) / this._a,\r\n\t\t (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n","import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n","import Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n","import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// **Deprecated.** `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touchNative: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// **This does not necessarily mean** that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\nvar touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\nvar inlineSvg = !!svg && (function () {\r\n\tvar div = document.createElement('div');\r\n\tdiv.innerHTML = '<svg/>';\r\n\treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n})();\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Mac platform\r\nvar mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Linux platform\r\nvar linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\r\n\r\nexport default {\r\n\tie: ie,\r\n\tielt9: ielt9,\r\n\tedge: edge,\r\n\twebkit: webkit,\r\n\tandroid: android,\r\n\tandroid23: android23,\r\n\tandroidStock: androidStock,\r\n\topera: opera,\r\n\tchrome: chrome,\r\n\tgecko: gecko,\r\n\tsafari: safari,\r\n\tphantom: phantom,\r\n\topera12: opera12,\r\n\twin: win,\r\n\tie3d: ie3d,\r\n\twebkit3d: webkit3d,\r\n\tgecko3d: gecko3d,\r\n\tany3d: any3d,\r\n\tmobile: mobile,\r\n\tmobileWebkit: mobileWebkit,\r\n\tmobileWebkit3d: mobileWebkit3d,\r\n\tmsPointer: msPointer,\r\n\tpointer: pointer,\r\n\ttouch: touch,\r\n\ttouchNative: touchNative,\r\n\tmobileOpera: mobileOpera,\r\n\tmobileGecko: mobileGecko,\r\n\tretina: retina,\r\n\tpassiveEvents: passiveEvents,\r\n\tcanvas: canvas,\r\n\tsvg: svg,\r\n\tvml: vml,\r\n\tinlineSvg: inlineSvg,\r\n\tmac: mac,\r\n\tlinux: linux\r\n};\r\n","import * as DomEvent from './DomEvent';\nimport Browser from '../core/Browser';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\nvar POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\nvar POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\nvar POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar pEvent = {\n\ttouchstart : POINTER_DOWN,\n\ttouchmove : POINTER_MOVE,\n\ttouchend : POINTER_UP,\n\ttouchcancel : POINTER_CANCEL\n};\nvar handle = {\n\ttouchstart : _onPointerStart,\n\ttouchmove : _handlePointer,\n\ttouchend : _handlePointer,\n\ttouchcancel : _handlePointer\n};\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler) {\n\tif (type === 'touchstart') {\n\t\t_addPointerDocListener();\n\t}\n\tif (!handle[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn L.Util.falseFn;\n\t}\n\thandler = handle[type].bind(this, handler);\n\tobj.addEventListener(pEvent[type], handler, false);\n\treturn handler;\n}\n\nexport function removePointerListener(obj, type, handler) {\n\tif (!pEvent[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn;\n\t}\n\tobj.removeEventListener(pEvent[type], handler, false);\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _addPointerDocListener() {\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _handlePointer(handler, e) {\n\tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _onPointerStart(handler, e) {\n\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\tDomEvent.preventDefault(e);\n\t}\n\t_handlePointer(handler, e);\n}\n","import * as DomEvent from './DomEvent';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\nfunction makeDblclick(event) {\r\n\t// in modern browsers `type` cannot be just overridden:\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n\tvar newEvent = {},\r\n\t prop, i;\r\n\tfor (i in event) {\r\n\t\tprop = event[i];\r\n\t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n\t}\r\n\tevent = newEvent;\r\n\tnewEvent.type = 'dblclick';\r\n\tnewEvent.detail = 2;\r\n\tnewEvent.isTrusted = false;\r\n\tnewEvent._simulated = true; // for debug purposes\r\n\treturn newEvent;\r\n}\r\n\r\nvar delay = 200;\r\nexport function addDoubleTapListener(obj, handler) {\r\n\t// Most browsers handle double tap natively\r\n\tobj.addEventListener('dblclick', handler);\r\n\r\n\t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n\t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n\t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n\tvar last = 0,\r\n\t detail;\r\n\tfunction simDblclick(e) {\r\n\t\tif (e.detail !== 1) {\r\n\t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.pointerType === 'mouse' ||\r\n\t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When clicking on an <input>, the browser generates a click on its\r\n\t\t// <label> (and vice versa) triggering two clicks in quick succession.\r\n\t\t// This ignores clicks on elements which are a label with a 'for'\r\n\t\t// attribute (or children of such a label), but not children of\r\n\t\t// a <input>.\r\n\t\tvar path = DomEvent.getPropagationPath(e);\r\n\t\tif (path.some(function (el) {\r\n\t\t\treturn el instanceof HTMLLabelElement && el.attributes.for;\r\n\t\t}) &&\r\n\t\t\t!path.some(function (el) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tel instanceof HTMLInputElement ||\r\n\t\t\t\t\tel instanceof HTMLSelectElement\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar now = Date.now();\r\n\t\tif (now - last <= delay) {\r\n\t\t\tdetail++;\r\n\t\t\tif (detail === 2) {\r\n\t\t\t\thandler(makeDblclick(e));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdetail = 1;\r\n\t\t}\r\n\t\tlast = now;\r\n\t}\r\n\r\n\tobj.addEventListener('click', simDblclick);\r\n\r\n\treturn {\r\n\t\tdblclick: handler,\r\n\t\tsimDblclick: simDblclick\r\n\t};\r\n}\r\n\r\nexport function removeDoubleTapListener(obj, handlers) {\r\n\tobj.removeEventListener('dblclick', handlers.dblclick);\r\n\tobj.removeEventListener('click', handlers.simDblclick);\r\n}\r\n","import * as DomEvent from './DomEvent';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\nimport Browser from '../core/Browser';\r\n\r\n/*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n// @property TRANSFORM: String\r\n// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\nexport var TRANSFORM = testProp(\r\n\t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n// webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n// the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n// @property TRANSITION: String\r\n// Vendor-prefixed transition style name.\r\nexport var TRANSITION = testProp(\r\n\t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n// @property TRANSITION_END: String\r\n// Vendor-prefixed transitionend event name.\r\nexport var TRANSITION_END =\r\n\tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n// @function get(id: String|HTMLElement): HTMLElement\r\n// Returns an element given its DOM id, or returns the element itself\r\n// if it was passed directly.\r\nexport function get(id) {\r\n\treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n}\r\n\r\n// @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n// Returns the value for a certain style attribute on an element,\r\n// including computed values or values set through CSS.\r\nexport function getStyle(el, style) {\r\n\tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n\tif ((!value || value === 'auto') && document.defaultView) {\r\n\t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n\t\tvalue = css ? css[style] : null;\r\n\t}\r\n\treturn value === 'auto' ? null : value;\r\n}\r\n\r\n// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\nexport function create(tagName, className, container) {\r\n\tvar el = document.createElement(tagName);\r\n\tel.className = className || '';\r\n\r\n\tif (container) {\r\n\t\tcontainer.appendChild(el);\r\n\t}\r\n\treturn el;\r\n}\r\n\r\n// @function remove(el: HTMLElement)\r\n// Removes `el` from its parent element\r\nexport function remove(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent) {\r\n\t\tparent.removeChild(el);\r\n\t}\r\n}\r\n\r\n// @function empty(el: HTMLElement)\r\n// Removes all of `el`'s children elements from `el`\r\nexport function empty(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n}\r\n\r\n// @function toFront(el: HTMLElement)\r\n// Makes `el` the last child of its parent, so it renders in front of the other children.\r\nexport function toFront(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.lastChild !== el) {\r\n\t\tparent.appendChild(el);\r\n\t}\r\n}\r\n\r\n// @function toBack(el: HTMLElement)\r\n// Makes `el` the first child of its parent, so it renders behind the other children.\r\nexport function toBack(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.firstChild !== el) {\r\n\t\tparent.insertBefore(el, parent.firstChild);\r\n\t}\r\n}\r\n\r\n// @function hasClass(el: HTMLElement, name: String): Boolean\r\n// Returns `true` if the element's class attribute contains `name`.\r\nexport function hasClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\treturn el.classList.contains(name);\r\n\t}\r\n\tvar className = getClass(el);\r\n\treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n}\r\n\r\n// @function addClass(el: HTMLElement, name: String)\r\n// Adds `name` to the element's class attribute.\r\nexport function addClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tvar classes = Util.splitWords(name);\r\n\t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n\t\t\tel.classList.add(classes[i]);\r\n\t\t}\r\n\t} else if (!hasClass(el, name)) {\r\n\t\tvar className = getClass(el);\r\n\t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n\t}\r\n}\r\n\r\n// @function removeClass(el: HTMLElement, name: String)\r\n// Removes `name` from the element's class attribute.\r\nexport function removeClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tel.classList.remove(name);\r\n\t} else {\r\n\t\tsetClass(el, Util.trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n\t}\r\n}\r\n\r\n// @function setClass(el: HTMLElement, name: String)\r\n// Sets the element's class.\r\nexport function setClass(el, name) {\r\n\tif (el.className.baseVal === undefined) {\r\n\t\tel.className = name;\r\n\t} else {\r\n\t\t// in case of SVG element\r\n\t\tel.className.baseVal = name;\r\n\t}\r\n}\r\n\r\n// @function getClass(el: HTMLElement): String\r\n// Returns the element's class.\r\nexport function getClass(el) {\r\n\t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n\t// (Required for linked SVG elements in IE11.)\r\n\tif (el.correspondingElement) {\r\n\t\tel = el.correspondingElement;\r\n\t}\r\n\treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n}\r\n\r\n// @function setOpacity(el: HTMLElement, opacity: Number)\r\n// Set the opacity of an element (including old IE support).\r\n// `opacity` must be a number from `0` to `1`.\r\nexport function setOpacity(el, value) {\r\n\tif ('opacity' in el.style) {\r\n\t\tel.style.opacity = value;\r\n\t} else if ('filter' in el.style) {\r\n\t\t_setOpacityIE(el, value);\r\n\t}\r\n}\r\n\r\nfunction _setOpacityIE(el, value) {\r\n\tvar filter = false,\r\n\t filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n\t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n\ttry {\r\n\t\tfilter = el.filters.item(filterName);\r\n\t} catch (e) {\r\n\t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n\t\t// it isn't needed and breaks transparent pngs.\r\n\t\tif (value === 1) { return; }\r\n\t}\r\n\r\n\tvalue = Math.round(value * 100);\r\n\r\n\tif (filter) {\r\n\t\tfilter.Enabled = (value !== 100);\r\n\t\tfilter.Opacity = value;\r\n\t} else {\r\n\t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n\t}\r\n}\r\n\r\n// @function testProp(props: String[]): String|false\r\n// Goes through the array of style names and returns the first name\r\n// that is a valid style name for an element. If no such name is found,\r\n// it returns false. Useful for vendor-prefixed styles like `transform`.\r\nexport function testProp(props) {\r\n\tvar style = document.documentElement.style;\r\n\r\n\tfor (var i = 0; i < props.length; i++) {\r\n\t\tif (props[i] in style) {\r\n\t\t\treturn props[i];\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n// @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n// and optionally scaled by `scale`. Does not have an effect if the\r\n// browser doesn't support 3D CSS transforms.\r\nexport function setTransform(el, offset, scale) {\r\n\tvar pos = offset || new Point(0, 0);\r\n\r\n\tel.style[TRANSFORM] =\r\n\t\t(Browser.ie3d ?\r\n\t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n\t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n\t\t(scale ? ' scale(' + scale + ')' : '');\r\n}\r\n\r\n// @function setPosition(el: HTMLElement, position: Point)\r\n// Sets the position of `el` to coordinates specified by `position`,\r\n// using CSS translate or top/left positioning depending on the browser\r\n// (used by Leaflet internally to position its layers).\r\nexport function setPosition(el, point) {\r\n\r\n\t/*eslint-disable */\r\n\tel._leaflet_pos = point;\r\n\t/* eslint-enable */\r\n\r\n\tif (Browser.any3d) {\r\n\t\tsetTransform(el, point);\r\n\t} else {\r\n\t\tel.style.left = point.x + 'px';\r\n\t\tel.style.top = point.y + 'px';\r\n\t}\r\n}\r\n\r\n// @function getPosition(el: HTMLElement): Point\r\n// Returns the coordinates of an element previously positioned with setPosition.\r\nexport function getPosition(el) {\r\n\t// this method is only used for elements previously positioned using setPosition,\r\n\t// so it's safe to cache the position for performance\r\n\r\n\treturn el._leaflet_pos || new Point(0, 0);\r\n}\r\n\r\n// @function disableTextSelection()\r\n// Prevents the user from generating `selectstart` DOM events, usually generated\r\n// when the user drags the mouse through a page with text. Used internally\r\n// by Leaflet to override the behaviour of any click-and-drag interaction on\r\n// the map. Affects drag interactions on the whole document.\r\n\r\n// @function enableTextSelection()\r\n// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\nexport var disableTextSelection;\r\nexport var enableTextSelection;\r\nvar _userSelect;\r\nif ('onselectstart' in document) {\r\n\tdisableTextSelection = function () {\r\n\t\tDomEvent.on(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tDomEvent.off(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n} else {\r\n\tvar userSelectProperty = testProp(\r\n\t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n\tdisableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tvar style = document.documentElement.style;\r\n\t\t\t_userSelect = style[userSelectProperty];\r\n\t\t\tstyle[userSelectProperty] = 'none';\r\n\t\t}\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n\t\t\t_userSelect = undefined;\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// @function disableImageDrag()\r\n// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n// for `dragstart` DOM events, usually generated when the user drags an image.\r\nexport function disableImageDrag() {\r\n\tDomEvent.on(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\n// @function enableImageDrag()\r\n// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\nexport function enableImageDrag() {\r\n\tDomEvent.off(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\nvar _outlineElement, _outlineStyle;\r\n// @function preventOutline(el: HTMLElement)\r\n// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n// of the element `el` invisible. Used internally by Leaflet to prevent\r\n// focusable elements from displaying an outline when the user performs a\r\n// drag interaction on them.\r\nexport function preventOutline(element) {\r\n\twhile (element.tabIndex === -1) {\r\n\t\telement = element.parentNode;\r\n\t}\r\n\tif (!element.style) { return; }\r\n\trestoreOutline();\r\n\t_outlineElement = element;\r\n\t_outlineStyle = element.style.outline;\r\n\telement.style.outline = 'none';\r\n\tDomEvent.on(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function restoreOutline()\r\n// Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\nexport function restoreOutline() {\r\n\tif (!_outlineElement) { return; }\r\n\t_outlineElement.style.outline = _outlineStyle;\r\n\t_outlineElement = undefined;\r\n\t_outlineStyle = undefined;\r\n\tDomEvent.off(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n// Finds the closest parent node which size (width and height) is not null.\r\nexport function getSizedParentNode(element) {\r\n\tdo {\r\n\t\telement = element.parentNode;\r\n\t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n\treturn element;\r\n}\r\n\r\n// @function getScale(el: HTMLElement): Object\r\n// Computes the CSS scale currently applied on the element.\r\n// Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\nexport function getScale(element) {\r\n\tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n\treturn {\r\n\t\tx: rect.width / element.offsetWidth || 1,\r\n\t\ty: rect.height / element.offsetHeight || 1,\r\n\t\tboundingClientRect: rect\r\n\t};\r\n}\r\n","import {Point} from '../geometry/Point';\r\nimport * as Util from '../core/Util';\r\nimport Browser from '../core/Browser';\r\nimport {addPointerListener, removePointerListener} from './DomEvent.Pointer';\r\nimport {addDoubleTapListener, removeDoubleTapListener} from './DomEvent.DoubleTap';\r\nimport {getScale} from './DomUtil';\r\n\r\n/*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n// Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Adds a listener function (`fn`) to a particular DOM event type of the\r\n// element `el`. You can optionally specify the context of the listener\r\n// (object the `this` keyword will point to). You can also pass several\r\n// space-separated types (e.g. `'click dblclick'`).\r\n\r\n// @alternative\r\n// @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nexport function on(obj, types, fn, context) {\r\n\r\n\tif (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\taddOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\taddOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nvar eventsKey = '_leaflet_events';\r\n\r\n// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Removes a previously added listener function.\r\n// Note that if you passed a custom context to on, you must pass the same\r\n// context to `off` in order to remove the listener.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, types: String): this\r\n// Removes all previously added listeners of given types.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement): this\r\n// Removes all previously added listeners from given HTMLElement\r\nexport function off(obj, types, fn, context) {\r\n\r\n\tif (arguments.length === 1) {\r\n\t\tbatchRemove(obj);\r\n\t\tdelete obj[eventsKey];\r\n\r\n\t} else if (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\tremoveOne(obj, type, types[type], fn);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tif (arguments.length === 2) {\r\n\t\t\tbatchRemove(obj, function (type) {\r\n\t\t\t\treturn Util.indexOf(types, type) !== -1;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tremoveOne(obj, types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction batchRemove(obj, filterFn) {\r\n\tfor (var id in obj[eventsKey]) {\r\n\t\tvar type = id.split(/\\d/)[0];\r\n\t\tif (!filterFn || filterFn(type)) {\r\n\t\t\tremoveOne(obj, type, null, null, id);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar mouseSubst = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout',\r\n\twheel: !('onwheel' in window) && 'mousewheel'\r\n};\r\n\r\nfunction addOne(obj, type, fn, context) {\r\n\tvar id = type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\r\n\tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n\tvar handler = function (e) {\r\n\t\treturn fn.call(context || obj, e || window.event);\r\n\t};\r\n\r\n\tvar originalHandler = handler;\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\t// Needs DomEvent.Pointer.js\r\n\t\thandler = addPointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\thandler = addDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('addEventListener' in obj) {\r\n\r\n\t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' || type === 'mousewheel') {\r\n\t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n\t\t\thandler = function (e) {\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tif (isExternalTarget(obj, e)) {\r\n\t\t\t\t\toriginalHandler(e);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n\t\t} else {\r\n\t\t\tobj.addEventListener(type, originalHandler, false);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\tobj.attachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey] = obj[eventsKey] || {};\r\n\tobj[eventsKey][id] = handler;\r\n}\r\n\r\nfunction removeOne(obj, type, fn, context, id) {\r\n\tid = id || type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\tvar handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n\tif (!handler) { return this; }\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\tremovePointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\tremoveDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('removeEventListener' in obj) {\r\n\r\n\t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n\t} else {\r\n\t\tobj.detachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey][id] = null;\r\n}\r\n\r\n// @function stopPropagation(ev: DOMEvent): this\r\n// Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n// ```js\r\n// L.DomEvent.on(div, 'click', function (ev) {\r\n// \tL.DomEvent.stopPropagation(ev);\r\n// });\r\n// ```\r\nexport function stopPropagation(e) {\r\n\r\n\tif (e.stopPropagation) {\r\n\t\te.stopPropagation();\r\n\t} else if (e.originalEvent) { // In case of Leaflet event.\r\n\t\te.originalEvent._stopped = true;\r\n\t} else {\r\n\t\te.cancelBubble = true;\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\n// @function disableScrollPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\nexport function disableScrollPropagation(el) {\r\n\taddOne(el, 'wheel', stopPropagation);\r\n\treturn this;\r\n}\r\n\r\n// @function disableClickPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,\r\n// `'mousedown'` and `'touchstart'` events (plus browser variants).\r\nexport function disableClickPropagation(el) {\r\n\ton(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);\r\n\tel['_leaflet_disable_click'] = true;\r\n\treturn this;\r\n}\r\n\r\n// @function preventDefault(ev: DOMEvent): this\r\n// Prevents the default action of the DOM Event `ev` from happening (such as\r\n// following a link in the href of the a element, or doing a POST request\r\n// with page reload when a `<form>` is submitted).\r\n// Use it inside listener functions.\r\nexport function preventDefault(e) {\r\n\tif (e.preventDefault) {\r\n\t\te.preventDefault();\r\n\t} else {\r\n\t\te.returnValue = false;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n// @function stop(ev: DOMEvent): this\r\n// Does `stopPropagation` and `preventDefault` at the same time.\r\nexport function stop(e) {\r\n\tpreventDefault(e);\r\n\tstopPropagation(e);\r\n\treturn this;\r\n}\r\n\r\n// @function getPropagationPath(ev: DOMEvent): Array\r\n// Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).\r\n// Returns an array containing the `HTMLElement`s that the given DOM event\r\n// should propagate to (if not stopped).\r\nexport function getPropagationPath(ev) {\r\n\tif (ev.composedPath) {\r\n\t\treturn ev.composedPath();\r\n\t}\r\n\r\n\tvar path = [];\r\n\tvar el = ev.target;\r\n\r\n\twhile (el) {\r\n\t\tpath.push(el);\r\n\t\tel = el.parentNode;\r\n\t}\r\n\treturn path;\r\n}\r\n\r\n\r\n// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n// Gets normalized mouse position from a DOM event relative to the\r\n// `container` (border excluded) or to the whole page if not specified.\r\nexport function getMousePosition(e, container) {\r\n\tif (!container) {\r\n\t\treturn new Point(e.clientX, e.clientY);\r\n\t}\r\n\r\n\tvar scale = getScale(container),\r\n\t offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y)\r\n\r\n\treturn new Point(\r\n\t\t// offset.left/top values are in page scale (like clientX/Y),\r\n\t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n\t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n\t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n\t);\r\n}\r\n\r\n\r\n// except , Safari and\r\n// We need double the scroll pixels (see #7403 and #4538) for all Browsers\r\n// except OSX (Mac) -> 3x, Chrome running on Linux 1x\r\n\r\nvar wheelPxFactor =\r\n\t(Browser.linux && Browser.chrome) ? window.devicePixelRatio :\r\n\tBrowser.mac ? window.devicePixelRatio * 3 :\r\n\twindow.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;\r\n// @function getWheelDelta(ev: DOMEvent): Number\r\n// Gets normalized wheel delta from a wheel DOM event, in vertical\r\n// pixels scrolled (negative if scrolling down).\r\n// Events from pointing devices without precise scrolling are mapped to\r\n// a best guess of 60 pixels.\r\nexport function getWheelDelta(e) {\r\n\treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n\t (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n\t (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n\t (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n\t (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n\t e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n\t (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n\t e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n\t 0;\r\n}\r\n\r\n// check if element really left/entered the event target (for mouseenter/mouseleave)\r\nexport function isExternalTarget(el, e) {\r\n\r\n\tvar related = e.relatedTarget;\r\n\r\n\tif (!related) { return true; }\r\n\r\n\ttry {\r\n\t\twhile (related && (related !== el)) {\r\n\t\t\trelated = related.parentNode;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\treturn false;\r\n\t}\r\n\treturn (related !== el);\r\n}\r\n\r\n// @function addListener(…): this\r\n// Alias to [`L.DomEvent.on`](#domevent-on)\r\nexport {on as addListener};\r\n\r\n// @function removeListener(…): this\r\n// Alias to [`L.DomEvent.off`](#domevent-off)\r\nexport {off as removeListener};\r\n","import * as Util from '../core/Util';\nimport {Evented} from '../core/Events';\nimport * as DomUtil from '../dom/DomUtil';\n\n\n/*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);\n *\n * myPositionMarker.on(\"click\", function() {\n * \tvar pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());\n * \tpos.y -= 25;\n * \tvar fx = new L.PosAnimation();\n *\n * \tfx.once('end',function() {\n * \t\tpos.y += 25;\n * \t\tfx.run(myPositionMarker._icon, pos, 0.8);\n * \t});\n *\n * \tfx.run(myPositionMarker._icon, pos, 0.3);\n * });\n *\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\nexport var PosAnimation = Evented.extend({\n\n\t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n\t// Run an animation of a given element to a new position, optionally setting\n\t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n\t// argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),\n\t// `0.5` by default).\n\trun: function (el, newPos, duration, easeLinearity) {\n\t\tthis.stop();\n\n\t\tthis._el = el;\n\t\tthis._inProgress = true;\n\t\tthis._duration = duration || 0.25;\n\t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n\t\tthis._startPos = DomUtil.getPosition(el);\n\t\tthis._offset = newPos.subtract(this._startPos);\n\t\tthis._startTime = +new Date();\n\n\t\t// @event start: Event\n\t\t// Fired when the animation starts\n\t\tthis.fire('start');\n\n\t\tthis._animate();\n\t},\n\n\t// @method stop()\n\t// Stops the animation (if currently running).\n\tstop: function () {\n\t\tif (!this._inProgress) { return; }\n\n\t\tthis._step(true);\n\t\tthis._complete();\n\t},\n\n\t_animate: function () {\n\t\t// animation loop\n\t\tthis._animId = Util.requestAnimFrame(this._animate, this);\n\t\tthis._step();\n\t},\n\n\t_step: function (round) {\n\t\tvar elapsed = (+new Date()) - this._startTime,\n\t\t duration = this._duration * 1000;\n\n\t\tif (elapsed < duration) {\n\t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n\t\t} else {\n\t\t\tthis._runFrame(1);\n\t\t\tthis._complete();\n\t\t}\n\t},\n\n\t_runFrame: function (progress, round) {\n\t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n\t\tif (round) {\n\t\t\tpos._round();\n\t\t}\n\t\tDomUtil.setPosition(this._el, pos);\n\n\t\t// @event step: Event\n\t\t// Fired continuously during the animation.\n\t\tthis.fire('step');\n\t},\n\n\t_complete: function () {\n\t\tUtil.cancelAnimFrame(this._animId);\n\n\t\tthis._inProgress = false;\n\t\t// @event end: Event\n\t\t// Fired when the animation ends.\n\t\tthis.fire('end');\n\t},\n\n\t_easeOut: function (t) {\n\t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n\t}\n});\n","import * as Util from '../core/Util';\r\nimport {Evented} from '../core/Events';\r\nimport {EPSG3857} from '../geo/crs/CRS.EPSG3857';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Bounds, toBounds} from '../geometry/Bounds';\r\nimport {LatLng, toLatLng} from '../geo/LatLng';\r\nimport {LatLngBounds, toLatLngBounds} from '../geo/LatLngBounds';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {PosAnimation} from '../dom/PosAnimation';\r\n\r\n/*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\nexport var Map = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section Map State Options\r\n\t\t// @option crs: CRS = L.CRS.EPSG3857\r\n\t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n\t\t// sure what it means.\r\n\t\tcrs: EPSG3857,\r\n\r\n\t\t// @option center: LatLng = undefined\r\n\t\t// Initial geographic center of the map\r\n\t\tcenter: undefined,\r\n\r\n\t\t// @option zoom: Number = undefined\r\n\t\t// Initial map zoom level\r\n\t\tzoom: undefined,\r\n\r\n\t\t// @option minZoom: Number = *\r\n\t\t// Minimum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the lowest of their `minZoom` options will be used instead.\r\n\t\tminZoom: undefined,\r\n\r\n\t\t// @option maxZoom: Number = *\r\n\t\t// Maximum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the highest of their `maxZoom` options will be used instead.\r\n\t\tmaxZoom: undefined,\r\n\r\n\t\t// @option layers: Layer[] = []\r\n\t\t// Array of layers that will be added to the map initially\r\n\t\tlayers: [],\r\n\r\n\t\t// @option maxBounds: LatLngBounds = null\r\n\t\t// When this option is set, the map restricts the view to the given\r\n\t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n\t\t// outside the view. To set the restriction dynamically, use\r\n\t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n\t\tmaxBounds: undefined,\r\n\r\n\t\t// @option renderer: Renderer = *\r\n\t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n\t\t// or `L.Canvas` by default depending on browser support.\r\n\t\trenderer: undefined,\r\n\r\n\r\n\t\t// @section Animation Options\r\n\t\t// @option zoomAnimation: Boolean = true\r\n\t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tzoomAnimation: true,\r\n\r\n\t\t// @option zoomAnimationThreshold: Number = 4\r\n\t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n\t\tzoomAnimationThreshold: 4,\r\n\r\n\t\t// @option fadeAnimation: Boolean = true\r\n\t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tfadeAnimation: true,\r\n\r\n\t\t// @option markerZoomAnimation: Boolean = true\r\n\t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n\t\t// they will disappear for the length of the animation. By default it's\r\n\t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n\t\tmarkerZoomAnimation: true,\r\n\r\n\t\t// @option transform3DLimit: Number = 2^23\r\n\t\t// Defines the maximum size of a CSS translation transform. The default\r\n\t\t// value should not be changed unless a web browser positions layers in\r\n\t\t// the wrong place after doing a large `panBy`.\r\n\t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n\t\t// @section Interaction Options\r\n\t\t// @option zoomSnap: Number = 1\r\n\t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n\t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n\t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n\t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n\t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n\t\tzoomSnap: 1,\r\n\r\n\t\t// @option zoomDelta: Number = 1\r\n\t\t// Controls how much the map's zoom level will change after a\r\n\t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n\t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n\t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n\t\tzoomDelta: 1,\r\n\r\n\t\t// @option trackResize: Boolean = true\r\n\t\t// Whether the map automatically handles browser window resize to update itself.\r\n\t\ttrackResize: true\r\n\t},\r\n\r\n\tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// Make sure to assign internal flags at the beginning,\r\n\t\t// to avoid inconsistent state in some edge cases.\r\n\t\tthis._handlers = [];\r\n\t\tthis._layers = {};\r\n\t\tthis._zoomBoundLayers = {};\r\n\t\tthis._sizeChanged = true;\r\n\r\n\t\tthis._initContainer(id);\r\n\t\tthis._initLayout();\r\n\r\n\t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n\t\tthis._onResize = Util.bind(this._onResize, this);\r\n\r\n\t\tthis._initEvents();\r\n\r\n\t\tif (options.maxBounds) {\r\n\t\t\tthis.setMaxBounds(options.maxBounds);\r\n\t\t}\r\n\r\n\t\tif (options.zoom !== undefined) {\r\n\t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n\t\t}\r\n\r\n\t\tif (options.center && options.zoom !== undefined) {\r\n\t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n\t\t}\r\n\r\n\t\tthis.callInitHooks();\r\n\r\n\t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n\t\tthis._zoomAnimated = DomUtil.TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n\t\t\t\tthis.options.zoomAnimation;\r\n\r\n\t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n\t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tthis._createAnimProxy();\r\n\t\t\tDomEvent.on(this._proxy, DomUtil.TRANSITION_END, this._catchTransitionEnd, this);\r\n\t\t}\r\n\r\n\t\tthis._addLayers(this.options.layers);\r\n\t},\r\n\r\n\r\n\t// @section Methods for modifying map state\r\n\r\n\t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) with the given\r\n\t// animation options.\r\n\tsetView: function (center, zoom, options) {\r\n\r\n\t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n\t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n\t\toptions = options || {};\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n\t\t\tif (options.animate !== undefined) {\r\n\t\t\t\toptions.zoom = Util.extend({animate: options.animate}, options.zoom);\r\n\t\t\t\toptions.pan = Util.extend({animate: options.animate, duration: options.duration}, options.pan);\r\n\t\t\t}\r\n\r\n\t\t\t// try animating pan or zoom\r\n\t\t\tvar moved = (this._zoom !== zoom) ?\r\n\t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n\t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n\t\t\tif (moved) {\r\n\t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// animation didn't start, just reset the map view\r\n\t\tthis._resetView(center, zoom, options.pan && options.pan.noMoveStart);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the zoom of the map.\r\n\tsetZoom: function (zoom, options) {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthis._zoom = zoom;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n\t},\r\n\r\n\t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n\t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomIn: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom + delta, options);\r\n\t},\r\n\r\n\t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n\t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomOut: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom - delta, options);\r\n\t},\r\n\r\n\t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified geographical point on the map\r\n\t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n\t// @alternative\r\n\t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n\tsetZoomAround: function (latlng, zoom, options) {\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t viewHalf = this.getSize().divideBy(2),\r\n\t\t containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n\t\t centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n\t\t newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n\t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n\t},\r\n\r\n\t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n\t\t zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n\t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n\t\tif (zoom === Infinity) {\r\n\t\t\treturn {\r\n\t\t\t\tcenter: bounds.getCenter(),\r\n\t\t\t\tzoom: zoom\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n\t\t swPoint = this.project(bounds.getSouthWest(), zoom),\r\n\t\t nePoint = this.project(bounds.getNorthEast(), zoom),\r\n\t\t center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n\t\treturn {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\t},\r\n\r\n\t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets a map view that contains the given geographical bounds with the\r\n\t// maximum zoom level possible.\r\n\tfitBounds: function (bounds, options) {\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthrow new Error('Bounds are not valid.');\r\n\t\t}\r\n\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.setView(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method fitWorld(options?: fitBounds options): this\r\n\t// Sets a map view that mostly contains the whole world with the maximum\r\n\t// zoom level possible.\r\n\tfitWorld: function (options) {\r\n\t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n\t},\r\n\r\n\t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n\t// Pans the map to a given center.\r\n\tpanTo: function (center, options) { // (LatLng)\r\n\t\treturn this.setView(center, this._zoom, {pan: options});\r\n\t},\r\n\r\n\t// @method panBy(offset: Point, options?: Pan options): this\r\n\t// Pans the map by a given number of pixels (animated).\r\n\tpanBy: function (offset, options) {\r\n\t\toffset = toPoint(offset).round();\r\n\t\toptions = options || {};\r\n\r\n\t\tif (!offset.x && !offset.y) {\r\n\t\t\treturn this.fire('moveend');\r\n\t\t}\r\n\t\t// If we pan too far, Chrome gets issues with tiles\r\n\t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n\t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (!this._panAnim) {\r\n\t\t\tthis._panAnim = new PosAnimation();\r\n\r\n\t\t\tthis._panAnim.on({\r\n\t\t\t\t'step': this._onPanTransitionStep,\r\n\t\t\t\t'end': this._onPanTransitionEnd\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\t// don't fire movestart if animating inertia\r\n\t\tif (!options.noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\r\n\t\t// animate pan unless animate: false specified\r\n\t\tif (options.animate !== false) {\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n\t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n\t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n\t\t} else {\r\n\t\t\tthis._rawPanBy(offset);\r\n\t\t\tthis.fire('move').fire('moveend');\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n\t// pan-zoom animation.\r\n\tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tif (options.animate === false || !Browser.any3d) {\r\n\t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tvar from = this.project(this.getCenter()),\r\n\t\t to = this.project(targetCenter),\r\n\t\t size = this.getSize(),\r\n\t\t startZoom = this._zoom;\r\n\r\n\t\ttargetCenter = toLatLng(targetCenter);\r\n\t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n\t\tvar w0 = Math.max(size.x, size.y),\r\n\t\t w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n\t\t u1 = (to.distanceTo(from)) || 1,\r\n\t\t rho = 1.42,\r\n\t\t rho2 = rho * rho;\r\n\r\n\t\tfunction r(i) {\r\n\t\t\tvar s1 = i ? -1 : 1,\r\n\t\t\t s2 = i ? w1 : w0,\r\n\t\t\t t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n\t\t\t b1 = 2 * s2 * rho2 * u1,\r\n\t\t\t b = t1 / b1,\r\n\t\t\t sq = Math.sqrt(b * b + 1) - b;\r\n\r\n\t\t\t // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n\t\t\t // thus triggering an infinite loop in flyTo\r\n\t\t\t var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n\t\t\treturn log;\r\n\t\t}\r\n\r\n\t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n\t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n\t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n\t\tvar r0 = r(0);\r\n\r\n\t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n\t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n\t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n\t\tvar start = Date.now(),\r\n\t\t S = (r(1) - r0) / rho,\r\n\t\t duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n\t\tfunction frame() {\r\n\t\t\tvar t = (Date.now() - start) / duration,\r\n\t\t\t s = easeOut(t) * S;\r\n\r\n\t\t\tif (t <= 1) {\r\n\t\t\t\tthis._flyToFrame = Util.requestAnimFrame(frame, this);\r\n\r\n\t\t\t\tthis._move(\r\n\t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n\t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n\t\t\t\t\t{flyTo: true});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis\r\n\t\t\t\t\t._move(targetCenter, targetZoom)\r\n\t\t\t\t\t._moveEnd(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n\t\tframe.call(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n\t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n\tflyToBounds: function (bounds, options) {\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.flyTo(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method setMaxBounds(bounds: LatLngBounds): this\r\n\t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n\tsetMaxBounds: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this.listens('moveend', this._panInsideMaxBounds)) {\r\n\t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\t\t}\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthis.options.maxBounds = null;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tthis.options.maxBounds = bounds;\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\tthis._panInsideMaxBounds();\r\n\t\t}\r\n\r\n\t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n\t},\r\n\r\n\t// @method setMinZoom(zoom: Number): this\r\n\t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n\tsetMinZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.minZoom;\r\n\t\tthis.options.minZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() < this.options.minZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setMaxZoom(zoom: Number): this\r\n\t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n\tsetMaxZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.maxZoom;\r\n\t\tthis.options.maxZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n\t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n\tpanInsideBounds: function (bounds, options) {\r\n\t\tthis._enforcingBounds = true;\r\n\t\tvar center = this.getCenter(),\r\n\t\t newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n\t\tif (!center.equals(newCenter)) {\r\n\t\t\tthis.panTo(newCenter, options);\r\n\t\t}\r\n\r\n\t\tthis._enforcingBounds = false;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInside(latlng: LatLng, options?: padding options): this\r\n\t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n\t// padding options to fit the display to more restricted bounds.\r\n\t// If `latlng` is already within the (optionally padded) display bounds,\r\n\t// the map will not be panned.\r\n\tpanInside: function (latlng, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\t\t pixelCenter = this.project(this.getCenter()),\r\n\t\t pixelPoint = this.project(latlng),\r\n\t\t pixelBounds = this.getPixelBounds(),\r\n\t\t paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\r\n\t\t paddedSize = paddedBounds.getSize();\r\n\r\n\t\tif (!paddedBounds.contains(pixelPoint)) {\r\n\t\t\tthis._enforcingBounds = true;\r\n\t\t\tvar centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\r\n\t\t\tvar offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\r\n\t\t\tpixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\r\n\t\t\tpixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\r\n\t\t\tthis.panTo(this.unproject(pixelCenter), options);\r\n\t\t\tthis._enforcingBounds = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method invalidateSize(options: Zoom/pan options): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n\t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n\t// that it doesn't happen often even if the method is called many\r\n\t// times in a row.\r\n\r\n\t// @alternative\r\n\t// @method invalidateSize(animate: Boolean): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default.\r\n\tinvalidateSize: function (options) {\r\n\t\tif (!this._loaded) { return this; }\r\n\r\n\t\toptions = Util.extend({\r\n\t\t\tanimate: false,\r\n\t\t\tpan: true\r\n\t\t}, options === true ? {animate: true} : options);\r\n\r\n\t\tvar oldSize = this.getSize();\r\n\t\tthis._sizeChanged = true;\r\n\t\tthis._lastCenter = null;\r\n\r\n\t\tvar newSize = this.getSize(),\r\n\t\t oldCenter = oldSize.divideBy(2).round(),\r\n\t\t newCenter = newSize.divideBy(2).round(),\r\n\t\t offset = oldCenter.subtract(newCenter);\r\n\r\n\t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n\t\tif (options.animate && options.pan) {\r\n\t\t\tthis.panBy(offset);\r\n\r\n\t\t} else {\r\n\t\t\tif (options.pan) {\r\n\t\t\t\tthis._rawPanBy(offset);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fire('move');\r\n\r\n\t\t\tif (options.debounceMoveend) {\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\tthis._sizeTimer = setTimeout(Util.bind(this.fire, this, 'moveend'), 200);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fire('moveend');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @section Map state change events\r\n\t\t// @event resize: ResizeEvent\r\n\t\t// Fired when the map is resized.\r\n\t\treturn this.fire('resize', {\r\n\t\t\toldSize: oldSize,\r\n\t\t\tnewSize: newSize\r\n\t\t});\r\n\t},\r\n\r\n\t// @section Methods for modifying map state\r\n\t// @method stop(): this\r\n\t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n\tstop: function () {\r\n\t\tthis.setZoom(this._limitZoom(this._zoom));\r\n\t\tif (!this.options.zoomSnap) {\r\n\t\t\tthis.fire('viewreset');\r\n\t\t}\r\n\t\treturn this._stop();\r\n\t},\r\n\r\n\t// @section Geolocation methods\r\n\t// @method locate(options?: Locate options): this\r\n\t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n\t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n\t// and optionally sets the map view to the user's location with respect to\r\n\t// detection accuracy (or to the world view if geolocation failed).\r\n\t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n\t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n\t// See `Locate options` for more details.\r\n\tlocate: function (options) {\r\n\r\n\t\toptions = this._locateOptions = Util.extend({\r\n\t\t\ttimeout: 10000,\r\n\t\t\twatch: false\r\n\t\t\t// setView: false\r\n\t\t\t// maxZoom: <Number>\r\n\t\t\t// maximumAge: 0\r\n\t\t\t// enableHighAccuracy: false\r\n\t\t}, options);\r\n\r\n\t\tif (!('geolocation' in navigator)) {\r\n\t\t\tthis._handleGeolocationError({\r\n\t\t\t\tcode: 0,\r\n\t\t\t\tmessage: 'Geolocation not supported.'\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar onResponse = Util.bind(this._handleGeolocationResponse, this),\r\n\t\t onError = Util.bind(this._handleGeolocationError, this);\r\n\r\n\t\tif (options.watch) {\r\n\t\t\tthis._locationWatchId =\r\n\t\t\t navigator.geolocation.watchPosition(onResponse, onError, options);\r\n\t\t} else {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method stopLocate(): this\r\n\t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n\t// and aborts resetting the map view if map.locate was called with\r\n\t// `{setView: true}`.\r\n\tstopLocate: function () {\r\n\t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n\t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n\t\t}\r\n\t\tif (this._locateOptions) {\r\n\t\t\tthis._locateOptions.setView = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_handleGeolocationError: function (error) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar c = error.code,\r\n\t\t message = error.message ||\r\n\t\t (c === 1 ? 'permission denied' :\r\n\t\t (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n\t\tif (this._locateOptions.setView && !this._loaded) {\r\n\t\t\tthis.fitWorld();\r\n\t\t}\r\n\r\n\t\t// @section Location events\r\n\t\t// @event locationerror: ErrorEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n\t\tthis.fire('locationerror', {\r\n\t\t\tcode: c,\r\n\t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n\t\t});\r\n\t},\r\n\r\n\t_handleGeolocationResponse: function (pos) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar lat = pos.coords.latitude,\r\n\t\t lng = pos.coords.longitude,\r\n\t\t latlng = new LatLng(lat, lng),\r\n\t\t bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n\t\t options = this._locateOptions;\r\n\r\n\t\tif (options.setView) {\r\n\t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n\t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tlatlng: latlng,\r\n\t\t\tbounds: bounds,\r\n\t\t\ttimestamp: pos.timestamp\r\n\t\t};\r\n\r\n\t\tfor (var i in pos.coords) {\r\n\t\t\tif (typeof pos.coords[i] === 'number') {\r\n\t\t\t\tdata[i] = pos.coords[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @event locationfound: LocationEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n\t\t// went successfully.\r\n\t\tthis.fire('locationfound', data);\r\n\t},\r\n\r\n\t// TODO Appropriate docs section?\r\n\t// @section Other Methods\r\n\t// @method addHandler(name: String, HandlerClass: Function): this\r\n\t// Adds a new `Handler` to the map, given its name and constructor function.\r\n\taddHandler: function (name, HandlerClass) {\r\n\t\tif (!HandlerClass) { return this; }\r\n\r\n\t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n\t\tthis._handlers.push(handler);\r\n\r\n\t\tif (this.options[name]) {\r\n\t\t\thandler.enable();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove(): this\r\n\t// Destroys the map and clears all related event listeners.\r\n\tremove: function () {\r\n\r\n\t\tthis._initEvents(true);\r\n\t\tif (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); }\r\n\r\n\t\tif (this._containerId !== this._container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is being reused by another instance');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// throws error in IE6-8\r\n\t\t\tdelete this._container._leaflet_id;\r\n\t\t\tdelete this._containerId;\r\n\t\t} catch (e) {\r\n\t\t\t/*eslint-disable */\r\n\t\t\tthis._container._leaflet_id = undefined;\r\n\t\t\t/* eslint-enable */\r\n\t\t\tthis._containerId = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._locationWatchId !== undefined) {\r\n\t\t\tthis.stopLocate();\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tDomUtil.remove(this._mapPane);\r\n\r\n\t\tif (this._clearControlPos) {\r\n\t\t\tthis._clearControlPos();\r\n\t\t}\r\n\t\tif (this._resizeRequest) {\r\n\t\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\t\tthis._resizeRequest = null;\r\n\t\t}\r\n\r\n\t\tthis._clearHandlers();\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\t// @section Map state change events\r\n\t\t\t// @event unload: Event\r\n\t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n\t\t\tthis.fire('unload');\r\n\t\t}\r\n\r\n\t\tvar i;\r\n\t\tfor (i in this._layers) {\r\n\t\t\tthis._layers[i].remove();\r\n\t\t}\r\n\t\tfor (i in this._panes) {\r\n\t\t\tDomUtil.remove(this._panes[i]);\r\n\t\t}\r\n\r\n\t\tthis._layers = [];\r\n\t\tthis._panes = [];\r\n\t\tdelete this._mapPane;\r\n\t\tdelete this._renderer;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n\t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n\t// then returns it. The pane is created as a child of `container`, or\r\n\t// as a child of the main map pane if not set.\r\n\tcreatePane: function (name, container) {\r\n\t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n\t\t pane = DomUtil.create('div', className, container || this._mapPane);\r\n\r\n\t\tif (name) {\r\n\t\t\tthis._panes[name] = pane;\r\n\t\t}\r\n\t\treturn pane;\r\n\t},\r\n\r\n\t// @section Methods for Getting Map State\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the geographical center of the map view\r\n\tgetCenter: function () {\r\n\t\tthis._checkIfLoaded();\r\n\r\n\t\tif (this._lastCenter && !this._moved()) {\r\n\t\t\treturn this._lastCenter.clone();\r\n\t\t}\r\n\t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// @method getZoom(): Number\r\n\t// Returns the current zoom level of the map view\r\n\tgetZoom: function () {\r\n\t\treturn this._zoom;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the geographical bounds visible in the current map view\r\n\tgetBounds: function () {\r\n\t\tvar bounds = this.getPixelBounds(),\r\n\t\t sw = this.unproject(bounds.getBottomLeft()),\r\n\t\t ne = this.unproject(bounds.getTopRight());\r\n\r\n\t\treturn new LatLngBounds(sw, ne);\r\n\t},\r\n\r\n\t// @method getMinZoom(): Number\r\n\t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n\tgetMinZoom: function () {\r\n\t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n\t},\r\n\r\n\t// @method getMaxZoom(): Number\r\n\t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n\tgetMaxZoom: function () {\r\n\t\treturn this.options.maxZoom === undefined ?\r\n\t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n\t\t\tthis.options.maxZoom;\r\n\t},\r\n\r\n\t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n\t// Returns the maximum zoom level on which the given bounds fit to the map\r\n\t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n\t// instead returns the minimum zoom level on which the map view fits into\r\n\t// the given bounds in its entirety.\r\n\tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n\t\tvar zoom = this.getZoom() || 0,\r\n\t\t min = this.getMinZoom(),\r\n\t\t max = this.getMaxZoom(),\r\n\t\t nw = bounds.getNorthWest(),\r\n\t\t se = bounds.getSouthEast(),\r\n\t\t size = this.getSize().subtract(padding),\r\n\t\t boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n\t\t snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n\t\t scalex = size.x / boundsSize.x,\r\n\t\t scaley = size.y / boundsSize.y,\r\n\t\t scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n\t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n\t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n\t\t}\r\n\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the current size of the map container (in pixels).\r\n\tgetSize: function () {\r\n\t\tif (!this._size || this._sizeChanged) {\r\n\t\t\tthis._size = new Point(\r\n\t\t\t\tthis._container.clientWidth || 0,\r\n\t\t\t\tthis._container.clientHeight || 0);\r\n\r\n\t\t\tthis._sizeChanged = false;\r\n\t\t}\r\n\t\treturn this._size.clone();\r\n\t},\r\n\r\n\t// @method getPixelBounds(): Bounds\r\n\t// Returns the bounds of the current map view in projected pixel\r\n\t// coordinates (sometimes useful in layer and overlay implementations).\r\n\tgetPixelBounds: function (center, zoom) {\r\n\t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n\t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n\t},\r\n\r\n\t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n\t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n\t// since there can be negative offsets.\r\n\t// @method getPixelOrigin(): Point\r\n\t// Returns the projected pixel coordinates of the top left point of\r\n\t// the map layer (useful in custom layer and overlay implementations).\r\n\tgetPixelOrigin: function () {\r\n\t\tthis._checkIfLoaded();\r\n\t\treturn this._pixelOrigin;\r\n\t},\r\n\r\n\t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n\t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n\t// If `zoom` is omitted, the map's current zoom level is used.\r\n\tgetPixelWorldBounds: function (zoom) {\r\n\t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n\t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n\tgetPane: function (pane) {\r\n\t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n\t},\r\n\r\n\t// @method getPanes(): Object\r\n\t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n\t// the panes as values.\r\n\tgetPanes: function () {\r\n\t\treturn this._panes;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTML element that contains the map.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\r\n\t// @section Conversion Methods\r\n\r\n\t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n\t// Returns the scale factor to be applied to a map transition from zoom level\r\n\t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n\tgetZoomScale: function (toZoom, fromZoom) {\r\n\t\t// TODO replace with universal implementation after refactoring projections\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n\t},\r\n\r\n\t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n\t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n\t// level and everything is scaled by a factor of `scale`. Inverse of\r\n\t// [`getZoomScale`](#map-getZoomScale).\r\n\tgetScaleZoom: function (scale, fromZoom) {\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n\t\treturn isNaN(zoom) ? Infinity : zoom;\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng, zoom: Number): Point\r\n\t// Projects a geographical coordinate `LatLng` according to the projection\r\n\t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n\t// `Transformation`. The result is pixel coordinate relative to\r\n\t// the CRS origin.\r\n\tproject: function (latlng, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n\t},\r\n\r\n\t// @method unproject(point: Point, zoom: Number): LatLng\r\n\t// Inverse of [`project`](#map-project).\r\n\tunproject: function (point, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n\t},\r\n\r\n\t// @method layerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding geographical coordinate (for the current zoom level).\r\n\tlayerPointToLatLng: function (point) {\r\n\t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n\t\treturn this.unproject(projectedPoint);\r\n\t},\r\n\r\n\t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the [origin pixel](#map-getpixelorigin).\r\n\tlatLngToLayerPoint: function (latlng) {\r\n\t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n\t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n\t},\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n\t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n\t// CRS's bounds.\r\n\t// By default this means longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees.\r\n\twrapLatLng: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n\t// its center is within the CRS's bounds.\r\n\t// By default this means the center longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees, and the majority of the bounds\r\n\t// overlaps the CRS's bounds.\r\n\twrapLatLngBounds: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates according to\r\n\t// the map's CRS. By default this measures distance in meters.\r\n\tdistance: function (latlng1, latlng2) {\r\n\t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n\t},\r\n\r\n\t// @method containerPointToLayerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n\t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n\tcontainerPointToLayerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method layerPointToContainerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding pixel coordinate relative to the map container.\r\n\tlayerPointToContainerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).add(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method containerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the map container, returns\r\n\t// the corresponding geographical coordinate (for the current zoom level).\r\n\tcontainerPointToLatLng: function (point) {\r\n\t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n\t\treturn this.layerPointToLatLng(layerPoint);\r\n\t},\r\n\r\n\t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the map container.\r\n\tlatLngToContainerPoint: function (latlng) {\r\n\t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n\t},\r\n\r\n\t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n\t// map container where the event took place.\r\n\tmouseEventToContainerPoint: function (e) {\r\n\t\treturn DomEvent.getMousePosition(e, this._container);\r\n\t},\r\n\r\n\t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n\t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n\tmouseEventToLayerPoint: function (e) {\r\n\t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n\t},\r\n\r\n\t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n\t// Given a MouseEvent object, returns geographical coordinate where the\r\n\t// event took place.\r\n\tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n\t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n\t},\r\n\r\n\r\n\t// map initialization methods\r\n\r\n\t_initContainer: function (id) {\r\n\t\tvar container = this._container = DomUtil.get(id);\r\n\r\n\t\tif (!container) {\r\n\t\t\tthrow new Error('Map container not found.');\r\n\t\t} else if (container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is already initialized.');\r\n\t\t}\r\n\r\n\t\tDomEvent.on(container, 'scroll', this._onScroll, this);\r\n\t\tthis._containerId = Util.stamp(container);\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar container = this._container;\r\n\r\n\t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-container' +\r\n\t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n\t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n\t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n\t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n\t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n\t\tvar position = DomUtil.getStyle(container, 'position');\r\n\r\n\t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed') {\r\n\t\t\tcontainer.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis._initPanes();\r\n\r\n\t\tif (this._initControlPos) {\r\n\t\t\tthis._initControlPos();\r\n\t\t}\r\n\t},\r\n\r\n\t_initPanes: function () {\r\n\t\tvar panes = this._panes = {};\r\n\t\tthis._paneRenderers = {};\r\n\r\n\t\t// @section\r\n\t\t//\r\n\t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n\t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n\t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n\t\t// [`map.createPane`](#map-createpane) method.\r\n\t\t//\r\n\t\t// Every map has the following default panes that differ only in zIndex.\r\n\t\t//\r\n\t\t// @pane mapPane: HTMLElement = 'auto'\r\n\t\t// Pane that contains all other map panes\r\n\r\n\t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\t// @pane tilePane: HTMLElement = 200\r\n\t\t// Pane for `GridLayer`s and `TileLayer`s\r\n\t\tthis.createPane('tilePane');\r\n\t\t// @pane overlayPane: HTMLElement = 400\r\n\t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n\t\tthis.createPane('overlayPane');\r\n\t\t// @pane shadowPane: HTMLElement = 500\r\n\t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n\t\tthis.createPane('shadowPane');\r\n\t\t// @pane markerPane: HTMLElement = 600\r\n\t\t// Pane for `Icon`s of `Marker`s\r\n\t\tthis.createPane('markerPane');\r\n\t\t// @pane tooltipPane: HTMLElement = 650\r\n\t\t// Pane for `Tooltip`s.\r\n\t\tthis.createPane('tooltipPane');\r\n\t\t// @pane popupPane: HTMLElement = 700\r\n\t\t// Pane for `Popup`s.\r\n\t\tthis.createPane('popupPane');\r\n\r\n\t\tif (!this.options.markerZoomAnimation) {\r\n\t\t\tDomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\r\n\t\t\tDomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// private methods that modify map state\r\n\r\n\t// @section Map state change events\r\n\t_resetView: function (center, zoom, noMoveStart) {\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\tvar loading = !this._loaded;\r\n\t\tthis._loaded = true;\r\n\t\tzoom = this._limitZoom(zoom);\r\n\r\n\t\tthis.fire('viewprereset');\r\n\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\t\tthis\r\n\t\t\t._moveStart(zoomChanged, noMoveStart)\r\n\t\t\t._move(center, zoom)\r\n\t\t\t._moveEnd(zoomChanged);\r\n\r\n\t\t// @event viewreset: Event\r\n\t\t// Fired when the map needs to redraw its content (this usually happens\r\n\t\t// on map zoom or load). Very useful for creating custom overlays.\r\n\t\tthis.fire('viewreset');\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the map is initialized (when its center and zoom are set\r\n\t\t// for the first time).\r\n\t\tif (loading) {\r\n\t\t\tthis.fire('load');\r\n\t\t}\r\n\t},\r\n\r\n\t_moveStart: function (zoomChanged, noMoveStart) {\r\n\t\t// @event zoomstart: Event\r\n\t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n\t\t// @event movestart: Event\r\n\t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomstart');\r\n\t\t}\r\n\t\tif (!noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_move: function (center, zoom, data, supressEvent) {\r\n\t\tif (zoom === undefined) {\r\n\t\t\tzoom = this._zoom;\r\n\t\t}\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n\t\tthis._zoom = zoom;\r\n\t\tthis._lastCenter = center;\r\n\t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n\t\tif (!supressEvent) {\r\n\t\t\t// @event zoom: Event\r\n\t\t\t// Fired repeatedly during any change in zoom level,\r\n\t\t\t// including zoom and fly animations.\r\n\t\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\t\tthis.fire('zoom', data);\r\n\t\t\t}\r\n\r\n\t\t\t// @event move: Event\r\n\t\t\t// Fired repeatedly during any movement of the map,\r\n\t\t\t// including pan and fly animations.\r\n\t\t\tthis.fire('move', data);\r\n\t\t} else if (data && data.pinch) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\tthis.fire('zoom', data);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_moveEnd: function (zoomChanged) {\r\n\t\t// @event zoomend: Event\r\n\t\t// Fired when the map zoom changed, after any animations.\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomend');\r\n\t\t}\r\n\r\n\t\t// @event moveend: Event\r\n\t\t// Fired when the center of the map stops changing\r\n\t\t// (e.g. user stopped dragging the map or after non-centered zoom).\r\n\t\treturn this.fire('moveend');\r\n\t},\r\n\r\n\t_stop: function () {\r\n\t\tUtil.cancelAnimFrame(this._flyToFrame);\r\n\t\tif (this._panAnim) {\r\n\t\t\tthis._panAnim.stop();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_rawPanBy: function (offset) {\r\n\t\tDomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n\t},\r\n\r\n\t_getZoomSpan: function () {\r\n\t\treturn this.getMaxZoom() - this.getMinZoom();\r\n\t},\r\n\r\n\t_panInsideMaxBounds: function () {\r\n\t\tif (!this._enforcingBounds) {\r\n\t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n\t\t}\r\n\t},\r\n\r\n\t_checkIfLoaded: function () {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthrow new Error('Set map center and zoom first.');\r\n\t\t}\r\n\t},\r\n\r\n\t// DOM event handling\r\n\r\n\t// @section Interaction events\r\n\t_initEvents: function (remove) {\r\n\t\tthis._targets = {};\r\n\t\tthis._targets[Util.stamp(this._container)] = this;\r\n\r\n\t\tvar onOff = remove ? DomEvent.off : DomEvent.on;\r\n\r\n\t\t// @event click: MouseEvent\r\n\t\t// Fired when the user clicks (or taps) the map.\r\n\t\t// @event dblclick: MouseEvent\r\n\t\t// Fired when the user double-clicks (or double-taps) the map.\r\n\t\t// @event mousedown: MouseEvent\r\n\t\t// Fired when the user pushes the mouse button on the map.\r\n\t\t// @event mouseup: MouseEvent\r\n\t\t// Fired when the user releases the mouse button on the map.\r\n\t\t// @event mouseover: MouseEvent\r\n\t\t// Fired when the mouse enters the map.\r\n\t\t// @event mouseout: MouseEvent\r\n\t\t// Fired when the mouse leaves the map.\r\n\t\t// @event mousemove: MouseEvent\r\n\t\t// Fired while the mouse moves over the map.\r\n\t\t// @event contextmenu: MouseEvent\r\n\t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n\t\t// default browser context menu from showing if there are listeners on\r\n\t\t// this event. Also fired on mobile when the user holds a single touch\r\n\t\t// for a second (also called long press).\r\n\t\t// @event keypress: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n\t\t// @event keydown: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n\t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n\t\t// that do not produce a character value.\r\n\t\t// @event keyup: KeyboardEvent\r\n\t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n\t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n\t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n\t\tif (this.options.trackResize) {\r\n\t\t\tonOff(window, 'resize', this._onResize, this);\r\n\t\t}\r\n\r\n\t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n\t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n\t\t}\r\n\t},\r\n\r\n\t_onResize: function () {\r\n\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\tthis._resizeRequest = Util.requestAnimFrame(\r\n\t\t function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n\t},\r\n\r\n\t_onScroll: function () {\r\n\t\tthis._container.scrollTop = 0;\r\n\t\tthis._container.scrollLeft = 0;\r\n\t},\r\n\r\n\t_onMoveEnd: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n\t\t\t// a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/\r\n\t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n\t\t}\r\n\t},\r\n\r\n\t_findEventTargets: function (e, type) {\r\n\t\tvar targets = [],\r\n\t\t target,\r\n\t\t isHover = type === 'mouseout' || type === 'mouseover',\r\n\t\t src = e.target || e.srcElement,\r\n\t\t dragging = false;\r\n\r\n\t\twhile (src) {\r\n\t\t\ttarget = this._targets[Util.stamp(src)];\r\n\t\t\tif (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {\r\n\t\t\t\t// Prevent firing click after you just dragged an object.\r\n\t\t\t\tdragging = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (target && target.listens(type, true)) {\r\n\t\t\t\tif (isHover && !DomEvent.isExternalTarget(src, e)) { break; }\r\n\t\t\t\ttargets.push(target);\r\n\t\t\t\tif (isHover) { break; }\r\n\t\t\t}\r\n\t\t\tif (src === this._container) { break; }\r\n\t\t\tsrc = src.parentNode;\r\n\t\t}\r\n\t\tif (!targets.length && !dragging && !isHover && this.listens(type, true)) {\r\n\t\t\ttargets = [this];\r\n\t\t}\r\n\t\treturn targets;\r\n\t},\r\n\r\n\t_isClickDisabled: function (el) {\r\n\t\twhile (el && el !== this._container) {\r\n\t\t\tif (el['_leaflet_disable_click']) { return true; }\r\n\t\t\tel = el.parentNode;\r\n\t\t}\r\n\t},\r\n\r\n\t_handleDOMEvent: function (e) {\r\n\t\tvar el = (e.target || e.srcElement);\r\n\t\tif (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar type = e.type;\r\n\r\n\t\tif (type === 'mousedown') {\r\n\t\t\t// prevents outline when clicking on keyboard-focusable element\r\n\t\t\tDomUtil.preventOutline(el);\r\n\t\t}\r\n\r\n\t\tthis._fireDOMEvent(e, type);\r\n\t},\r\n\r\n\t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n\t_fireDOMEvent: function (e, type, canvasTargets) {\r\n\r\n\t\tif (e.type === 'click') {\r\n\t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n\t\t\t// @event preclick: MouseEvent\r\n\t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n\t\t\t// want something to happen on click before any existing click\r\n\t\t\t// handlers start running).\r\n\t\t\tvar synth = Util.extend({}, e);\r\n\t\t\tsynth.type = 'preclick';\r\n\t\t\tthis._fireDOMEvent(synth, synth.type, canvasTargets);\r\n\t\t}\r\n\r\n\t\t// Find the layer the event is propagating from and its parents.\r\n\t\tvar targets = this._findEventTargets(e, type);\r\n\r\n\t\tif (canvasTargets) {\r\n\t\t\tvar filtered = []; // pick only targets with listeners\r\n\t\t\tfor (var i = 0; i < canvasTargets.length; i++) {\r\n\t\t\t\tif (canvasTargets[i].listens(type, true)) {\r\n\t\t\t\t\tfiltered.push(canvasTargets[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttargets = filtered.concat(targets);\r\n\t\t}\r\n\r\n\t\tif (!targets.length) { return; }\r\n\r\n\t\tif (type === 'contextmenu') {\r\n\t\t\tDomEvent.preventDefault(e);\r\n\t\t}\r\n\r\n\t\tvar target = targets[0];\r\n\t\tvar data = {\r\n\t\t\toriginalEvent: e\r\n\t\t};\r\n\r\n\t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n\t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n\t\t\tdata.containerPoint = isMarker ?\r\n\t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n\t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n\t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < targets.length; i++) {\r\n\t\t\ttargets[i].fire(type, data, true);\r\n\t\t\tif (data.originalEvent._stopped ||\r\n\t\t\t\t(targets[i].options.bubblingMouseEvents === false && Util.indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n\t\t}\r\n\t},\r\n\r\n\t_draggableMoved: function (obj) {\r\n\t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n\t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n\t},\r\n\r\n\t_clearHandlers: function () {\r\n\t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n\t\t\tthis._handlers[i].disable();\r\n\t\t}\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method whenReady(fn: Function, context?: Object): this\r\n\t// Runs the given function `fn` when the map gets initialized with\r\n\t// a view (center and zoom) and at least one layer, or immediately\r\n\t// if it's already initialized, optionally passing a function context.\r\n\twhenReady: function (callback, context) {\r\n\t\tif (this._loaded) {\r\n\t\t\tcallback.call(context || this, {target: this});\r\n\t\t} else {\r\n\t\t\tthis.on('load', callback, context);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t// private methods for getting map state\r\n\r\n\t_getMapPanePos: function () {\r\n\t\treturn DomUtil.getPosition(this._mapPane) || new Point(0, 0);\r\n\t},\r\n\r\n\t_moved: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\treturn pos && !pos.equals([0, 0]);\r\n\t},\r\n\r\n\t_getTopLeftPoint: function (center, zoom) {\r\n\t\tvar pixelOrigin = center && zoom !== undefined ?\r\n\t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n\t\t\tthis.getPixelOrigin();\r\n\t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t_getNewPixelOrigin: function (center, zoom) {\r\n\t\tvar viewHalf = this.getSize()._divideBy(2);\r\n\t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n\t},\r\n\r\n\t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n\t},\r\n\r\n\t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn toBounds([\r\n\t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n\t\t]);\r\n\t},\r\n\r\n\t// layer point of the current center\r\n\t_getCenterLayerPoint: function () {\r\n\t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n\t},\r\n\r\n\t// offset of the specified place to the current center in pixels\r\n\t_getCenterOffset: function (latlng) {\r\n\t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// adjust center for view to get inside bounds\r\n\t_limitCenter: function (center, zoom, bounds) {\r\n\r\n\t\tif (!bounds) { return center; }\r\n\r\n\t\tvar centerPoint = this.project(center, zoom),\r\n\t\t viewHalf = this.getSize().divideBy(2),\r\n\t\t viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n\t\t offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n\t\t// If offset is less than a pixel, ignore.\r\n\t\t// This prevents unstable projections from getting into\r\n\t\t// an infinite loop of tiny offsets.\r\n\t\tif (offset.round().equals([0, 0])) {\r\n\t\t\treturn center;\r\n\t\t}\r\n\r\n\t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n\t},\r\n\r\n\t// adjust offset for view to get inside bounds\r\n\t_limitOffset: function (offset, bounds) {\r\n\t\tif (!bounds) { return offset; }\r\n\r\n\t\tvar viewBounds = this.getPixelBounds(),\r\n\t\t newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n\t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n\t},\r\n\r\n\t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n\t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n\t\tvar projectedMaxBounds = toBounds(\r\n\t\t this.project(maxBounds.getNorthEast(), zoom),\r\n\t\t this.project(maxBounds.getSouthWest(), zoom)\r\n\t\t ),\r\n\t\t minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n\t\t maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n\t\t dx = this._rebound(minOffset.x, -maxOffset.x),\r\n\t\t dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n\t\treturn new Point(dx, dy);\r\n\t},\r\n\r\n\t_rebound: function (left, right) {\r\n\t\treturn left + right > 0 ?\r\n\t\t\tMath.round(left - right) / 2 :\r\n\t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n\t},\r\n\r\n\t_limitZoom: function (zoom) {\r\n\t\tvar min = this.getMinZoom(),\r\n\t\t max = this.getMaxZoom(),\r\n\t\t snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / snap) * snap;\r\n\t\t}\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t_onPanTransitionStep: function () {\r\n\t\tthis.fire('move');\r\n\t},\r\n\r\n\t_onPanTransitionEnd: function () {\r\n\t\tDomUtil.removeClass(this._mapPane, 'leaflet-pan-anim');\r\n\t\tthis.fire('moveend');\r\n\t},\r\n\r\n\t_tryAnimatedPan: function (center, options) {\r\n\t\t// difference between the new and current centers in pixels\r\n\t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n\t\t// don't animate too far unless animate: true specified in options\r\n\t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tthis.panBy(offset, options);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_createAnimProxy: function () {\r\n\r\n\t\tvar proxy = this._proxy = DomUtil.create('div', 'leaflet-proxy leaflet-zoom-animated');\r\n\t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n\t\tthis.on('zoomanim', function (e) {\r\n\t\t\tvar prop = DomUtil.TRANSFORM,\r\n\t\t\t transform = this._proxy.style[prop];\r\n\r\n\t\t\tDomUtil.setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n\t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n\t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n\t\t\t\tthis._onZoomTransitionEnd();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n\t\tthis._on('unload', this._destroyAnimProxy, this);\r\n\t},\r\n\r\n\t_destroyAnimProxy: function () {\r\n\t\tDomUtil.remove(this._proxy);\r\n\t\tthis.off('load moveend', this._animMoveEnd, this);\r\n\t\tdelete this._proxy;\r\n\t},\r\n\r\n\t_animMoveEnd: function () {\r\n\t\tvar c = this.getCenter(),\r\n\t\t z = this.getZoom();\r\n\t\tDomUtil.setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n\t},\r\n\r\n\t_catchTransitionEnd: function (e) {\r\n\t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n\t\t\tthis._onZoomTransitionEnd();\r\n\t\t}\r\n\t},\r\n\r\n\t_nothingToAnimate: function () {\r\n\t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n\t},\r\n\r\n\t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n\t\tif (this._animatingZoom) { return true; }\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\t// don't animate if disabled, not supported or zoom difference is too large\r\n\t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n\t\t Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n\t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n\t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tUtil.requestAnimFrame(function () {\r\n\t\t\tthis\r\n\t\t\t ._moveStart(true, false)\r\n\t\t\t ._animateZoom(center, zoom, true);\r\n\t\t}, this);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n\t\tif (!this._mapPane) { return; }\r\n\r\n\t\tif (startAnim) {\r\n\t\t\tthis._animatingZoom = true;\r\n\r\n\t\t\t// remember what center/zoom to set after animation\r\n\t\t\tthis._animateToCenter = center;\r\n\t\t\tthis._animateToZoom = zoom;\r\n\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\t// @section Other Events\r\n\t\t// @event zoomanim: ZoomAnimEvent\r\n\t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n\t\tthis.fire('zoomanim', {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom,\r\n\t\t\tnoUpdate: noUpdate\r\n\t\t});\r\n\r\n\t\tif (!this._tempFireZoomEvent) {\r\n\t\t\tthis._tempFireZoomEvent = this._zoom !== this._animateToZoom;\r\n\t\t}\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n\t\tsetTimeout(Util.bind(this._onZoomTransitionEnd, this), 250);\r\n\t},\r\n\r\n\t_onZoomTransitionEnd: function () {\r\n\t\tif (!this._animatingZoom) { return; }\r\n\r\n\t\tif (this._mapPane) {\r\n\t\t\tDomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\tthis._animatingZoom = false;\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\tif (this._tempFireZoomEvent) {\r\n\t\t\tthis.fire('zoom');\r\n\t\t}\r\n\t\tdelete this._tempFireZoomEvent;\r\n\r\n\t\tthis.fire('move');\r\n\r\n\t\tthis._moveEnd(true);\r\n\t}\r\n});\r\n\r\n// @section\r\n\r\n// @factory L.map(id: String, options?: Map options)\r\n// Instantiates a map object given the DOM ID of a `<div>` element\r\n// and optionally an object literal with `Map options`.\r\n//\r\n// @alternative\r\n// @factory L.map(el: HTMLElement, options?: Map options)\r\n// Instantiates a map object given an instance of a `<div>` HTML element\r\n// and optionally an object literal with `Map options`.\r\nexport function createMap(id, options) {\r\n\treturn new Map(id, options);\r\n}\r\n","\r\nimport {Class} from '../core/Class';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\nexport var Control = Class.extend({\r\n\t// @section\r\n\t// @aka Control Options\r\n\toptions: {\r\n\t\t// @option position: String = 'topright'\r\n\t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n\t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n\t\tposition: 'topright'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\t/* @section\r\n\t * Classes extending L.Control will inherit the following methods:\r\n\t *\r\n\t * @method getPosition: string\r\n\t * Returns the position of the control.\r\n\t */\r\n\tgetPosition: function () {\r\n\t\treturn this.options.position;\r\n\t},\r\n\r\n\t// @method setPosition(position: string): this\r\n\t// Sets the position of the control.\r\n\tsetPosition: function (position) {\r\n\t\tvar map = this._map;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.removeControl(this);\r\n\t\t}\r\n\r\n\t\tthis.options.position = position;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.addControl(this);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTMLElement that contains the control.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method addTo(map: Map): this\r\n\t// Adds the control to the given map.\r\n\taddTo: function (map) {\r\n\t\tthis.remove();\r\n\t\tthis._map = map;\r\n\r\n\t\tvar container = this._container = this.onAdd(map),\r\n\t\t pos = this.getPosition(),\r\n\t\t corner = map._controlCorners[pos];\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-control');\r\n\r\n\t\tif (pos.indexOf('bottom') !== -1) {\r\n\t\t\tcorner.insertBefore(container, corner.firstChild);\r\n\t\t} else {\r\n\t\t\tcorner.appendChild(container);\r\n\t\t}\r\n\r\n\t\tthis._map.on('unload', this.remove, this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove: this\r\n\t// Removes the control from the map it is currently active on.\r\n\tremove: function () {\r\n\t\tif (!this._map) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._container);\r\n\r\n\t\tif (this.onRemove) {\r\n\t\t\tthis.onRemove(this._map);\r\n\t\t}\r\n\r\n\t\tthis._map.off('unload', this.remove, this);\r\n\t\tthis._map = null;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_refocusOnMap: function (e) {\r\n\t\t// if map exists and event is not a keyboard event\r\n\t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n\t\t\tthis._map.getContainer().focus();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport var control = function (options) {\r\n\treturn new Control(options);\r\n};\r\n\r\n/* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n/* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\nMap.include({\r\n\t// @method addControl(control: Control): this\r\n\t// Adds the given control to the map\r\n\taddControl: function (control) {\r\n\t\tcontrol.addTo(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeControl(control: Control): this\r\n\t// Removes the given control from the map\r\n\tremoveControl: function (control) {\r\n\t\tcontrol.remove();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initControlPos: function () {\r\n\t\tvar corners = this._controlCorners = {},\r\n\t\t l = 'leaflet-',\r\n\t\t container = this._controlContainer =\r\n\t\t DomUtil.create('div', l + 'control-container', this._container);\r\n\r\n\t\tfunction createCorner(vSide, hSide) {\r\n\t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n\t\t\tcorners[vSide + hSide] = DomUtil.create('div', className, container);\r\n\t\t}\r\n\r\n\t\tcreateCorner('top', 'left');\r\n\t\tcreateCorner('top', 'right');\r\n\t\tcreateCorner('bottom', 'left');\r\n\t\tcreateCorner('bottom', 'right');\r\n\t},\r\n\r\n\t_clearControlPos: function () {\r\n\t\tfor (var i in this._controlCorners) {\r\n\t\t\tDomUtil.remove(this._controlCorners[i]);\r\n\t\t}\r\n\t\tDomUtil.remove(this._controlContainer);\r\n\t\tdelete this._controlCorners;\r\n\t\tdelete this._controlContainer;\r\n\t}\r\n});\r\n","\r\nimport {Control} from './Control';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n * \"<someName1>\": layer1,\r\n * \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\nexport var Layers = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Layers options\r\n\toptions: {\r\n\t\t// @option collapsed: Boolean = true\r\n\t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.\r\n\t\tcollapsed: true,\r\n\t\tposition: 'topright',\r\n\r\n\t\t// @option autoZIndex: Boolean = true\r\n\t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n\t\tautoZIndex: true,\r\n\r\n\t\t// @option hideSingleBase: Boolean = false\r\n\t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n\t\thideSingleBase: false,\r\n\r\n\t\t// @option sortLayers: Boolean = false\r\n\t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n\t\t// in which they were added to the control.\r\n\t\tsortLayers: false,\r\n\r\n\t\t// @option sortFunction: Function = *\r\n\t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n\t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n\t\t// The function receives both the `L.Layer` instances and their names, as in\r\n\t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n\t\t// By default, it sorts layers alphabetically by their name.\r\n\t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n\t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n\t\t}\r\n\t},\r\n\r\n\tinitialize: function (baseLayers, overlays, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tthis._layers = [];\r\n\t\tthis._lastZIndex = 0;\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tfor (var i in baseLayers) {\r\n\t\t\tthis._addLayer(baseLayers[i], i);\r\n\t\t}\r\n\r\n\t\tfor (i in overlays) {\r\n\t\t\tthis._addLayer(overlays[i], i, true);\r\n\t\t}\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._initLayout();\r\n\t\tthis._update();\r\n\r\n\t\tthis._map = map;\r\n\t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\taddTo: function (map) {\r\n\t\tControl.prototype.addTo.call(this, map);\r\n\t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n\t\treturn this._expandIfNotCollapsed();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addBaseLayer(layer: Layer, name: String): this\r\n\t// Adds a base layer (radio button entry) with the given name to the control.\r\n\taddBaseLayer: function (layer, name) {\r\n\t\tthis._addLayer(layer, name);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method addOverlay(layer: Layer, name: String): this\r\n\t// Adds an overlay (checkbox entry) with the given name to the control.\r\n\taddOverlay: function (layer, name) {\r\n\t\tthis._addLayer(layer, name, true);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Remove the given layer from the control.\r\n\tremoveLayer: function (layer) {\r\n\t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(layer));\r\n\t\tif (obj) {\r\n\t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n\t\t}\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method expand(): this\r\n\t// Expand the control container if collapsed.\r\n\texpand: function () {\r\n\t\tDomUtil.addClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\tthis._section.style.height = null;\r\n\t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n\t\tif (acceptableHeight < this._section.clientHeight) {\r\n\t\t\tDomUtil.addClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t}\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method collapse(): this\r\n\t// Collapse the control container if expanded.\r\n\tcollapse: function () {\r\n\t\tDomUtil.removeClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar className = 'leaflet-control-layers',\r\n\t\t container = this._container = DomUtil.create('div', className),\r\n\t\t collapsed = this.options.collapsed;\r\n\r\n\t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n\t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(container);\r\n\r\n\t\tvar section = this._section = DomUtil.create('section', className + '-list');\r\n\r\n\t\tif (collapsed) {\r\n\t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n\t\t\tDomEvent.on(container, {\r\n\t\t\t\tmouseenter: function () {\r\n\t\t\t\t\tDomEvent.on(section, 'click', DomEvent.preventDefault);\r\n\t\t\t\t\tthis.expand();\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tDomEvent.off(section, 'click', DomEvent.preventDefault);\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tmouseleave: this.collapse\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\tvar link = this._layersLink = DomUtil.create('a', className + '-toggle', container);\r\n\t\tlink.href = '#';\r\n\t\tlink.title = 'Layers';\r\n\t\tlink.setAttribute('role', 'button');\r\n\r\n\t\tDomEvent.on(link, 'click', DomEvent.preventDefault); // prevent link function\r\n\t\tDomEvent.on(link, 'focus', this.expand, this);\r\n\r\n\t\tif (!collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tthis._baseLayersList = DomUtil.create('div', className + '-base', section);\r\n\t\tthis._separator = DomUtil.create('div', className + '-separator', section);\r\n\t\tthis._overlaysList = DomUtil.create('div', className + '-overlays', section);\r\n\r\n\t\tcontainer.appendChild(section);\r\n\t},\r\n\r\n\t_getLayer: function (id) {\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n\t\t\tif (this._layers[i] && Util.stamp(this._layers[i].layer) === id) {\r\n\t\t\t\treturn this._layers[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_addLayer: function (layer, name, overlay) {\r\n\t\tif (this._map) {\r\n\t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\tthis._layers.push({\r\n\t\t\tlayer: layer,\r\n\t\t\tname: name,\r\n\t\t\toverlay: overlay\r\n\t\t});\r\n\r\n\t\tif (this.options.sortLayers) {\r\n\t\t\tthis._layers.sort(Util.bind(function (a, b) {\r\n\t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n\t\t\tthis._lastZIndex++;\r\n\t\t\tlayer.setZIndex(this._lastZIndex);\r\n\t\t}\r\n\r\n\t\tthis._expandIfNotCollapsed();\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._container) { return this; }\r\n\r\n\t\tDomUtil.empty(this._baseLayersList);\r\n\t\tDomUtil.empty(this._overlaysList);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n\t\tfor (i = 0; i < this._layers.length; i++) {\r\n\t\t\tobj = this._layers[i];\r\n\t\t\tthis._addItem(obj);\r\n\t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n\t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n\t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n\t\t}\r\n\r\n\t\t// Hide base layers section if there's only one layer.\r\n\t\tif (this.options.hideSingleBase) {\r\n\t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n\t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n\t\t}\r\n\r\n\t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_onLayerChange: function (e) {\r\n\t\tif (!this._handlingClick) {\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(e.target));\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Layer events\r\n\t\t// @event baselayerchange: LayersControlEvent\r\n\t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n\t\t// @event overlayadd: LayersControlEvent\r\n\t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n\t\t// @event overlayremove: LayersControlEvent\r\n\t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n\t\t// @namespace Control.Layers\r\n\t\tvar type = obj.overlay ?\r\n\t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n\t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n\t\tif (type) {\r\n\t\t\tthis._map.fire(type, obj);\r\n\t\t}\r\n\t},\r\n\r\n\t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)\r\n\t_createRadioElement: function (name, checked) {\r\n\r\n\t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n\t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n\t\tvar radioFragment = document.createElement('div');\r\n\t\tradioFragment.innerHTML = radioHtml;\r\n\r\n\t\treturn radioFragment.firstChild;\r\n\t},\r\n\r\n\t_addItem: function (obj) {\r\n\t\tvar label = document.createElement('label'),\r\n\t\t checked = this._map.hasLayer(obj.layer),\r\n\t\t input;\r\n\r\n\t\tif (obj.overlay) {\r\n\t\t\tinput = document.createElement('input');\r\n\t\t\tinput.type = 'checkbox';\r\n\t\t\tinput.className = 'leaflet-control-layers-selector';\r\n\t\t\tinput.defaultChecked = checked;\r\n\t\t} else {\r\n\t\t\tinput = this._createRadioElement('leaflet-base-layers_' + Util.stamp(this), checked);\r\n\t\t}\r\n\r\n\t\tthis._layerControlInputs.push(input);\r\n\t\tinput.layerId = Util.stamp(obj.layer);\r\n\r\n\t\tDomEvent.on(input, 'click', this._onInputClick, this);\r\n\r\n\t\tvar name = document.createElement('span');\r\n\t\tname.innerHTML = ' ' + obj.name;\r\n\r\n\t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n\t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n\t\tvar holder = document.createElement('span');\r\n\r\n\t\tlabel.appendChild(holder);\r\n\t\tholder.appendChild(input);\r\n\t\tholder.appendChild(name);\r\n\r\n\t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n\t\tcontainer.appendChild(label);\r\n\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn label;\r\n\t},\r\n\r\n\t_onInputClick: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t input, layer;\r\n\t\tvar addedLayers = [],\r\n\t\t removedLayers = [];\r\n\r\n\t\tthis._handlingClick = true;\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n\t\t\tif (input.checked) {\r\n\t\t\t\taddedLayers.push(layer);\r\n\t\t\t} else if (!input.checked) {\r\n\t\t\t\tremovedLayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n\t\tfor (i = 0; i < removedLayers.length; i++) {\r\n\t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n\t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (i = 0; i < addedLayers.length; i++) {\r\n\t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n\t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tthis._refocusOnMap();\r\n\t},\r\n\r\n\t_checkDisabledLayers: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t input,\r\n\t\t layer,\r\n\t\t zoom = this._map.getZoom();\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n\t\t\t (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_expandIfNotCollapsed: function () {\r\n\t\tif (this._map && !this.options.collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n});\r\n\r\n\r\n// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\nexport var layers = function (baseLayers, overlays, options) {\r\n\treturn new Layers(baseLayers, overlays, options);\r\n};\r\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as DomEvent from '../dom/DomEvent';\r\n\r\n/*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\nexport var Zoom = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Zoom options\r\n\toptions: {\r\n\t\tposition: 'topleft',\r\n\r\n\t\t// @option zoomInText: String = '<span aria-hidden=\"true\">+</span>'\r\n\t\t// The text set on the 'zoom in' button.\r\n\t\tzoomInText: '<span aria-hidden=\"true\">+</span>',\r\n\r\n\t\t// @option zoomInTitle: String = 'Zoom in'\r\n\t\t// The title set on the 'zoom in' button.\r\n\t\tzoomInTitle: 'Zoom in',\r\n\r\n\t\t// @option zoomOutText: String = '<span aria-hidden=\"true\">−</span>'\r\n\t\t// The text set on the 'zoom out' button.\r\n\t\tzoomOutText: '<span aria-hidden=\"true\">−</span>',\r\n\r\n\t\t// @option zoomOutTitle: String = 'Zoom out'\r\n\t\t// The title set on the 'zoom out' button.\r\n\t\tzoomOutTitle: 'Zoom out'\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tvar zoomName = 'leaflet-control-zoom',\r\n\t\t container = DomUtil.create('div', zoomName + ' leaflet-bar'),\r\n\t\t options = this.options;\r\n\r\n\t\tthis._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle,\r\n\t\t zoomName + '-in', container, this._zoomIn);\r\n\t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n\t\t zoomName + '-out', container, this._zoomOut);\r\n\r\n\t\tthis._updateDisabled();\r\n\t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\t},\r\n\r\n\tdisable: function () {\r\n\t\tthis._disabled = true;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function () {\r\n\t\tthis._disabled = false;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_zoomIn: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n\t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_zoomOut: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n\t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_createButton: function (html, title, className, container, fn) {\r\n\t\tvar link = DomUtil.create('a', className, container);\r\n\t\tlink.innerHTML = html;\r\n\t\tlink.href = '#';\r\n\t\tlink.title = title;\r\n\r\n\t\t/*\r\n\t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n\t\t */\r\n\t\tlink.setAttribute('role', 'button');\r\n\t\tlink.setAttribute('aria-label', title);\r\n\r\n\t\tDomEvent.disableClickPropagation(link);\r\n\t\tDomEvent.on(link, 'click', DomEvent.stop);\r\n\t\tDomEvent.on(link, 'click', fn, this);\r\n\t\tDomEvent.on(link, 'click', this._refocusOnMap, this);\r\n\r\n\t\treturn link;\r\n\t},\r\n\r\n\t_updateDisabled: function () {\r\n\t\tvar map = this._map,\r\n\t\t className = 'leaflet-disabled';\r\n\r\n\t\tDomUtil.removeClass(this._zoomInButton, className);\r\n\t\tDomUtil.removeClass(this._zoomOutButton, className);\r\n\t\tthis._zoomInButton.setAttribute('aria-disabled', 'false');\r\n\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'false');\r\n\r\n\t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomOutButton, className);\r\n\t\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomInButton, className);\r\n\t\t\tthis._zoomInButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option zoomControl: Boolean = true\r\n// Whether a [zoom control](#control-zoom) is added to the map by default.\r\nMap.mergeOptions({\r\n\tzoomControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.zoomControl) {\r\n\t\t// @section Controls\r\n\t\t// @property zoomControl: Control.Zoom\r\n\t\t// The default zoom control (only available if the\r\n\t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n\t\tthis.zoomControl = new Zoom();\r\n\t\tthis.addControl(this.zoomControl);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Zoom\r\n// @factory L.control.zoom(options: Control.Zoom options)\r\n// Creates a zoom control\r\nexport var zoom = function (options) {\r\n\treturn new Zoom(options);\r\n};\r\n","\nimport {Control} from './Control';\nimport * as DomUtil from '../dom/DomUtil';\n\n/*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\nexport var Scale = Control.extend({\n\t// @section\n\t// @aka Control.Scale options\n\toptions: {\n\t\tposition: 'bottomleft',\n\n\t\t// @option maxWidth: Number = 100\n\t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n\t\tmaxWidth: 100,\n\n\t\t// @option metric: Boolean = True\n\t\t// Whether to show the metric scale line (m/km).\n\t\tmetric: true,\n\n\t\t// @option imperial: Boolean = True\n\t\t// Whether to show the imperial scale line (mi/ft).\n\t\timperial: true\n\n\t\t// @option updateWhenIdle: Boolean = false\n\t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n\t},\n\n\tonAdd: function (map) {\n\t\tvar className = 'leaflet-control-scale',\n\t\t container = DomUtil.create('div', className),\n\t\t options = this.options;\n\n\t\tthis._addScales(options, className + '-line', container);\n\n\t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t\tmap.whenReady(this._update, this);\n\n\t\treturn container;\n\t},\n\n\tonRemove: function (map) {\n\t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t},\n\n\t_addScales: function (options, className, container) {\n\t\tif (options.metric) {\n\t\t\tthis._mScale = DomUtil.create('div', className, container);\n\t\t}\n\t\tif (options.imperial) {\n\t\t\tthis._iScale = DomUtil.create('div', className, container);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tvar map = this._map,\n\t\t y = map.getSize().y / 2;\n\n\t\tvar maxMeters = map.distance(\n\t\t\tmap.containerPointToLatLng([0, y]),\n\t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n\t\tthis._updateScales(maxMeters);\n\t},\n\n\t_updateScales: function (maxMeters) {\n\t\tif (this.options.metric && maxMeters) {\n\t\t\tthis._updateMetric(maxMeters);\n\t\t}\n\t\tif (this.options.imperial && maxMeters) {\n\t\t\tthis._updateImperial(maxMeters);\n\t\t}\n\t},\n\n\t_updateMetric: function (maxMeters) {\n\t\tvar meters = this._getRoundNum(maxMeters),\n\t\t label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n\t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n\t},\n\n\t_updateImperial: function (maxMeters) {\n\t\tvar maxFeet = maxMeters * 3.2808399,\n\t\t maxMiles, miles, feet;\n\n\t\tif (maxFeet > 5280) {\n\t\t\tmaxMiles = maxFeet / 5280;\n\t\t\tmiles = this._getRoundNum(maxMiles);\n\t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n\t\t} else {\n\t\t\tfeet = this._getRoundNum(maxFeet);\n\t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n\t\t}\n\t},\n\n\t_updateScale: function (scale, text, ratio) {\n\t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n\t\tscale.innerHTML = text;\n\t},\n\n\t_getRoundNum: function (num) {\n\t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n\t\t d = num / pow10;\n\n\t\td = d >= 10 ? 10 :\n\t\t d >= 5 ? 5 :\n\t\t d >= 3 ? 3 :\n\t\t d >= 2 ? 2 : 1;\n\n\t\treturn pow10 * d;\n\t}\n});\n\n\n// @factory L.control.scale(options?: Control.Scale options)\n// Creates an scale control with the given options.\nexport var scale = function (options) {\n\treturn new Scale(options);\n};\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport Browser from '../core/Browser';\r\n\r\nvar ukrainianFlag = '<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" class=\"leaflet-attribution-flag\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg>';\r\n\r\n\r\n/*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\nexport var Attribution = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Attribution options\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\r\n\t\t// @option prefix: String|false = 'Leaflet'\r\n\t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._attributions = {};\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tmap.attributionControl = this;\r\n\t\tthis._container = DomUtil.create('div', 'leaflet-control-attribution');\r\n\t\tDomEvent.disableClickPropagation(this._container);\r\n\r\n\t\t// TODO ugly, refactor\r\n\t\tfor (var i in map._layers) {\r\n\t\t\tif (map._layers[i].getAttribution) {\r\n\t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._update();\r\n\r\n\t\tmap.on('layeradd', this._addAttribution, this);\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('layeradd', this._addAttribution, this);\r\n\t},\r\n\r\n\t_addAttribution: function (ev) {\r\n\t\tif (ev.layer.getAttribution) {\r\n\t\t\tthis.addAttribution(ev.layer.getAttribution());\r\n\t\t\tev.layer.once('remove', function () {\r\n\t\t\t\tthis.removeAttribution(ev.layer.getAttribution());\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setPrefix(prefix: String|false): this\r\n\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\tsetPrefix: function (prefix) {\r\n\t\tthis.options.prefix = prefix;\r\n\t\tthis._update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addAttribution(text: String): this\r\n\t// Adds an attribution text (e.g. `'© OpenStreetMap contributors'`).\r\n\taddAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (!this._attributions[text]) {\r\n\t\t\tthis._attributions[text] = 0;\r\n\t\t}\r\n\t\tthis._attributions[text]++;\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeAttribution(text: String): this\r\n\t// Removes an attribution text.\r\n\tremoveAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (this._attributions[text]) {\r\n\t\t\tthis._attributions[text]--;\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar attribs = [];\r\n\r\n\t\tfor (var i in this._attributions) {\r\n\t\t\tif (this._attributions[i]) {\r\n\t\t\t\tattribs.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar prefixAndAttribs = [];\r\n\r\n\t\tif (this.options.prefix) {\r\n\t\t\tprefixAndAttribs.push(this.options.prefix);\r\n\t\t}\r\n\t\tif (attribs.length) {\r\n\t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n\t\t}\r\n\r\n\t\tthis._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden=\"true\">|</span> ');\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option attributionControl: Boolean = true\r\n// Whether a [attribution control](#control-attribution) is added to the map by default.\r\nMap.mergeOptions({\r\n\tattributionControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.attributionControl) {\r\n\t\tnew Attribution().addTo(this);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Attribution\r\n// @factory L.control.attribution(options: Control.Attribution options)\r\n// Creates an attribution control.\r\nexport var attribution = function (options) {\r\n\treturn new Attribution(options);\r\n};\r\n","import {Control, control} from './Control';\nimport {Layers, layers} from './Control.Layers';\nimport {Zoom, zoom} from './Control.Zoom';\nimport {Scale, scale} from './Control.Scale';\nimport {Attribution, attribution} from './Control.Attribution';\n\nControl.Layers = Layers;\nControl.Zoom = Zoom;\nControl.Scale = Scale;\nControl.Attribution = Attribution;\n\ncontrol.layers = layers;\ncontrol.zoom = zoom;\ncontrol.scale = scale;\ncontrol.attribution = attribution;\n\nexport {Control, control};\n","import {Class} from './Class';\n\n/*\n\tL.Handler is a base class for handler classes that are used internally to inject\n\tinteraction features like dragging to classes like Map and Marker.\n*/\n\n// @class Handler\n// @aka L.Handler\n// Abstract class for map interaction handlers\n\nexport var Handler = Class.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t},\n\n\t// @method enable(): this\n\t// Enables the handler\n\tenable: function () {\n\t\tif (this._enabled) { return this; }\n\n\t\tthis._enabled = true;\n\t\tthis.addHooks();\n\t\treturn this;\n\t},\n\n\t// @method disable(): this\n\t// Disables the handler\n\tdisable: function () {\n\t\tif (!this._enabled) { return this; }\n\n\t\tthis._enabled = false;\n\t\tthis.removeHooks();\n\t\treturn this;\n\t},\n\n\t// @method enabled(): Boolean\n\t// Returns `true` if the handler is enabled\n\tenabled: function () {\n\t\treturn !!this._enabled;\n\t}\n\n\t// @section Extension methods\n\t// Classes inheriting from `Handler` must implement the two following methods:\n\t// @method addHooks()\n\t// Called when the handler is enabled, should add event hooks.\n\t// @method removeHooks()\n\t// Called when the handler is disabled, should remove the event hooks added previously.\n});\n\n// @section There is static function which can be called without instantiating L.Handler:\n// @function addTo(map: Map, name: String): this\n// Adds a new Handler to the given map with the given name.\nHandler.addTo = function (map, name) {\n\tmap.addHandler(name, this);\n\treturn this;\n};\n","import Browser from './Browser';\nexport {Browser};\n\nexport {Class} from './Class';\n\nimport {Evented} from './Events';\nimport {Events} from './Events';\nexport {Evented};\nexport var Mixin = {Events: Events};\n\nexport {Handler} from './Handler';\n\nimport * as Util from './Util';\nexport {Util};\nexport {extend, bind, stamp, setOptions} from './Util';\n","import {Point, toPoint} from './Point';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng} from '../geo/LatLng';\r\n\r\n\r\n/*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n// Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n// Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n// @function simplify(points: Point[], tolerance: Number): Point[]\r\n// Dramatically reduces the number of points in a polyline while retaining\r\n// its shape and returns a new array of simplified points, using the\r\n// [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).\r\n// Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n// each zoom level and also reducing visual noise. tolerance affects the amount of\r\n// simplification (lesser value means higher quality but slower and with more points).\r\n// Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).\r\nexport function simplify(points, tolerance) {\r\n\tif (!tolerance || !points.length) {\r\n\t\treturn points.slice();\r\n\t}\r\n\r\n\tvar sqTolerance = tolerance * tolerance;\r\n\r\n\t // stage 1: vertex reduction\r\n\t points = _reducePoints(points, sqTolerance);\r\n\r\n\t // stage 2: Douglas-Peucker simplification\r\n\t points = _simplifyDP(points, sqTolerance);\r\n\r\n\treturn points;\r\n}\r\n\r\n// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n// Returns the distance between point `p` and segment `p1` to `p2`.\r\nexport function pointToSegmentDistance(p, p1, p2) {\r\n\treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n}\r\n\r\n// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n// Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\nexport function closestPointOnSegment(p, p1, p2) {\r\n\treturn _sqClosestPointOnSegment(p, p1, p2);\r\n}\r\n\r\n// Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\r\nfunction _simplifyDP(points, sqTolerance) {\r\n\r\n\tvar len = points.length,\r\n\t ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n\t markers = new ArrayConstructor(len);\r\n\r\n\t markers[0] = markers[len - 1] = 1;\r\n\r\n\t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n\tvar i,\r\n\t newPoints = [];\r\n\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tif (markers[i]) {\r\n\t\t\tnewPoints.push(points[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn newPoints;\r\n}\r\n\r\nfunction _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n\tvar maxSqDist = 0,\r\n\tindex, i, sqDist;\r\n\r\n\tfor (i = first + 1; i <= last - 1; i++) {\r\n\t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n\t\tif (sqDist > maxSqDist) {\r\n\t\t\tindex = i;\r\n\t\t\tmaxSqDist = sqDist;\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxSqDist > sqTolerance) {\r\n\t\tmarkers[index] = 1;\r\n\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n\t}\r\n}\r\n\r\n// reduce points that are too close to each other to a single point\r\nfunction _reducePoints(points, sqTolerance) {\r\n\tvar reducedPoints = [points[0]];\r\n\r\n\tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n\t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n\t\t\treducedPoints.push(points[i]);\r\n\t\t\tprev = i;\r\n\t\t}\r\n\t}\r\n\tif (prev < len - 1) {\r\n\t\treducedPoints.push(points[len - 1]);\r\n\t}\r\n\treturn reducedPoints;\r\n}\r\n\r\nvar _lastCode;\r\n\r\n// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n// Clips the segment a to b by rectangular bounds with the\r\n// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n// (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n// points that are on the screen or near, increasing performance.\r\nexport function clipSegment(a, b, bounds, useLastCode, round) {\r\n\tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n\t codeB = _getBitCode(b, bounds),\r\n\r\n\t codeOut, p, newCode;\r\n\r\n\t // save 2nd code to avoid calculating it on the next segment\r\n\t _lastCode = codeB;\r\n\r\n\twhile (true) {\r\n\t\t// if a,b is inside the clip window (trivial accept)\r\n\t\tif (!(codeA | codeB)) {\r\n\t\t\treturn [a, b];\r\n\t\t}\r\n\r\n\t\t// if a,b is outside the clip window (trivial reject)\r\n\t\tif (codeA & codeB) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// other cases\r\n\t\tcodeOut = codeA || codeB;\r\n\t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n\t\tnewCode = _getBitCode(p, bounds);\r\n\r\n\t\tif (codeOut === codeA) {\r\n\t\t\ta = p;\r\n\t\t\tcodeA = newCode;\r\n\t\t} else {\r\n\t\t\tb = p;\r\n\t\t\tcodeB = newCode;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function _getEdgeIntersection(a, b, code, bounds, round) {\r\n\tvar dx = b.x - a.x,\r\n\t dy = b.y - a.y,\r\n\t min = bounds.min,\r\n\t max = bounds.max,\r\n\t x, y;\r\n\r\n\tif (code & 8) { // top\r\n\t\tx = a.x + dx * (max.y - a.y) / dy;\r\n\t\ty = max.y;\r\n\r\n\t} else if (code & 4) { // bottom\r\n\t\tx = a.x + dx * (min.y - a.y) / dy;\r\n\t\ty = min.y;\r\n\r\n\t} else if (code & 2) { // right\r\n\t\tx = max.x;\r\n\t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n\t} else if (code & 1) { // left\r\n\t\tx = min.x;\r\n\t\ty = a.y + dy * (min.x - a.x) / dx;\r\n\t}\r\n\r\n\treturn new Point(x, y, round);\r\n}\r\n\r\nexport function _getBitCode(p, bounds) {\r\n\tvar code = 0;\r\n\r\n\tif (p.x < bounds.min.x) { // left\r\n\t\tcode |= 1;\r\n\t} else if (p.x > bounds.max.x) { // right\r\n\t\tcode |= 2;\r\n\t}\r\n\r\n\tif (p.y < bounds.min.y) { // bottom\r\n\t\tcode |= 4;\r\n\t} else if (p.y > bounds.max.y) { // top\r\n\t\tcode |= 8;\r\n\t}\r\n\r\n\treturn code;\r\n}\r\n\r\n// square distance (to avoid unnecessary Math.sqrt calls)\r\nfunction _sqDist(p1, p2) {\r\n\tvar dx = p2.x - p1.x,\r\n\t dy = p2.y - p1.y;\r\n\treturn dx * dx + dy * dy;\r\n}\r\n\r\n// return closest point on segment or distance to that point\r\nexport function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n\tvar x = p1.x,\r\n\t y = p1.y,\r\n\t dx = p2.x - x,\r\n\t dy = p2.y - y,\r\n\t dot = dx * dx + dy * dy,\r\n\t t;\r\n\r\n\tif (dot > 0) {\r\n\t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n\t\tif (t > 1) {\r\n\t\t\tx = p2.x;\r\n\t\t\ty = p2.y;\r\n\t\t} else if (t > 0) {\r\n\t\t\tx += dx * t;\r\n\t\t\ty += dy * t;\r\n\t\t}\r\n\t}\r\n\r\n\tdx = p.x - x;\r\n\tdy = p.y - y;\r\n\r\n\treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n}\r\n\r\n\r\n// @function isFlat(latlngs: LatLng[]): Boolean\r\n// Returns true if `latlngs` is a flat array, false is nested.\r\nexport function isFlat(latlngs) {\r\n\treturn !Util.isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n}\r\n\r\nexport function _flat(latlngs) {\r\n\tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n\treturn isFlat(latlngs);\r\n}\r\n\r\n/* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.\r\n */\r\nexport function polylineCenter(latlngs, crs) {\r\n\tvar i, halfDist, segDist, dist, p1, p2, ratio, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar points = [];\r\n\tfor (var j in latlngs) {\r\n\t\tpoints.push(crs.project(toLatLng(latlngs[j])));\r\n\t}\r\n\r\n\tvar len = points.length;\r\n\r\n\tfor (i = 0, halfDist = 0; i < len - 1; i++) {\r\n\t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\r\n\t}\r\n\r\n\t// The line is so small in the current view that all points are on the same pixel.\r\n\tif (halfDist === 0) {\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tfor (i = 0, dist = 0; i < len - 1; i++) {\r\n\t\t\tp1 = points[i];\r\n\t\t\tp2 = points[i + 1];\r\n\t\t\tsegDist = p1.distanceTo(p2);\r\n\t\t\tdist += segDist;\r\n\r\n\t\t\tif (dist > halfDist) {\r\n\t\t\t\tratio = (dist - halfDist) / segDist;\r\n\t\t\t\tcenter = [\r\n\t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\r\n\t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\r\n\t\t\t\t];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn crs.unproject(toPoint(center));\r\n}\r\n","import {Evented} from '../core/Events';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from './DomEvent';\r\nimport * as DomUtil from './DomUtil';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\n\r\n/*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\nvar START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\n\r\nexport var Draggable = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section\r\n\t\t// @aka Draggable options\r\n\t\t// @option clickTolerance: Number = 3\r\n\t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n\t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n\t\tclickTolerance: 3\r\n\t},\r\n\r\n\t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n\t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n\tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._dragStartTarget = dragStartTarget || element;\r\n\t\tthis._preventOutline = preventOutline;\r\n\t},\r\n\r\n\t// @method enable()\r\n\t// Enables the dragging ability\r\n\tenable: function () {\r\n\t\tif (this._enabled) { return; }\r\n\r\n\t\tDomEvent.on(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = true;\r\n\t},\r\n\r\n\t// @method disable()\r\n\t// Disables the dragging ability\r\n\tdisable: function () {\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\t// If we're currently dragging this draggable,\r\n\t\t// disabling it counts as first ending the drag.\r\n\t\tif (Draggable._dragging === this) {\r\n\t\t\tthis.finishDrag(true);\r\n\t\t}\r\n\r\n\t\tDomEvent.off(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = false;\r\n\t\tthis._moved = false;\r\n\t},\r\n\r\n\t_onDown: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tthis._moved = false;\r\n\r\n\t\tif (DomUtil.hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length !== 1) {\r\n\t\t\t// Finish dragging to avoid conflict with touchZoom\r\n\t\t\tif (Draggable._dragging === this) {\r\n\t\t\t\tthis.finishDrag();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n\t\tDraggable._dragging = this; // Prevent dragging multiple objects at once.\r\n\r\n\t\tif (this._preventOutline) {\r\n\t\t\tDomUtil.preventOutline(this._element);\r\n\t\t}\r\n\r\n\t\tDomUtil.disableImageDrag();\r\n\t\tDomUtil.disableTextSelection();\r\n\r\n\t\tif (this._moving) { return; }\r\n\r\n\t\t// @event down: Event\r\n\t\t// Fired when a drag is about to start.\r\n\t\tthis.fire('down');\r\n\r\n\t\tvar first = e.touches ? e.touches[0] : e,\r\n\t\t sizedParent = DomUtil.getSizedParentNode(this._element);\r\n\r\n\t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n\t\tthis._startPos = DomUtil.getPosition(this._element);\r\n\r\n\t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n\t\tthis._parentScale = DomUtil.getScale(sizedParent);\r\n\r\n\t\tvar mouseevent = e.type === 'mousedown';\r\n\t\tDomEvent.on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);\r\n\t\tDomEvent.on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);\r\n\t},\r\n\r\n\t_onMove: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\tthis._moved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n\t\t offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n\t\tif (!offset.x && !offset.y) { return; }\r\n\t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n\t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n\t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n\t\t// and we can use the cached value for the scale.\r\n\t\toffset.x /= this._parentScale.x;\r\n\t\toffset.y /= this._parentScale.y;\r\n\r\n\t\tDomEvent.preventDefault(e);\r\n\r\n\t\tif (!this._moved) {\r\n\t\t\t// @event dragstart: Event\r\n\t\t\t// Fired when a drag starts\r\n\t\t\tthis.fire('dragstart');\r\n\r\n\t\t\tthis._moved = true;\r\n\r\n\t\t\tDomUtil.addClass(document.body, 'leaflet-dragging');\r\n\r\n\t\t\tthis._lastTarget = e.target || e.srcElement;\r\n\t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n\t\t\t// if necessary\r\n\t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n\t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n\t\t\t}\r\n\t\t\tDomUtil.addClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t}\r\n\r\n\t\tthis._newPos = this._startPos.add(offset);\r\n\t\tthis._moving = true;\r\n\r\n\t\tthis._lastEvent = e;\r\n\t\tthis._updatePosition();\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n\t\t// @event predrag: Event\r\n\t\t// Fired continuously during dragging *before* each corresponding\r\n\t\t// update of the element's position.\r\n\t\tthis.fire('predrag', e);\r\n\t\tDomUtil.setPosition(this._element, this._newPos);\r\n\r\n\t\t// @event drag: Event\r\n\t\t// Fired continuously during dragging.\r\n\t\tthis.fire('drag', e);\r\n\t},\r\n\r\n\t_onUp: function () {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\t\tthis.finishDrag();\r\n\t},\r\n\r\n\tfinishDrag: function (noInertia) {\r\n\t\tDomUtil.removeClass(document.body, 'leaflet-dragging');\r\n\r\n\t\tif (this._lastTarget) {\r\n\t\t\tDomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t\tthis._lastTarget = null;\r\n\t\t}\r\n\r\n\t\tDomEvent.off(document, 'mousemove touchmove', this._onMove, this);\r\n\t\tDomEvent.off(document, 'mouseup touchend touchcancel', this._onUp, this);\r\n\r\n\t\tDomUtil.enableImageDrag();\r\n\t\tDomUtil.enableTextSelection();\r\n\r\n\t\tif (this._moved && this._moving) {\r\n\r\n\t\t\t// @event dragend: DragEndEvent\r\n\t\t\t// Fired when the drag ends.\r\n\t\t\tthis.fire('dragend', {\r\n\t\t\t\tnoInertia: noInertia,\r\n\t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._moving = false;\r\n\t\tDraggable._dragging = false;\r\n\t}\r\n\r\n});\r\n","import * as LineUtil from './LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {toPoint} from './Point';\r\n/*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\nexport function clipPolygon(points, bounds, round) {\r\n\tvar clippedPoints,\r\n\t edges = [1, 4, 2, 8],\r\n\t i, j, k,\r\n\t a, b,\r\n\t len, edge, p;\r\n\r\n\tfor (i = 0, len = points.length; i < len; i++) {\r\n\t\tpoints[i]._code = LineUtil._getBitCode(points[i], bounds);\r\n\t}\r\n\r\n\t// for each edge (left, bottom, right, top)\r\n\tfor (k = 0; k < 4; k++) {\r\n\t\tedge = edges[k];\r\n\t\tclippedPoints = [];\r\n\r\n\t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n\t\t\ta = points[i];\r\n\t\t\tb = points[j];\r\n\r\n\t\t\t// if a is inside the clip window\r\n\t\t\tif (!(a._code & edge)) {\r\n\t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n\t\t\t\tif (b._code & edge) {\r\n\t\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\t\tclippedPoints.push(p);\r\n\t\t\t\t}\r\n\t\t\t\tclippedPoints.push(a);\r\n\r\n\t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n\t\t\t} else if (!(b._code & edge)) {\r\n\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\tclippedPoints.push(p);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpoints = clippedPoints;\r\n\t}\r\n\r\n\treturn points;\r\n}\r\n\r\n/* @function polygonCenter(latlngs: LatLng[] crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.\r\n */\r\nexport function polygonCenter(latlngs, crs) {\r\n\tvar i, j, p1, p2, f, area, x, y, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!LineUtil.isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar points = [];\r\n\tfor (var k in latlngs) {\r\n\t\tpoints.push(crs.project(toLatLng(latlngs[k])));\r\n\t}\r\n\r\n\tvar len = points.length;\r\n\tarea = x = y = 0;\r\n\r\n\t// polygon centroid algorithm;\r\n\tfor (i = 0, j = len - 1; i < len; j = i++) {\r\n\t\tp1 = points[i];\r\n\t\tp2 = points[j];\r\n\r\n\t\tf = p1.y * p2.x - p2.y * p1.x;\r\n\t\tx += (p1.x + p2.x) * f;\r\n\t\ty += (p1.y + p2.y) * f;\r\n\t\tarea += f * 3;\r\n\t}\r\n\r\n\tif (area === 0) {\r\n\t\t// Polygon is so small that all points are on same pixel.\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tcenter = [x / area, y / area];\r\n\t}\r\n\treturn crs.unproject(toPoint(center));\r\n}\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\nexport var LonLat = {\r\n\tproject: function (latlng) {\r\n\t\treturn new Point(latlng.lng, latlng.lat);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\treturn new LatLng(point.y, point.x);\r\n\t},\r\n\r\n\tbounds: new Bounds([-180, -90], [180, 90])\r\n};\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\nexport var Mercator = {\r\n\tR: 6378137,\r\n\tR_MINOR: 6356752.314245179,\r\n\r\n\tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t r = this.R,\r\n\t\t y = latlng.lat * d,\r\n\t\t tmp = this.R_MINOR / r,\r\n\t\t e = Math.sqrt(1 - tmp * tmp),\r\n\t\t con = e * Math.sin(y);\r\n\r\n\t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n\t\treturn new Point(latlng.lng * d * r, y);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI,\r\n\t\t r = this.R,\r\n\t\t tmp = this.R_MINOR / r,\r\n\t\t e = Math.sqrt(1 - tmp * tmp),\r\n\t\t ts = Math.exp(-point.y / r),\r\n\t\t phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n\t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n\t\t\tcon = e * Math.sin(phi);\r\n\t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n\t\t\tphi += dphi;\r\n\t\t}\r\n\r\n\t\treturn new LatLng(phi * d, point.x * d / r);\r\n\t}\r\n};\r\n","import {Earth} from './CRS.Earth';\r\nimport {Mercator} from '../projection/Projection.Mercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\nexport var EPSG3395 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3395',\r\n\tprojection: Mercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n","import {Earth} from './CRS.Earth';\r\nimport {LonLat} from '../projection/Projection.LonLat';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\nexport var EPSG4326 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:4326',\r\n\tprojection: LonLat,\r\n\ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n});\r\n","import {CRS} from './CRS';\nimport {LonLat} from '../projection/Projection.LonLat';\nimport {toTransformation} from '../../geometry/Transformation';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\nexport var Simple = Util.extend({}, CRS, {\n\tprojection: LonLat,\n\ttransformation: toTransformation(1, 0, -1, 0),\n\n\tscale: function (zoom) {\n\t\treturn Math.pow(2, zoom);\n\t},\n\n\tzoom: function (scale) {\n\t\treturn Math.log(scale) / Math.LN2;\n\t},\n\n\tdistance: function (latlng1, latlng2) {\n\t\tvar dx = latlng2.lng - latlng1.lng,\n\t\t dy = latlng2.lat - latlng1.lat;\n\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\n\tinfinite: true\n});\n","import {CRS} from './CRS';\nimport {Earth} from './CRS.Earth';\nimport {EPSG3395} from './CRS.EPSG3395';\nimport {EPSG3857, EPSG900913} from './CRS.EPSG3857';\nimport {EPSG4326} from './CRS.EPSG4326';\nimport {Simple} from './CRS.Simple';\n\nCRS.Earth = Earth;\nCRS.EPSG3395 = EPSG3395;\nCRS.EPSG3857 = EPSG3857;\nCRS.EPSG900913 = EPSG900913;\nCRS.EPSG4326 = EPSG4326;\nCRS.Simple = Simple;\n\nexport {CRS};\n","import {Evented} from '../core/Events';\nimport {Map} from '../map/Map';\nimport * as Util from '../core/Util';\n\n/*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\nexport var Layer = Evented.extend({\n\n\t// Classes extending `L.Layer` will inherit the following options:\n\toptions: {\n\t\t// @option pane: String = 'overlayPane'\n\t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n\t\tpane: 'overlayPane',\n\n\t\t// @option attribution: String = null\n\t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n\t\tattribution: null,\n\n\t\tbubblingMouseEvents: true\n\t},\n\n\t/* @section\n\t * Classes extending `L.Layer` will inherit the following methods:\n\t *\n\t * @method addTo(map: Map|LayerGroup): this\n\t * Adds the layer to the given map or layer group.\n\t */\n\taddTo: function (map) {\n\t\tmap.addLayer(this);\n\t\treturn this;\n\t},\n\n\t// @method remove: this\n\t// Removes the layer from the map it is currently active on.\n\tremove: function () {\n\t\treturn this.removeFrom(this._map || this._mapToAdd);\n\t},\n\n\t// @method removeFrom(map: Map): this\n\t// Removes the layer from the given map\n\t//\n\t// @alternative\n\t// @method removeFrom(group: LayerGroup): this\n\t// Removes the layer from the given `LayerGroup`\n\tremoveFrom: function (obj) {\n\t\tif (obj) {\n\t\t\tobj.removeLayer(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getPane(name? : String): HTMLElement\n\t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n\tgetPane: function (name) {\n\t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n\t},\n\n\taddInteractiveTarget: function (targetEl) {\n\t\tthis._map._targets[Util.stamp(targetEl)] = this;\n\t\treturn this;\n\t},\n\n\tremoveInteractiveTarget: function (targetEl) {\n\t\tdelete this._map._targets[Util.stamp(targetEl)];\n\t\treturn this;\n\t},\n\n\t// @method getAttribution: String\n\t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n\tgetAttribution: function () {\n\t\treturn this.options.attribution;\n\t},\n\n\t_layerAdd: function (e) {\n\t\tvar map = e.target;\n\n\t\t// check in case layer gets added and then removed before the map is ready\n\t\tif (!map.hasLayer(this)) { return; }\n\n\t\tthis._map = map;\n\t\tthis._zoomAnimated = map._zoomAnimated;\n\n\t\tif (this.getEvents) {\n\t\t\tvar events = this.getEvents();\n\t\t\tmap.on(events, this);\n\t\t\tthis.once('remove', function () {\n\t\t\t\tmap.off(events, this);\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.onAdd(map);\n\n\t\tthis.fire('add');\n\t\tmap.fire('layeradd', {layer: this});\n\t}\n});\n\n/* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n/* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\nMap.include({\n\t// @method addLayer(layer: Layer): this\n\t// Adds the given layer to the map\n\taddLayer: function (layer) {\n\t\tif (!layer._layerAdd) {\n\t\t\tthrow new Error('The provided object is not a Layer.');\n\t\t}\n\n\t\tvar id = Util.stamp(layer);\n\t\tif (this._layers[id]) { return this; }\n\t\tthis._layers[id] = layer;\n\n\t\tlayer._mapToAdd = this;\n\n\t\tif (layer.beforeAdd) {\n\t\t\tlayer.beforeAdd(this);\n\t\t}\n\n\t\tthis.whenReady(layer._layerAdd, layer);\n\n\t\treturn this;\n\t},\n\n\t// @method removeLayer(layer: Layer): this\n\t// Removes the given layer from the map.\n\tremoveLayer: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (!this._layers[id]) { return this; }\n\n\t\tif (this._loaded) {\n\t\t\tlayer.onRemove(this);\n\t\t}\n\n\t\tdelete this._layers[id];\n\n\t\tif (this._loaded) {\n\t\t\tthis.fire('layerremove', {layer: layer});\n\t\t\tlayer.fire('remove');\n\t\t}\n\n\t\tlayer._map = layer._mapToAdd = null;\n\n\t\treturn this;\n\t},\n\n\t// @method hasLayer(layer: Layer): Boolean\n\t// Returns `true` if the given layer is currently added to the map\n\thasLayer: function (layer) {\n\t\treturn Util.stamp(layer) in this._layers;\n\t},\n\n\t/* @method eachLayer(fn: Function, context?: Object): this\n\t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n\t * ```\n\t * map.eachLayer(function(layer){\n\t * layer.bindPopup('Hello');\n\t * });\n\t * ```\n\t */\n\teachLayer: function (method, context) {\n\t\tfor (var i in this._layers) {\n\t\t\tmethod.call(context, this._layers[i]);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_addLayers: function (layers) {\n\t\tlayers = layers ? (Util.isArray(layers) ? layers : [layers]) : [];\n\n\t\tfor (var i = 0, len = layers.length; i < len; i++) {\n\t\t\tthis.addLayer(layers[i]);\n\t\t}\n\t},\n\n\t_addZoomLimit: function (layer) {\n\t\tif (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n\t\t\tthis._zoomBoundLayers[Util.stamp(layer)] = layer;\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_removeZoomLimit: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (this._zoomBoundLayers[id]) {\n\t\t\tdelete this._zoomBoundLayers[id];\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_updateZoomLevels: function () {\n\t\tvar minZoom = Infinity,\n\t\t maxZoom = -Infinity,\n\t\t oldZoomSpan = this._getZoomSpan();\n\n\t\tfor (var i in this._zoomBoundLayers) {\n\t\t\tvar options = this._zoomBoundLayers[i].options;\n\n\t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n\t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n\t\t}\n\n\t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n\t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n\t\t// @section Map state change events\n\t\t// @event zoomlevelschange: Event\n\t\t// Fired when the number of zoomlevels on the map is changed due\n\t\t// to adding or removing a layer.\n\t\tif (oldZoomSpan !== this._getZoomSpan()) {\n\t\t\tthis.fire('zoomlevelschange');\n\t\t}\n\n\t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n\t\t\tthis.setZoom(this._layersMaxZoom);\n\t\t}\n\t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n\t\t\tthis.setZoom(this._layersMinZoom);\n\t\t}\n\t}\n});\n","\r\nimport {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Interactive layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var LayerGroup = Layer.extend({\r\n\r\n\tinitialize: function (layers, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (layers) {\r\n\t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n\t\t\t\tthis.addLayer(layers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addLayer(layer: Layer): this\r\n\t// Adds the given layer to the group.\r\n\taddLayer: function (layer) {\r\n\t\tvar id = this.getLayerId(layer);\r\n\r\n\t\tthis._layers[id] = layer;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.addLayer(layer);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Removes the given layer from the group.\r\n\t// @alternative\r\n\t// @method removeLayer(id: Number): this\r\n\t// Removes the layer with the given internal ID from the group.\r\n\tremoveLayer: function (layer) {\r\n\t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n\t\tif (this._map && this._layers[id]) {\r\n\t\t\tthis._map.removeLayer(this._layers[id]);\r\n\t\t}\r\n\r\n\t\tdelete this._layers[id];\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method hasLayer(layer: Layer): Boolean\r\n\t// Returns `true` if the given layer is currently added to the group.\r\n\t// @alternative\r\n\t// @method hasLayer(id: Number): Boolean\r\n\t// Returns `true` if the given internal ID is currently added to the group.\r\n\thasLayer: function (layer) {\r\n\t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n\t\treturn layerId in this._layers;\r\n\t},\r\n\r\n\t// @method clearLayers(): this\r\n\t// Removes all the layers from the group.\r\n\tclearLayers: function () {\r\n\t\treturn this.eachLayer(this.removeLayer, this);\r\n\t},\r\n\r\n\t// @method invoke(methodName: String, …): this\r\n\t// Calls `methodName` on every layer contained in this group, passing any\r\n\t// additional parameters. Has no effect if the layers contained do not\r\n\t// implement `methodName`.\r\n\tinvoke: function (methodName) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n\t\t i, layer;\r\n\r\n\t\tfor (i in this._layers) {\r\n\t\t\tlayer = this._layers[i];\r\n\r\n\t\t\tif (layer[methodName]) {\r\n\t\t\t\tlayer[methodName].apply(layer, args);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis.eachLayer(map.addLayer, map);\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tthis.eachLayer(map.removeLayer, map);\r\n\t},\r\n\r\n\t// @method eachLayer(fn: Function, context?: Object): this\r\n\t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n\t// ```js\r\n\t// group.eachLayer(function (layer) {\r\n\t// \tlayer.bindPopup('Hello');\r\n\t// });\r\n\t// ```\r\n\teachLayer: function (method, context) {\r\n\t\tfor (var i in this._layers) {\r\n\t\t\tmethod.call(context, this._layers[i]);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getLayer(id: Number): Layer\r\n\t// Returns the layer with the given internal ID.\r\n\tgetLayer: function (id) {\r\n\t\treturn this._layers[id];\r\n\t},\r\n\r\n\t// @method getLayers(): Layer[]\r\n\t// Returns an array of all the layers added to the group.\r\n\tgetLayers: function () {\r\n\t\tvar layers = [];\r\n\t\tthis.eachLayer(layers.push, layers);\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t// @method setZIndex(zIndex: Number): this\r\n\t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n\tsetZIndex: function (zIndex) {\r\n\t\treturn this.invoke('setZIndex', zIndex);\r\n\t},\r\n\r\n\t// @method getLayerId(layer: Layer): Number\r\n\t// Returns the internal ID for a layer\r\n\tgetLayerId: function (layer) {\r\n\t\treturn Util.stamp(layer);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n// Create a layer group, optionally given an initial set of layers and an `options` object.\r\nexport var layerGroup = function (layers, options) {\r\n\treturn new LayerGroup(layers, options);\r\n};\r\n","import {LayerGroup} from './LayerGroup';\r\nimport {LatLngBounds} from '../geo/LatLngBounds';\r\n\r\n/*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n * * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n * * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var FeatureGroup = LayerGroup.extend({\r\n\r\n\taddLayer: function (layer) {\r\n\t\tif (this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlayer.addEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n\t\t// @event layeradd: LayerEvent\r\n\t\t// Fired when a layer is added to this `FeatureGroup`\r\n\t\treturn this.fire('layeradd', {layer: layer});\r\n\t},\r\n\r\n\tremoveLayer: function (layer) {\r\n\t\tif (!this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (layer in this._layers) {\r\n\t\t\tlayer = this._layers[layer];\r\n\t\t}\r\n\r\n\t\tlayer.removeEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n\t\t// @event layerremove: LayerEvent\r\n\t\t// Fired when a layer is removed from this `FeatureGroup`\r\n\t\treturn this.fire('layerremove', {layer: layer});\r\n\t},\r\n\r\n\t// @method setStyle(style: Path options): this\r\n\t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.invoke('setStyle', style);\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer group to the top of all other layers\r\n\tbringToFront: function () {\r\n\t\treturn this.invoke('bringToFront');\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer group to the back of all other layers\r\n\tbringToBack: function () {\r\n\t\treturn this.invoke('bringToBack');\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n\tgetBounds: function () {\r\n\t\tvar bounds = new LatLngBounds();\r\n\r\n\t\tfor (var id in this._layers) {\r\n\t\t\tvar layer = this._layers[id];\r\n\t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n\t\t}\r\n\t\treturn bounds;\r\n\t}\r\n});\r\n\r\n// @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n// Create a feature group, optionally given an initial set of layers and an `options` object.\r\nexport var featureGroup = function (layers, options) {\r\n\treturn new FeatureGroup(layers, options);\r\n};\r\n","import {Class} from '../../core/Class';\r\nimport {setOptions} from '../../core/Util';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport Browser from '../../core/Browser';\r\n\r\n/*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n * iconUrl: 'my-icon.png',\r\n * iconRetinaUrl: 'my-icon@2x.png',\r\n * iconSize: [38, 95],\r\n * iconAnchor: [22, 94],\r\n * popupAnchor: [-3, -76],\r\n * shadowUrl: 'my-icon-shadow.png',\r\n * shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n * shadowSize: [68, 95],\r\n * shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\nexport var Icon = Class.extend({\r\n\r\n\t/* @section\r\n\t * @aka Icon options\r\n\t *\r\n\t * @option iconUrl: String = null\r\n\t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n\t *\r\n\t * @option iconRetinaUrl: String = null\r\n\t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n\t * script path). Used for Retina screen devices.\r\n\t *\r\n\t * @option iconSize: Point = null\r\n\t * Size of the icon image in pixels.\r\n\t *\r\n\t * @option iconAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n\t * will be aligned so that this point is at the marker's geographical location. Centered\r\n\t * by default if size is specified, also can be set in CSS with negative margins.\r\n\t *\r\n\t * @option popupAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option tooltipAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option shadowUrl: String = null\r\n\t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n\t *\r\n\t * @option shadowRetinaUrl: String = null\r\n\t *\r\n\t * @option shadowSize: Point = null\r\n\t * Size of the shadow image in pixels.\r\n\t *\r\n\t * @option shadowAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n\t * as iconAnchor if not specified).\r\n\t *\r\n\t * @option className: String = ''\r\n\t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n\t */\r\n\r\n\toptions: {\r\n\t\tpopupAnchor: [0, 0],\r\n\t\ttooltipAnchor: [0, 0],\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n\t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n\t// styled according to the options.\r\n\tcreateIcon: function (oldIcon) {\r\n\t\treturn this._createIcon('icon', oldIcon);\r\n\t},\r\n\r\n\t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n\t// As `createIcon`, but for the shadow beneath it.\r\n\tcreateShadow: function (oldIcon) {\r\n\t\treturn this._createIcon('shadow', oldIcon);\r\n\t},\r\n\r\n\t_createIcon: function (name, oldIcon) {\r\n\t\tvar src = this._getIconUrl(name);\r\n\r\n\t\tif (!src) {\r\n\t\t\tif (name === 'icon') {\r\n\t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n\t\tthis._setIconStyles(img, name);\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_setIconStyles: function (img, name) {\r\n\t\tvar options = this.options;\r\n\t\tvar sizeOption = options[name + 'Size'];\r\n\r\n\t\tif (typeof sizeOption === 'number') {\r\n\t\t\tsizeOption = [sizeOption, sizeOption];\r\n\t\t}\r\n\r\n\t\tvar size = point(sizeOption),\r\n\t\t anchor = point(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n\t\t size && size.divideBy(2, true));\r\n\r\n\t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n\t\tif (anchor) {\r\n\t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n\t\t\timg.style.marginTop = (-anchor.y) + 'px';\r\n\t\t}\r\n\r\n\t\tif (size) {\r\n\t\t\timg.style.width = size.x + 'px';\r\n\t\t\timg.style.height = size.y + 'px';\r\n\t\t}\r\n\t},\r\n\r\n\t_createImg: function (src, el) {\r\n\t\tel = el || document.createElement('img');\r\n\t\tel.src = src;\r\n\t\treturn el;\r\n\t},\r\n\r\n\t_getIconUrl: function (name) {\r\n\t\treturn Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.icon(options: Icon options)\r\n// Creates an icon instance with the given options.\r\nexport function icon(options) {\r\n\treturn new Icon(options);\r\n}\r\n","import {Icon} from './Icon';\nimport * as DomUtil from '../../dom/DomUtil';\n\n/*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\nexport var IconDefault = Icon.extend({\n\n\toptions: {\n\t\ticonUrl: 'marker-icon.png',\n\t\ticonRetinaUrl: 'marker-icon-2x.png',\n\t\tshadowUrl: 'marker-shadow.png',\n\t\ticonSize: [25, 41],\n\t\ticonAnchor: [12, 41],\n\t\tpopupAnchor: [1, -34],\n\t\ttooltipAnchor: [16, -28],\n\t\tshadowSize: [41, 41]\n\t},\n\n\t_getIconUrl: function (name) {\n\t\tif (typeof IconDefault.imagePath !== 'string') {\t// Deprecated, backwards-compatibility only\n\t\t\tIconDefault.imagePath = this._detectIconPath();\n\t\t}\n\n\t\t// @option imagePath: String\n\t\t// `Icon.Default` will try to auto-detect the location of the\n\t\t// blue icon images. If you are placing these images in a non-standard\n\t\t// way, set this option to point to the right path.\n\t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n\t},\n\n\t_stripUrl: function (path) {\t// separate function to use in tests\n\t\tvar strip = function (str, re, idx) {\n\t\t\tvar match = re.exec(str);\n\t\t\treturn match && match[idx];\n\t\t};\n\t\tpath = strip(path, /^url\\((['\"])?(.+)\\1\\)$/, 2);\n\t\treturn path && strip(path, /^(.*)marker-icon\\.png$/, 1);\n\t},\n\n\t_detectIconPath: function () {\n\t\tvar el = DomUtil.create('div', 'leaflet-default-icon-path', document.body);\n\t\tvar path = DomUtil.getStyle(el, 'background-image') ||\n\t\t DomUtil.getStyle(el, 'backgroundImage');\t// IE8\n\n\t\tdocument.body.removeChild(el);\n\t\tpath = this._stripUrl(path);\n\t\tif (path) { return path; }\n\t\tvar link = document.querySelector('link[href$=\"leaflet.css\"]');\n\t\tif (!link) { return ''; }\n\t\treturn link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);\n\t}\n});\n","import {Handler} from '../../core/Handler';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Draggable} from '../../dom/Draggable';\nimport {toBounds} from '../../geometry/Bounds';\nimport {toPoint} from '../../geometry/Point';\nimport {requestAnimFrame, cancelAnimFrame} from '../../core/Util';\n\n/*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n/* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\nexport var MarkerDrag = Handler.extend({\n\tinitialize: function (marker) {\n\t\tthis._marker = marker;\n\t},\n\n\taddHooks: function () {\n\t\tvar icon = this._marker._icon;\n\n\t\tif (!this._draggable) {\n\t\t\tthis._draggable = new Draggable(icon, icon, true);\n\t\t}\n\n\t\tthis._draggable.on({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).enable();\n\n\t\tDomUtil.addClass(icon, 'leaflet-marker-draggable');\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._draggable.off({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).disable();\n\n\t\tif (this._marker._icon) {\n\t\t\tDomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable');\n\t\t}\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\t_adjustPan: function (e) {\n\t\tvar marker = this._marker,\n\t\t map = marker._map,\n\t\t speed = this._marker.options.autoPanSpeed,\n\t\t padding = this._marker.options.autoPanPadding,\n\t\t iconPos = DomUtil.getPosition(marker._icon),\n\t\t bounds = map.getPixelBounds(),\n\t\t origin = map.getPixelOrigin();\n\n\t\tvar panBounds = toBounds(\n\t\t\tbounds.min._subtract(origin).add(padding),\n\t\t\tbounds.max._subtract(origin).subtract(padding)\n\t\t);\n\n\t\tif (!panBounds.contains(iconPos)) {\n\t\t\t// Compute incremental movement\n\t\t\tvar movement = toPoint(\n\t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n\t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n\t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n\t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n\t\t\t).multiplyBy(speed);\n\n\t\t\tmap.panBy(movement, {animate: false});\n\n\t\t\tthis._draggable._newPos._add(movement);\n\t\t\tthis._draggable._startPos._add(movement);\n\n\t\t\tDomUtil.setPosition(marker._icon, this._draggable._newPos);\n\t\t\tthis._onDrag(e);\n\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDragStart: function () {\n\t\t// @section Dragging events\n\t\t// @event dragstart: Event\n\t\t// Fired when the user starts dragging the marker.\n\n\t\t// @event movestart: Event\n\t\t// Fired when the marker starts moving (because of dragging).\n\n\t\tthis._oldLatLng = this._marker.getLatLng();\n\n\t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n\t\tthis._marker.closePopup && this._marker.closePopup();\n\n\t\tthis._marker\n\t\t\t.fire('movestart')\n\t\t\t.fire('dragstart');\n\t},\n\n\t_onPreDrag: function (e) {\n\t\tif (this._marker.options.autoPan) {\n\t\t\tcancelAnimFrame(this._panRequest);\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tvar marker = this._marker,\n\t\t shadow = marker._shadow,\n\t\t iconPos = DomUtil.getPosition(marker._icon),\n\t\t latlng = marker._map.layerPointToLatLng(iconPos);\n\n\t\t// update shadow position\n\t\tif (shadow) {\n\t\t\tDomUtil.setPosition(shadow, iconPos);\n\t\t}\n\n\t\tmarker._latlng = latlng;\n\t\te.latlng = latlng;\n\t\te.oldLatLng = this._oldLatLng;\n\n\t\t// @event drag: Event\n\t\t// Fired repeatedly while the user drags the marker.\n\t\tmarker\n\t\t .fire('move', e)\n\t\t .fire('drag', e);\n\t},\n\n\t_onDragEnd: function (e) {\n\t\t// @event dragend: DragEndEvent\n\t\t// Fired when the user stops dragging the marker.\n\n\t\t cancelAnimFrame(this._panRequest);\n\n\t\t// @event moveend: Event\n\t\t// Fired when the marker stops moving (because of dragging).\n\t\tdelete this._oldLatLng;\n\t\tthis._marker\n\t\t .fire('moveend')\n\t\t .fire('dragend', e);\n\t}\n});\n","import {Layer} from '../Layer';\r\nimport {IconDefault} from './Icon.Default';\r\nimport * as Util from '../../core/Util';\r\nimport {toLatLng as latLng} from '../../geo/LatLng';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport {MarkerDrag} from './Marker.Drag';\r\n\r\n/*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var Marker = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka Marker options\r\n\toptions: {\r\n\t\t// @option icon: Icon = *\r\n\t\t// Icon instance to use for rendering the marker.\r\n\t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n\t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n\t\ticon: new IconDefault(),\r\n\r\n\t\t// Option inherited from \"Interactive layer\" abstract class\r\n\t\tinteractive: true,\r\n\r\n\t\t// @option keyboard: Boolean = true\r\n\t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n\t\tkeyboard: true,\r\n\r\n\t\t// @option title: String = ''\r\n\t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\ttitle: '',\r\n\r\n\t\t// @option alt: String = 'Marker'\r\n\t\t// Text for the `alt` attribute of the icon image.\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\talt: 'Marker',\r\n\r\n\t\t// @option zIndexOffset: Number = 0\r\n\t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n\t\tzIndexOffset: 0,\r\n\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the marker.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option riseOnHover: Boolean = false\r\n\t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n\t\triseOnHover: false,\r\n\r\n\t\t// @option riseOffset: Number = 250\r\n\t\t// The z-index offset used for the `riseOnHover` feature.\r\n\t\triseOffset: 250,\r\n\r\n\t\t// @option pane: String = 'markerPane'\r\n\t\t// `Map pane` where the markers icon will be added.\r\n\t\tpane: 'markerPane',\r\n\r\n\t\t// @option shadowPane: String = 'shadowPane'\r\n\t\t// `Map pane` where the markers shadow will be added.\r\n\t\tshadowPane: 'shadowPane',\r\n\r\n\t\t// @option bubblingMouseEvents: Boolean = false\r\n\t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n\t\tbubblingMouseEvents: false,\r\n\r\n\t\t// @option autoPanOnFocus: Boolean = true\r\n\t\t// When `true`, the map will pan whenever the marker is focused (via\r\n\t\t// e.g. pressing `tab` on the keyboard) to ensure the marker is\r\n\t\t// visible within the map's bounds\r\n\t\tautoPanOnFocus: true,\r\n\r\n\t\t// @section Draggable marker options\r\n\t\t// @option draggable: Boolean = false\r\n\t\t// Whether the marker is draggable with mouse/touch or not.\r\n\t\tdraggable: false,\r\n\r\n\t\t// @option autoPan: Boolean = false\r\n\t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n\t\tautoPan: false,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(50, 50)\r\n\t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n\t\t// map edge to start panning the map.\r\n\t\tautoPanPadding: [50, 50],\r\n\r\n\t\t// @option autoPanSpeed: Number = 10\r\n\t\t// Number of pixels the map should pan by.\r\n\t\tautoPanSpeed: 10\r\n\t},\r\n\r\n\t/* @section\r\n\t *\r\n\t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n\t */\r\n\r\n\tinitialize: function (latlng, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t\tthis._latlng = latLng(latlng);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._initIcon();\r\n\t\tthis.update();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (this.dragging && this.dragging.enabled()) {\r\n\t\t\tthis.options.draggable = true;\r\n\t\t\tthis.dragging.removeHooks();\r\n\t\t}\r\n\t\tdelete this.dragging;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._removeIcon();\r\n\t\tthis._removeShadow();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\treturn {\r\n\t\t\tzoom: this.update,\r\n\t\t\tviewreset: this.update\r\n\t\t};\r\n\t},\r\n\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the current geographical position of the marker.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Changes the marker position to the given point.\r\n\tsetLatLng: function (latlng) {\r\n\t\tvar oldLatLng = this._latlng;\r\n\t\tthis._latlng = latLng(latlng);\r\n\t\tthis.update();\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n\t},\r\n\r\n\t// @method setZIndexOffset(offset: Number): this\r\n\t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n\tsetZIndexOffset: function (offset) {\r\n\t\tthis.options.zIndexOffset = offset;\r\n\t\treturn this.update();\r\n\t},\r\n\r\n\t// @method getIcon: Icon\r\n\t// Returns the current icon used by the marker\r\n\tgetIcon: function () {\r\n\t\treturn this.options.icon;\r\n\t},\r\n\r\n\t// @method setIcon(icon: Icon): this\r\n\t// Changes the marker icon.\r\n\tsetIcon: function (icon) {\r\n\r\n\t\tthis.options.icon = icon;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._initIcon();\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\tif (this._popup) {\r\n\t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetElement: function () {\r\n\t\treturn this._icon;\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tif (this._icon && this._map) {\r\n\t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n\t\t\tthis._setPos(pos);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initIcon: function () {\r\n\t\tvar options = this.options,\r\n\t\t classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n\t\tvar icon = options.icon.createIcon(this._icon),\r\n\t\t addIcon = false;\r\n\r\n\t\t// if we're not reusing the icon, remove the old one and init new one\r\n\t\tif (icon !== this._icon) {\r\n\t\t\tif (this._icon) {\r\n\t\t\t\tthis._removeIcon();\r\n\t\t\t}\r\n\t\t\taddIcon = true;\r\n\r\n\t\t\tif (options.title) {\r\n\t\t\t\ticon.title = options.title;\r\n\t\t\t}\r\n\r\n\t\t\tif (icon.tagName === 'IMG') {\r\n\t\t\t\ticon.alt = options.alt || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tDomUtil.addClass(icon, classToAdd);\r\n\r\n\t\tif (options.keyboard) {\r\n\t\t\ticon.tabIndex = '0';\r\n\t\t\ticon.setAttribute('role', 'button');\r\n\t\t}\r\n\r\n\t\tthis._icon = icon;\r\n\r\n\t\tif (options.riseOnHover) {\r\n\t\t\tthis.on({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.on(icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n\t\t addShadow = false;\r\n\r\n\t\tif (newShadow !== this._shadow) {\r\n\t\t\tthis._removeShadow();\r\n\t\t\taddShadow = true;\r\n\t\t}\r\n\r\n\t\tif (newShadow) {\r\n\t\t\tDomUtil.addClass(newShadow, classToAdd);\r\n\t\t\tnewShadow.alt = '';\r\n\t\t}\r\n\t\tthis._shadow = newShadow;\r\n\r\n\r\n\t\tif (options.opacity < 1) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\r\n\t\tif (addIcon) {\r\n\t\t\tthis.getPane().appendChild(this._icon);\r\n\t\t}\r\n\t\tthis._initInteraction();\r\n\t\tif (newShadow && addShadow) {\r\n\t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeIcon: function () {\r\n\t\tif (this.options.riseOnHover) {\r\n\t\t\tthis.off({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.off(this._icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._icon);\r\n\t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n\t\tthis._icon = null;\r\n\t},\r\n\r\n\t_removeShadow: function () {\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.remove(this._shadow);\r\n\t\t}\r\n\t\tthis._shadow = null;\r\n\t},\r\n\r\n\t_setPos: function (pos) {\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setPosition(this._icon, pos);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setPosition(this._shadow, pos);\r\n\t\t}\r\n\r\n\t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n\t\tthis._resetZIndex();\r\n\t},\r\n\r\n\t_updateZIndex: function (offset) {\r\n\t\tif (this._icon) {\r\n\t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n\t\t}\r\n\t},\r\n\r\n\t_animateZoom: function (opt) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n\t\tthis._setPos(pos);\r\n\t},\r\n\r\n\t_initInteraction: function () {\r\n\r\n\t\tif (!this.options.interactive) { return; }\r\n\r\n\t\tDomUtil.addClass(this._icon, 'leaflet-interactive');\r\n\r\n\t\tthis.addInteractiveTarget(this._icon);\r\n\r\n\t\tif (MarkerDrag) {\r\n\t\t\tvar draggable = this.options.draggable;\r\n\t\t\tif (this.dragging) {\r\n\t\t\t\tdraggable = this.dragging.enabled();\r\n\t\t\t\tthis.dragging.disable();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n\t\t\tif (draggable) {\r\n\t\t\t\tthis.dragging.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Changes the opacity of the marker.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\t\tif (this._map) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tvar opacity = this.options.opacity;\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setOpacity(this._icon, opacity);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setOpacity(this._shadow, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t_bringToFront: function () {\r\n\t\tthis._updateZIndex(this.options.riseOffset);\r\n\t},\r\n\r\n\t_resetZIndex: function () {\r\n\t\tthis._updateZIndex(0);\r\n\t},\r\n\r\n\t_panOnFocus: function () {\r\n\t\tvar map = this._map;\r\n\t\tif (!map) { return; }\r\n\r\n\t\tvar iconOpts = this.options.icon.options;\r\n\t\tvar size = iconOpts.iconSize ? point(iconOpts.iconSize) : point(0, 0);\r\n\t\tvar anchor = iconOpts.iconAnchor ? point(iconOpts.iconAnchor) : point(0, 0);\r\n\r\n\t\tmap.panInside(this._latlng, {\r\n\t\t\tpaddingTopLeft: anchor,\r\n\t\t\tpaddingBottomRight: size.subtract(anchor)\r\n\t\t});\r\n\t},\r\n\r\n\t_getPopupAnchor: function () {\r\n\t\treturn this.options.icon.options.popupAnchor;\r\n\t},\r\n\r\n\t_getTooltipAnchor: function () {\r\n\t\treturn this.options.icon.options.tooltipAnchor;\r\n\t}\r\n});\r\n\r\n\r\n// factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n// @factory L.marker(latlng: LatLng, options? : Marker options)\r\n// Instantiates a Marker object given a geographical point and optionally an options object.\r\nexport function marker(latlng, options) {\r\n\treturn new Marker(latlng, options);\r\n}\r\n","import {Layer} from '../Layer';\nimport * as Util from '../../core/Util';\n\n/*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\nexport var Path = Layer.extend({\n\n\t// @section\n\t// @aka Path options\n\toptions: {\n\t\t// @option stroke: Boolean = true\n\t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n\t\tstroke: true,\n\n\t\t// @option color: String = '#3388ff'\n\t\t// Stroke color\n\t\tcolor: '#3388ff',\n\n\t\t// @option weight: Number = 3\n\t\t// Stroke width in pixels\n\t\tweight: 3,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Stroke opacity\n\t\topacity: 1,\n\n\t\t// @option lineCap: String= 'round'\n\t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n\t\tlineCap: 'round',\n\n\t\t// @option lineJoin: String = 'round'\n\t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n\t\tlineJoin: 'round',\n\n\t\t// @option dashArray: String = null\n\t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashArray: null,\n\n\t\t// @option dashOffset: String = null\n\t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashOffset: null,\n\n\t\t// @option fill: Boolean = depends\n\t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n\t\tfill: false,\n\n\t\t// @option fillColor: String = *\n\t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n\t\tfillColor: null,\n\n\t\t// @option fillOpacity: Number = 0.2\n\t\t// Fill opacity.\n\t\tfillOpacity: 0.2,\n\n\t\t// @option fillRule: String = 'evenodd'\n\t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n\t\tfillRule: 'evenodd',\n\n\t\t// className: '',\n\n\t\t// Option inherited from \"Interactive layer\" abstract class\n\t\tinteractive: true,\n\n\t\t// @option bubblingMouseEvents: Boolean = true\n\t\t// When `true`, a mouse event on this path will trigger the same event on the map\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n\t\tbubblingMouseEvents: true\n\t},\n\n\tbeforeAdd: function (map) {\n\t\t// Renderer is set here because we need to call renderer.getEvents\n\t\t// before this.getEvents.\n\t\tthis._renderer = map.getRenderer(this);\n\t},\n\n\tonAdd: function () {\n\t\tthis._renderer._initPath(this);\n\t\tthis._reset();\n\t\tthis._renderer._addPath(this);\n\t},\n\n\tonRemove: function () {\n\t\tthis._renderer._removePath(this);\n\t},\n\n\t// @method redraw(): this\n\t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._renderer._updatePath(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method setStyle(style: Path options): this\n\t// Changes the appearance of a Path based on the options in the `Path options` object.\n\tsetStyle: function (style) {\n\t\tUtil.setOptions(this, style);\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._updateStyle(this);\n\t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n\t\t\t\tthis._updateBounds();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToFront(): this\n\t// Brings the layer to the top of all path layers.\n\tbringToFront: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToFront(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack(): this\n\t// Brings the layer to the bottom of all path layers.\n\tbringToBack: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToBack(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetElement: function () {\n\t\treturn this._path;\n\t},\n\n\t_reset: function () {\n\t\t// defined in child classes\n\t\tthis._project();\n\t\tthis._update();\n\t},\n\n\t_clickTolerance: function () {\n\t\t// used when doing hit detection for Canvas layers\n\t\treturn (this.options.stroke ? this.options.weight / 2 : 0) +\n\t\t (this._renderer.options.tolerance || 0);\n\t}\n});\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n/*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\nexport var CircleMarker = Path.extend({\n\n\t// @section\n\t// @aka CircleMarker options\n\toptions: {\n\t\tfill: true,\n\n\t\t// @option radius: Number = 10\n\t\t// Radius of the circle marker, in pixels\n\t\tradius: 10\n\t},\n\n\tinitialize: function (latlng, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis._radius = this.options.radius;\n\t},\n\n\t// @method setLatLng(latLng: LatLng): this\n\t// Sets the position of a circle marker to a new location.\n\tsetLatLng: function (latlng) {\n\t\tvar oldLatLng = this._latlng;\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis.redraw();\n\n\t\t// @event move: Event\n\t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n\t},\n\n\t// @method getLatLng(): LatLng\n\t// Returns the current geographical position of the circle marker\n\tgetLatLng: function () {\n\t\treturn this._latlng;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle marker. Units are in pixels.\n\tsetRadius: function (radius) {\n\t\tthis.options.radius = this._radius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of the circle\n\tgetRadius: function () {\n\t\treturn this._radius;\n\t},\n\n\tsetStyle : function (options) {\n\t\tvar radius = options && options.radius || this._radius;\n\t\tPath.prototype.setStyle.call(this, options);\n\t\tthis.setRadius(radius);\n\t\treturn this;\n\t},\n\n\t_project: function () {\n\t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._updateBounds();\n\t},\n\n\t_updateBounds: function () {\n\t\tvar r = this._radius,\n\t\t r2 = this._radiusY || r,\n\t\t w = this._clickTolerance(),\n\t\t p = [r + w, r2 + w];\n\t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n\t},\n\n\t_update: function () {\n\t\tif (this._map) {\n\t\t\tthis._updatePath();\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updateCircle(this);\n\t},\n\n\t_empty: function () {\n\t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n\t}\n});\n\n\n// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n// Instantiates a circle marker object given a geographical point, and an optional options object.\nexport function circleMarker(latlng, options) {\n\treturn new CircleMarker(latlng, options);\n}\n","import {CircleMarker} from './CircleMarker';\nimport {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Earth} from '../../geo/crs/CRS.Earth';\n\n\n/*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\nexport var Circle = CircleMarker.extend({\n\n\tinitialize: function (latlng, options, legacyOptions) {\n\t\tif (typeof options === 'number') {\n\t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n\t\t\toptions = Util.extend({}, legacyOptions, {radius: options});\n\t\t}\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\n\t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n\t\t// @section\n\t\t// @aka Circle options\n\t\t// @option radius: Number; Radius of the circle, in meters.\n\t\tthis._mRadius = this.options.radius;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle. Units are in meters.\n\tsetRadius: function (radius) {\n\t\tthis._mRadius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of a circle. Units are in meters.\n\tgetRadius: function () {\n\t\treturn this._mRadius;\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\tvar half = [this._radius, this._radiusY || this._radius];\n\n\t\treturn new LatLngBounds(\n\t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n\t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n\t},\n\n\tsetStyle: Path.prototype.setStyle,\n\n\t_project: function () {\n\n\t\tvar lng = this._latlng.lng,\n\t\t lat = this._latlng.lat,\n\t\t map = this._map,\n\t\t crs = map.options.crs;\n\n\t\tif (crs.distance === Earth.distance) {\n\t\t\tvar d = Math.PI / 180,\n\t\t\t latR = (this._mRadius / Earth.R) / d,\n\t\t\t top = map.project([lat + latR, lng]),\n\t\t\t bottom = map.project([lat - latR, lng]),\n\t\t\t p = top.add(bottom).divideBy(2),\n\t\t\t lat2 = map.unproject(p).lat,\n\t\t\t lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n\t\t\t (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n\t\t\tif (isNaN(lngR) || lngR === 0) {\n\t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n\t\t\t}\n\n\t\t\tthis._point = p.subtract(map.getPixelOrigin());\n\t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n\t\t\tthis._radiusY = p.y - top.y;\n\n\t\t} else {\n\t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n\t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n\t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n\t\t}\n\n\t\tthis._updateBounds();\n\t}\n});\n\n// @factory L.circle(latlng: LatLng, options?: Circle options)\n// Instantiates a circle object given a geographical point, and an options object\n// which contains the circle radius.\n// @alternative\n// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n// Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n// Do not use in new applications or plugins.\nexport function circle(latlng, options, legacyOptions) {\n\treturn new Circle(latlng, options, legacyOptions);\n}\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {LatLng, toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\nimport {Point} from '../../geometry/Point';\n\n/*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\nexport var Polyline = Path.extend({\n\n\t// @section\n\t// @aka Polyline options\n\toptions: {\n\t\t// @option smoothFactor: Number = 1.0\n\t\t// How much to simplify the polyline on each zoom level. More means\n\t\t// better performance and smoother look, and less means more accurate representation.\n\t\tsmoothFactor: 1.0,\n\n\t\t// @option noClip: Boolean = false\n\t\t// Disable polyline clipping.\n\t\tnoClip: false\n\t},\n\n\tinitialize: function (latlngs, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._setLatLngs(latlngs);\n\t},\n\n\t// @method getLatLngs(): LatLng[]\n\t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n\tgetLatLngs: function () {\n\t\treturn this._latlngs;\n\t},\n\n\t// @method setLatLngs(latlngs: LatLng[]): this\n\t// Replaces all the points in the polyline with the given array of geographical points.\n\tsetLatLngs: function (latlngs) {\n\t\tthis._setLatLngs(latlngs);\n\t\treturn this.redraw();\n\t},\n\n\t// @method isEmpty(): Boolean\n\t// Returns `true` if the Polyline has no LatLngs.\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length;\n\t},\n\n\t// @method closestLayerPoint(p: Point): Point\n\t// Returns the point closest to `p` on the Polyline.\n\tclosestLayerPoint: function (p) {\n\t\tvar minDistance = Infinity,\n\t\t minPoint = null,\n\t\t closest = LineUtil._sqClosestPointOnSegment,\n\t\t p1, p2;\n\n\t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n\t\t\tvar points = this._parts[j];\n\n\t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n\t\t\t\tp1 = points[i - 1];\n\t\t\t\tp2 = points[i];\n\n\t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n\t\t\t\tif (sqDist < minDistance) {\n\t\t\t\t\tminDistance = sqDist;\n\t\t\t\t\tminPoint = closest(p, p1, p2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minPoint) {\n\t\t\tminPoint.distance = Math.sqrt(minDistance);\n\t\t}\n\t\treturn minPoint;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn LineUtil.polylineCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\n\t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n\t// Adds a given point to the polyline. By default, adds to the first ring of\n\t// the polyline in case of a multi-polyline, but can be overridden by passing\n\t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n\taddLatLng: function (latlng, latlngs) {\n\t\tlatlngs = latlngs || this._defaultShape();\n\t\tlatlng = toLatLng(latlng);\n\t\tlatlngs.push(latlng);\n\t\tthis._bounds.extend(latlng);\n\t\treturn this.redraw();\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tthis._bounds = new LatLngBounds();\n\t\tthis._latlngs = this._convertLatLngs(latlngs);\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n\t},\n\n\t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = [],\n\t\t flat = LineUtil.isFlat(latlngs);\n\n\t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n\t\t\tif (flat) {\n\t\t\t\tresult[i] = toLatLng(latlngs[i]);\n\t\t\t\tthis._bounds.extend(result[i]);\n\t\t\t} else {\n\t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t_project: function () {\n\t\tvar pxBounds = new Bounds();\n\t\tthis._rings = [];\n\t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n\t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n\t\t\tthis._rawPxBounds = pxBounds;\n\t\t\tthis._updateBounds();\n\t\t}\n\t},\n\n\t_updateBounds: function () {\n\t\tvar w = this._clickTolerance(),\n\t\t p = new Point(w, w);\n\n\t\tif (!this._rawPxBounds) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._pxBounds = new Bounds([\n\t\t\tthis._rawPxBounds.min.subtract(p),\n\t\t\tthis._rawPxBounds.max.add(p)\n\t\t]);\n\t},\n\n\t// recursively turns latlngs into a set of rings with projected coordinates\n\t_projectLatlngs: function (latlngs, result, projectedBounds) {\n\t\tvar flat = latlngs[0] instanceof LatLng,\n\t\t len = latlngs.length,\n\t\t i, ring;\n\n\t\tif (flat) {\n\t\t\tring = [];\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n\t\t\t\tprojectedBounds.extend(ring[i]);\n\t\t\t}\n\t\t\tresult.push(ring);\n\t\t} else {\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n\t\t\t}\n\t\t}\n\t},\n\n\t// clip polyline by renderer bounds so that we have less to render for performance\n\t_clipPoints: function () {\n\t\tvar bounds = this._renderer._bounds;\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tvar parts = this._parts,\n\t\t i, j, k, len, len2, segment, points;\n\n\t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n\t\t\tpoints = this._rings[i];\n\n\t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n\t\t\t\tsegment = LineUtil.clipSegment(points[j], points[j + 1], bounds, j, true);\n\n\t\t\t\tif (!segment) { continue; }\n\n\t\t\t\tparts[k] = parts[k] || [];\n\t\t\t\tparts[k].push(segment[0]);\n\n\t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n\t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n\t\t\t\t\tparts[k].push(segment[1]);\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// simplify each clipped part of the polyline for performance\n\t_simplifyPoints: function () {\n\t\tvar parts = this._parts,\n\t\t tolerance = this.options.smoothFactor;\n\n\t\tfor (var i = 0, len = parts.length; i < len; i++) {\n\t\t\tparts[i] = LineUtil.simplify(parts[i], tolerance);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tif (!this._map) { return; }\n\n\t\tthis._clipPoints();\n\t\tthis._simplifyPoints();\n\t\tthis._updatePath();\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p, closed) {\n\t\tvar i, j, k, len, len2, part,\n\t\t w = this._clickTolerance();\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// hit detection for polylines\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tif (!closed && (j === 0)) { continue; }\n\n\t\t\t\tif (LineUtil.pointToSegmentDistance(p, part[k], part[j]) <= w) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\n// @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n// Instantiates a polyline object given an array of geographical points and\n// optionally an options object. You can create a `Polyline` object with\n// multiple separate lines (`MultiPolyline`) by passing an array of arrays\n// of geographic points.\nexport function polyline(latlngs, options) {\n\treturn new Polyline(latlngs, options);\n}\n\n// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\nPolyline._flat = LineUtil._flat;\n","import {Polyline} from './Polyline';\nimport {LatLng} from '../../geo/LatLng';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport * as PolyUtil from '../../geometry/PolyUtil';\n\n/*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n * [ // first polygon\n * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ],\n * [ // second polygon\n * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n * ]\n * ];\n * ```\n */\n\nexport var Polygon = Polyline.extend({\n\n\toptions: {\n\t\tfill: true\n\t},\n\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length || !this._latlngs[0].length;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn PolyUtil.polygonCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n\t\t len = result.length;\n\n\t\t// remove last point if it equals first one\n\t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n\t\t\tresult.pop();\n\t\t}\n\t\treturn result;\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n\t\tif (LineUtil.isFlat(this._latlngs)) {\n\t\t\tthis._latlngs = [this._latlngs];\n\t\t}\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n\t},\n\n\t_clipPoints: function () {\n\t\t// polygons need a different clipping algorithm so we redefine that\n\n\t\tvar bounds = this._renderer._bounds,\n\t\t w = this.options.weight,\n\t\t p = new Point(w, w);\n\n\t\t// increase clip padding by stroke width to avoid stroke on clip edges\n\t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n\t\t\tclipped = PolyUtil.clipPolygon(this._rings[i], bounds, true);\n\t\t\tif (clipped.length) {\n\t\t\t\tthis._parts.push(clipped);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this, true);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\tvar inside = false,\n\t\t part, p1, p2, i, j, k, len, len2;\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// ray casting algorithm for detecting if point is in polygon\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tp1 = part[j];\n\t\t\t\tp2 = part[k];\n\n\t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n\t\t\t\t\tinside = !inside;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// also check if it's on polygon stroke\n\t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n\t}\n\n});\n\n\n// @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\nexport function polygon(latlngs, options) {\n\treturn new Polygon(latlngs, options);\n}\n","import {LayerGroup} from './LayerGroup';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {Marker} from './marker/Marker';\r\nimport {Circle} from './vector/Circle';\r\nimport {CircleMarker} from './vector/CircleMarker';\r\nimport {Polyline} from './vector/Polyline';\r\nimport {Polygon} from './vector/Polygon';\r\nimport {LatLng} from '../geo/LatLng';\r\nimport * as LineUtil from '../geometry/LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\n\r\n\r\n/*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var GeoJSON = FeatureGroup.extend({\r\n\r\n\t/* @section\r\n\t * @aka GeoJSON options\r\n\t *\r\n\t * @option pointToLayer: Function = *\r\n\t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n\t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n\t * The default is to spawn a default `Marker`:\r\n\t * ```js\r\n\t * function(geoJsonPoint, latlng) {\r\n\t * \treturn L.marker(latlng);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option style: Function = *\r\n\t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n\t * called internally when data is added.\r\n\t * The default value is to not override any defaults:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn {}\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option onEachFeature: Function = *\r\n\t * A `Function` that will be called once for each created `Feature`, after it has\r\n\t * been created and styled. Useful for attaching events and popups to features.\r\n\t * The default is to do nothing with the newly created layers:\r\n\t * ```js\r\n\t * function (feature, layer) {}\r\n\t * ```\r\n\t *\r\n\t * @option filter: Function = *\r\n\t * A `Function` that will be used to decide whether to include a feature or not.\r\n\t * The default is to include all features:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn true;\r\n\t * }\r\n\t * ```\r\n\t * Note: dynamically changing the `filter` option will have effect only on newly\r\n\t * added data. It will _not_ re-evaluate already included features.\r\n\t *\r\n\t * @option coordsToLatLng: Function = *\r\n\t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n\t * The default is the `coordsToLatLng` static method.\r\n\t *\r\n\t * @option markersInheritOptions: Boolean = false\r\n\t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n\t */\r\n\r\n\tinitialize: function (geojson, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tif (geojson) {\r\n\t\t\tthis.addData(geojson);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addData( <GeoJSON> data ): this\r\n\t// Adds a GeoJSON object to the layer.\r\n\taddData: function (geojson) {\r\n\t\tvar features = Util.isArray(geojson) ? geojson : geojson.features,\r\n\t\t i, len, feature;\r\n\r\n\t\tif (features) {\r\n\t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t// only add this if geometry or geometries are set and not null\r\n\t\t\t\tfeature = features[i];\r\n\t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n\t\t\t\t\tthis.addData(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n\t\tvar layer = geometryToLayer(geojson, options);\r\n\t\tif (!layer) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tlayer.feature = asFeature(geojson);\r\n\r\n\t\tlayer.defaultOptions = layer.options;\r\n\t\tthis.resetStyle(layer);\r\n\r\n\t\tif (options.onEachFeature) {\r\n\t\t\toptions.onEachFeature(geojson, layer);\r\n\t\t}\r\n\r\n\t\treturn this.addLayer(layer);\r\n\t},\r\n\r\n\t// @method resetStyle( <Path> layer? ): this\r\n\t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n\t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n\tresetStyle: function (layer) {\r\n\t\tif (layer === undefined) {\r\n\t\t\treturn this.eachLayer(this.resetStyle, this);\r\n\t\t}\r\n\t\t// reset any custom styles\r\n\t\tlayer.options = Util.extend({}, layer.defaultOptions);\r\n\t\tthis._setLayerStyle(layer, this.options.style);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setStyle( <Function> style ): this\r\n\t// Changes styles of GeoJSON vector layers with the given style function.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.eachLayer(function (layer) {\r\n\t\t\tthis._setLayerStyle(layer, style);\r\n\t\t}, this);\r\n\t},\r\n\r\n\t_setLayerStyle: function (layer, style) {\r\n\t\tif (layer.setStyle) {\r\n\t\t\tif (typeof style === 'function') {\r\n\t\t\t\tstyle = style(layer.feature);\r\n\t\t\t}\r\n\t\t\tlayer.setStyle(style);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @section\r\n// There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n// Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// functions if provided as options.\r\nexport function geometryToLayer(geojson, options) {\r\n\r\n\tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n\t coords = geometry ? geometry.coordinates : null,\r\n\t layers = [],\r\n\t pointToLayer = options && options.pointToLayer,\r\n\t _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n\t latlng, latlngs, i, len;\r\n\r\n\tif (!coords && !geometry) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (geometry.type) {\r\n\tcase 'Point':\r\n\t\tlatlng = _coordsToLatLng(coords);\r\n\t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n\tcase 'MultiPoint':\r\n\t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n\t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n\t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'LineString':\r\n\tcase 'MultiLineString':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n\t\treturn new Polyline(latlngs, options);\r\n\r\n\tcase 'Polygon':\r\n\tcase 'MultiPolygon':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n\t\treturn new Polygon(latlngs, options);\r\n\r\n\tcase 'GeometryCollection':\r\n\t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n\t\t\tvar geoLayer = geometryToLayer({\r\n\t\t\t\tgeometry: geometry.geometries[i],\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tproperties: geojson.properties\r\n\t\t\t}, options);\r\n\r\n\t\t\tif (geoLayer) {\r\n\t\t\t\tlayers.push(geoLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'FeatureCollection':\r\n\t\tfor (i = 0, len = geometry.features.length; i < len; i++) {\r\n\t\t\tvar featureLayer = geometryToLayer(geometry.features[i], options);\r\n\r\n\t\t\tif (featureLayer) {\r\n\t\t\t\tlayers.push(featureLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tdefault:\r\n\t\tthrow new Error('Invalid GeoJSON object.');\r\n\t}\r\n}\r\n\r\nfunction _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n\treturn pointToLayerFn ?\r\n\t\tpointToLayerFn(geojson, latlng) :\r\n\t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n}\r\n\r\n// @function coordsToLatLng(coords: Array): LatLng\r\n// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\nexport function coordsToLatLng(coords) {\r\n\treturn new LatLng(coords[1], coords[0], coords[2]);\r\n}\r\n\r\n// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\nexport function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n\tvar latlngs = [];\r\n\r\n\tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n\t\tlatlng = levelsDeep ?\r\n\t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n\t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n\t\tlatlngs.push(latlng);\r\n\t}\r\n\r\n\treturn latlngs;\r\n}\r\n\r\n// @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngToCoords(latlng, precision) {\r\n\tlatlng = toLatLng(latlng);\r\n\treturn latlng.alt !== undefined ?\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision), Util.formatNum(latlng.alt, precision)] :\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision)];\r\n}\r\n\r\n// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n\tvar coords = [];\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\t// Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion\r\n\t\tcoords.push(levelsDeep ?\r\n\t\t\tlatLngsToCoords(latlngs[i], LineUtil.isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :\r\n\t\t\tlatLngToCoords(latlngs[i], precision));\r\n\t}\r\n\r\n\tif (!levelsDeep && closed) {\r\n\t\tcoords.push(coords[0]);\r\n\t}\r\n\r\n\treturn coords;\r\n}\r\n\r\nexport function getFeature(layer, newGeometry) {\r\n\treturn layer.feature ?\r\n\t\tUtil.extend({}, layer.feature, {geometry: newGeometry}) :\r\n\t\tasFeature(newGeometry);\r\n}\r\n\r\n// @function asFeature(geojson: Object): Object\r\n// Normalize GeoJSON geometries/features into GeoJSON features.\r\nexport function asFeature(geojson) {\r\n\tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n\t\treturn geojson;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttype: 'Feature',\r\n\t\tproperties: {},\r\n\t\tgeometry: geojson\r\n\t};\r\n}\r\n\r\nvar PointToGeoJSON = {\r\n\ttoGeoJSON: function (precision) {\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'Point',\r\n\t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// @namespace Marker\r\n// @section Other methods\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\nMarker.include(PointToGeoJSON);\r\n\r\n// @namespace CircleMarker\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\nCircle.include(PointToGeoJSON);\r\nCircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n// @namespace Polyline\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\nPolyline.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar multi = !LineUtil.isFlat(this._latlngs);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n// @namespace Polygon\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\nPolygon.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar holes = !LineUtil.isFlat(this._latlngs),\r\n\t\t multi = holes && !LineUtil.isFlat(this._latlngs[0]);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n\t\tif (!holes) {\r\n\t\t\tcoords = [coords];\r\n\t\t}\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n// @namespace LayerGroup\r\nLayerGroup.include({\r\n\ttoMultiPoint: function (precision) {\r\n\t\tvar coords = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n\t\t});\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'MultiPoint',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t},\r\n\r\n\t// @method toGeoJSON(precision?: Number|false): Object\r\n\t// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n\t// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n\ttoGeoJSON: function (precision) {\r\n\r\n\t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n\t\tif (type === 'MultiPoint') {\r\n\t\t\treturn this.toMultiPoint(precision);\r\n\t\t}\r\n\r\n\t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n\t\t jsons = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tif (layer.toGeoJSON) {\r\n\t\t\t\tvar json = layer.toGeoJSON(precision);\r\n\t\t\t\tif (isGeometryCollection) {\r\n\t\t\t\t\tjsons.push(json.geometry);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar feature = asFeature(json);\r\n\t\t\t\t\t// Squash nested feature collections\r\n\t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n\t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tjsons.push(feature);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (isGeometryCollection) {\r\n\t\t\treturn getFeature(this, {\r\n\t\t\t\tgeometries: jsons,\r\n\t\t\t\ttype: 'GeometryCollection'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: jsons\r\n\t\t};\r\n\t}\r\n});\r\n\r\n// @namespace GeoJSON\r\n// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n// Creates a GeoJSON layer. Optionally accepts an object in\r\n// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n// (you can alternatively add it later with `addData` method) and an `options` object.\r\nexport function geoJSON(geojson, options) {\r\n\treturn new GeoJSON(geojson, options);\r\n}\r\n\r\n// Backward compatibility.\r\nexport var geoJson = geoJSON;\r\n","import {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\nimport {Bounds} from '../geometry/Bounds';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var ImageOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka ImageOverlay options\r\n\toptions: {\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the image overlay.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the image.\r\n\t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option errorOverlayUrl: String = ''\r\n\t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n\t\terrorOverlayUrl: '',\r\n\r\n\t\t// @option zIndex: Number = 1\r\n\t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n\t\tzIndex: 1,\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom class name to assign to the image. Empty by default.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n\t\tthis._url = url;\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\tonAdd: function () {\r\n\t\tif (!this._image) {\r\n\t\t\tthis._initImage();\r\n\r\n\t\t\tif (this.options.opacity < 1) {\r\n\t\t\t\tthis._updateOpacity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._image, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._image);\r\n\t\t}\r\n\r\n\t\tthis.getPane().appendChild(this._image);\r\n\t\tthis._reset();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tDomUtil.remove(this._image);\r\n\t\tif (this.options.interactive) {\r\n\t\t\tthis.removeInteractiveTarget(this._image);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Sets the opacity of the overlay.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsetStyle: function (styleOpts) {\r\n\t\tif (styleOpts.opacity) {\r\n\t\t\tthis.setOpacity(styleOpts.opacity);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer to the top of all overlays.\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer to the bottom of all overlays.\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setUrl(url: String): this\r\n\t// Changes the URL of the image.\r\n\tsetUrl: function (url) {\r\n\t\tthis._url = url;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._image.src = url;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setBounds(bounds: LatLngBounds): this\r\n\t// Update the bounds that this ImageOverlay covers\r\n\tsetBounds: function (bounds) {\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._reset();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._reset,\r\n\t\t\tviewreset: this._reset\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method setZIndex(value: Number): this\r\n\t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n\tsetZIndex: function (value) {\r\n\t\tthis.options.zIndex = value;\r\n\t\tthis._updateZIndex();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Get the bounds that this ImageOverlay covers\r\n\tgetBounds: function () {\r\n\t\treturn this._bounds;\r\n\t},\r\n\r\n\t// @method getElement(): HTMLElement\r\n\t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n\t// used by this overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._image;\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n\t\tvar img = this._image = wasElementSupplied ? this._url : DomUtil.create('img');\r\n\r\n\t\tDomUtil.addClass(img, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(img, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(img, this.options.className); }\r\n\r\n\t\timg.onselectstart = Util.falseFn;\r\n\t\timg.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the ImageOverlay layer has loaded its image\r\n\t\timg.onload = Util.bind(this.fire, this, 'load');\r\n\t\timg.onerror = Util.bind(this._overlayOnError, this, 'error');\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\tif (this.options.zIndex) {\r\n\t\t\tthis._updateZIndex();\r\n\t\t}\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tthis._url = img.src;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\timg.src = this._url;\r\n\t\timg.alt = this.options.alt;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar scale = this._map.getZoomScale(e.zoom),\r\n\t\t offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n\t\tDomUtil.setTransform(this._image, offset, scale);\r\n\t},\r\n\r\n\t_reset: function () {\r\n\t\tvar image = this._image,\r\n\t\t bounds = new Bounds(\r\n\t\t this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n\t\t this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n\t\t size = bounds.getSize();\r\n\r\n\t\tDomUtil.setPosition(image, bounds.min);\r\n\r\n\t\timage.style.width = size.x + 'px';\r\n\t\timage.style.height = size.y + 'px';\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tDomUtil.setOpacity(this._image, this.options.opacity);\r\n\t},\r\n\r\n\t_updateZIndex: function () {\r\n\t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n\t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n\t\t}\r\n\t},\r\n\r\n\t_overlayOnError: function () {\r\n\t\t// @event error: Event\r\n\t\t// Fired when the ImageOverlay layer fails to load its image\r\n\t\tthis.fire('error');\r\n\r\n\t\tvar errorUrl = this.options.errorOverlayUrl;\r\n\t\tif (errorUrl && this._url !== errorUrl) {\r\n\t\t\tthis._url = errorUrl;\r\n\t\t\tthis._image.src = errorUrl;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center of the ImageOverlay.\r\n\tgetCenter: function () {\r\n\t\treturn this._bounds.getCenter();\r\n\t}\r\n});\r\n\r\n// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n// Instantiates an image overlay object given the URL of the image and the\r\n// geographical bounds it is tied to.\r\nexport var imageOverlay = function (url, bounds, options) {\r\n\treturn new ImageOverlay(url, bounds, options);\r\n};\r\n","import {ImageOverlay} from './ImageOverlay';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var VideoOverlay = ImageOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka VideoOverlay options\r\n\toptions: {\r\n\t\t// @option autoplay: Boolean = true\r\n\t\t// Whether the video starts playing automatically when loaded.\r\n\t\t// On some browsers autoplay will only work with `muted: true`\r\n\t\tautoplay: true,\r\n\r\n\t\t// @option loop: Boolean = true\r\n\t\t// Whether the video will loop back to the beginning when played.\r\n\t\tloop: true,\r\n\r\n\t\t// @option keepAspectRatio: Boolean = true\r\n\t\t// Whether the video will save aspect ratio after the projection.\r\n\t\t// Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)\r\n\t\tkeepAspectRatio: true,\r\n\r\n\t\t// @option muted: Boolean = false\r\n\t\t// Whether the video starts on mute when loaded.\r\n\t\tmuted: false,\r\n\r\n\t\t// @option playsInline: Boolean = true\r\n\t\t// Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.\r\n\t\tplaysInline: true\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n\t\tvar vid = this._image = wasElementSupplied ? this._url : DomUtil.create('video');\r\n\r\n\t\tDomUtil.addClass(vid, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(vid, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(vid, this.options.className); }\r\n\r\n\t\tvid.onselectstart = Util.falseFn;\r\n\t\tvid.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the video has finished loading the first frame\r\n\t\tvid.onloadeddata = Util.bind(this.fire, this, 'load');\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n\t\t\tvar sources = [];\r\n\t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n\t\t\t\tsources.push(sourceElements[j].src);\r\n\t\t\t}\r\n\r\n\t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!Util.isArray(this._url)) { this._url = [this._url]; }\r\n\r\n\t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n\t\t\tvid.style['objectFit'] = 'fill';\r\n\t\t}\r\n\t\tvid.autoplay = !!this.options.autoplay;\r\n\t\tvid.loop = !!this.options.loop;\r\n\t\tvid.muted = !!this.options.muted;\r\n\t\tvid.playsInline = !!this.options.playsInline;\r\n\t\tfor (var i = 0; i < this._url.length; i++) {\r\n\t\t\tvar source = DomUtil.create('source');\r\n\t\t\tsource.src = this._url[i];\r\n\t\t\tvid.appendChild(source);\r\n\t\t}\r\n\t}\r\n\r\n\t// @method getElement(): HTMLVideoElement\r\n\t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n\t// used by this overlay.\r\n});\r\n\r\n\r\n// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n// geographical bounds it is tied to.\r\n\r\nexport function videoOverlay(video, bounds, options) {\r\n\treturn new VideoOverlay(video, bounds, options);\r\n}\r\n","import {ImageOverlay} from './ImageOverlay';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as Util from '../core/Util';\n\n/*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\nexport var SVGOverlay = ImageOverlay.extend({\n\t_initImage: function () {\n\t\tvar el = this._image = this._url;\n\n\t\tDomUtil.addClass(el, 'leaflet-image-layer');\n\t\tif (this._zoomAnimated) { DomUtil.addClass(el, 'leaflet-zoom-animated'); }\n\t\tif (this.options.className) { DomUtil.addClass(el, this.options.className); }\n\n\t\tel.onselectstart = Util.falseFn;\n\t\tel.onmousemove = Util.falseFn;\n\t}\n\n\t// @method getElement(): SVGElement\n\t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n\t// used by this overlay.\n});\n\n\n// @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n// Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n// A viewBox attribute is required on the SVG element to zoom in and out properly.\n\nexport function svgOverlay(el, bounds, options) {\n\treturn new SVGOverlay(el, bounds, options);\n}\n","import {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {toPoint} from '../geometry/Point';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class DivOverlay\r\n * @inherits Interactive layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.\r\n */\r\n\r\n// @namespace DivOverlay\r\nexport var DivOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka DivOverlay options\r\n\toptions: {\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If true, the popup/tooltip will listen to the mouse events.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option offset: Point = Point(0, 0)\r\n\t\t// The offset of the overlay position.\r\n\t\toffset: [0, 0],\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the overlay.\r\n\t\tclassName: '',\r\n\r\n\t\t// @option pane: String = undefined\r\n\t\t// `Map pane` where the overlay will be added.\r\n\t\tpane: undefined,\r\n\r\n\t\t// @option content: String|HTMLElement|Function = ''\r\n\t\t// Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be\r\n\t\t// passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\t\tcontent: ''\r\n\t},\r\n\r\n\tinitialize: function (options, source) {\r\n\t\tif (options && (options instanceof L.LatLng || Util.isArray(options))) {\r\n\t\t\tthis._latlng = toLatLng(options);\r\n\t\t\tUtil.setOptions(this, source);\r\n\t\t} else {\r\n\t\t\tUtil.setOptions(this, options);\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\t\tif (this.options.content) {\r\n\t\t\tthis._content = this.options.content;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method openOn(map: Map): this\r\n\t// Adds the overlay to the map.\r\n\t// Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\t\tif (!map.hasLayer(this)) {\r\n\t\t\tmap.addLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method close(): this\r\n\t// Closes the overlay.\r\n\t// Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`\r\n\t// and `layer.closePopup()`/`.closeTooltip()`.\r\n\tclose: function () {\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.removeLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method toggle(layer?: Layer): this\r\n\t// Opens or closes the overlay bound to layer depending on its current state.\r\n\t// Argument may be omitted only for overlay bound to layer.\r\n\t// Alternative to `layer.togglePopup()`/`.toggleTooltip()`.\r\n\ttoggle: function (layer) {\r\n\t\tif (this._map) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tif (arguments.length) {\r\n\t\t\t\tthis._source = layer;\r\n\t\t\t} else {\r\n\t\t\t\tlayer = this._source;\r\n\t\t\t}\r\n\t\t\tthis._prepareOpen();\r\n\r\n\t\t\t// open the overlay on the map\r\n\t\t\tthis.openOn(layer._map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n\t\tif (!this._container) {\r\n\t\t\tthis._initLayout();\r\n\t\t}\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this._removeTimeout);\r\n\t\tthis.getPane().appendChild(this._container);\r\n\t\tthis.update();\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 1);\r\n\t\t}\r\n\r\n\t\tthis.bringToFront();\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t\tthis._removeTimeout = setTimeout(Util.bind(DomUtil.remove, undefined, this._container), 200);\r\n\t\t} else {\r\n\t\t\tDomUtil.remove(this._container);\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.removeInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\t// @namespace DivOverlay\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the geographical point of the overlay.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Sets the geographical point where the overlay will open.\r\n\tsetLatLng: function (latlng) {\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tif (this._map) {\r\n\t\t\tthis._updatePosition();\r\n\t\t\tthis._adjustPan();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContent: String|HTMLElement\r\n\t// Returns the content of the overlay.\r\n\tgetContent: function () {\r\n\t\treturn this._content;\r\n\t},\r\n\r\n\t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n\t// Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.\r\n\t// The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\tsetContent: function (content) {\r\n\t\tthis._content = content;\r\n\t\tthis.update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getElement: String|HTMLElement\r\n\t// Returns the HTML container of the overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method update: null\r\n\t// Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.\r\n\tupdate: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tthis._container.style.visibility = 'hidden';\r\n\r\n\t\tthis._updateContent();\r\n\t\tthis._updateLayout();\r\n\t\tthis._updatePosition();\r\n\r\n\t\tthis._container.style.visibility = '';\r\n\r\n\t\tthis._adjustPan();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._updatePosition,\r\n\t\t\tviewreset: this._updatePosition\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method isOpen: Boolean\r\n\t// Returns `true` when the overlay is visible on the map.\r\n\tisOpen: function () {\r\n\t\treturn !!this._map && this._map.hasLayer(this);\r\n\t},\r\n\r\n\t// @method bringToFront: this\r\n\t// Brings this overlay in front of other overlays (in the same map pane).\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack: this\r\n\t// Brings this overlay to the back of other overlays (in the same map pane).\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)\r\n\t_prepareOpen: function (latlng) {\r\n\t\tvar source = this._source;\r\n\t\tif (!source._map) { return false; }\r\n\r\n\t\tif (source instanceof FeatureGroup) {\r\n\t\t\tsource = null;\r\n\t\t\tvar layers = this._source._layers;\r\n\t\t\tfor (var id in layers) {\r\n\t\t\t\tif (layers[id]._map) {\r\n\t\t\t\t\tsource = layers[id];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!source) { return false; } // Unable to get source layer.\r\n\r\n\t\t\t// set overlay source to this layer\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\r\n\t\tif (!latlng) {\r\n\t\t\tif (source.getCenter) {\r\n\t\t\t\tlatlng = source.getCenter();\r\n\t\t\t} else if (source.getLatLng) {\r\n\t\t\t\tlatlng = source.getLatLng();\r\n\t\t\t} else if (source.getBounds) {\r\n\t\t\t\tlatlng = source.getBounds().getCenter();\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setLatLng(latlng);\r\n\r\n\t\tif (this._map) {\r\n\t\t\t// update the overlay (content, layout, etc...)\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_updateContent: function () {\r\n\t\tif (!this._content) { return; }\r\n\r\n\t\tvar node = this._contentNode;\r\n\t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n\t\tif (typeof content === 'string') {\r\n\t\t\tnode.innerHTML = content;\r\n\t\t} else {\r\n\t\t\twhile (node.hasChildNodes()) {\r\n\t\t\t\tnode.removeChild(node.firstChild);\r\n\t\t\t}\r\n\t\t\tnode.appendChild(content);\r\n\t\t}\r\n\r\n\t\t// @namespace DivOverlay\r\n\t\t// @section DivOverlay events\r\n\t\t// @event contentupdate: Event\r\n\t\t// Fired when the content of the overlay is updated\r\n\t\tthis.fire('contentupdate');\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n\t\t offset = toPoint(this.options.offset),\r\n\t\t anchor = this._getAnchor();\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t\t} else {\r\n\t\t\toffset = offset.add(pos).add(anchor);\r\n\t\t}\r\n\r\n\t\tvar bottom = this._containerBottom = -offset.y,\r\n\t\t left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n\t\t// bottom position the overlay in case the height of the overlay changes (images loading etc)\r\n\t\tthis._container.style.bottom = bottom + 'px';\r\n\t\tthis._container.style.left = left + 'px';\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\treturn [0, 0];\r\n\t}\r\n\r\n});\r\n\r\nMap.include({\r\n\t_initOverlay: function (OverlayClass, content, latlng, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (!(overlay instanceof OverlayClass)) {\r\n\t\t\toverlay = new OverlayClass(options).setContent(content);\r\n\t\t}\r\n\t\tif (latlng) {\r\n\t\t\toverlay.setLatLng(latlng);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n\r\n\r\nLayer.include({\r\n\t_initOverlay: function (OverlayClass, old, content, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (overlay instanceof OverlayClass) {\r\n\t\t\tUtil.setOptions(overlay, options);\r\n\t\t\toverlay._source = this;\r\n\t\t} else {\r\n\t\t\toverlay = (old && !options) ? old : new OverlayClass(options, this);\r\n\t\t\toverlay.setContent(content);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n","import {DivOverlay} from './DivOverlay';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {Path} from './vector/Path';\r\n\r\n/*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n *\r\n * A popup can be also standalone:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n * or\r\n * ```js\r\n * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n// @namespace Popup\r\nexport var Popup = DivOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka Popup options\r\n\toptions: {\r\n\t\t// @option pane: String = 'popupPane'\r\n\t\t// `Map pane` where the popup will be added.\r\n\t\tpane: 'popupPane',\r\n\r\n\t\t// @option offset: Point = Point(0, 7)\r\n\t\t// The offset of the popup position.\r\n\t\toffset: [0, 7],\r\n\r\n\t\t// @option maxWidth: Number = 300\r\n\t\t// Max width of the popup, in pixels.\r\n\t\tmaxWidth: 300,\r\n\r\n\t\t// @option minWidth: Number = 50\r\n\t\t// Min width of the popup, in pixels.\r\n\t\tminWidth: 50,\r\n\r\n\t\t// @option maxHeight: Number = null\r\n\t\t// If set, creates a scrollable container of the given height\r\n\t\t// inside a popup if its content exceeds it.\r\n\t\t// The scrollable container can be styled using the\r\n\t\t// `leaflet-popup-scrolled` CSS class selector.\r\n\t\tmaxHeight: null,\r\n\r\n\t\t// @option autoPan: Boolean = true\r\n\t\t// Set it to `false` if you don't want the map to do panning animation\r\n\t\t// to fit the opened popup.\r\n\t\tautoPan: true,\r\n\r\n\t\t// @option autoPanPaddingTopLeft: Point = null\r\n\t\t// The margin between the popup and the top left corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingTopLeft: null,\r\n\r\n\t\t// @option autoPanPaddingBottomRight: Point = null\r\n\t\t// The margin between the popup and the bottom right corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingBottomRight: null,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(5, 5)\r\n\t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n\t\tautoPanPadding: [5, 5],\r\n\r\n\t\t// @option keepInView: Boolean = false\r\n\t\t// Set it to `true` if you want to prevent users from panning the popup\r\n\t\t// off of the screen while it is open.\r\n\t\tkeepInView: false,\r\n\r\n\t\t// @option closeButton: Boolean = true\r\n\t\t// Controls the presence of a close button in the popup.\r\n\t\tcloseButton: true,\r\n\r\n\t\t// @option autoClose: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the popup closing when another popup is opened.\r\n\t\tautoClose: true,\r\n\r\n\t\t// @option closeOnEscapeKey: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the ESC key for closing of the popup.\r\n\t\tcloseOnEscapeKey: true,\r\n\r\n\t\t// @option closeOnClick: Boolean = *\r\n\t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n\t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method openOn(map: Map): this\r\n\t// Alternative to `map.openPopup(popup)`.\r\n\t// Adds the popup to the map and closes the previous one.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\r\n\t\tif (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {\r\n\t\t\tmap.removeLayer(map._popup);\r\n\t\t}\r\n\t\tmap._popup = this;\r\n\r\n\t\treturn DivOverlay.prototype.openOn.call(this, map);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupopen: PopupEvent\r\n\t\t// Fired when a popup is opened in the map\r\n\t\tmap.fire('popupopen', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupopen: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is opened\r\n\t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n\t\t\t// For non-path layers, we toggle the popup when clicking\r\n\t\t\t// again the layer, so prevent the map to reopen it.\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.on('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupclose: PopupEvent\r\n\t\t// Fired when a popup in the map is closed\r\n\t\tmap.fire('popupclose', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupclose: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is closed\r\n\t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.off('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n\t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n\t\t\tevents.preclick = this.close;\r\n\t\t}\r\n\r\n\t\tif (this.options.keepInView) {\r\n\t\t\tevents.moveend = this._adjustPan;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar prefix = 'leaflet-popup',\r\n\t\t container = this._container = DomUtil.create('div',\r\n\t\t\tprefix + ' ' + (this.options.className || '') +\r\n\t\t\t' leaflet-zoom-animated');\r\n\r\n\t\tvar wrapper = this._wrapper = DomUtil.create('div', prefix + '-content-wrapper', container);\r\n\t\tthis._contentNode = DomUtil.create('div', prefix + '-content', wrapper);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(this._contentNode);\r\n\t\tDomEvent.on(container, 'contextmenu', DomEvent.stopPropagation);\r\n\r\n\t\tthis._tipContainer = DomUtil.create('div', prefix + '-tip-container', container);\r\n\t\tthis._tip = DomUtil.create('div', prefix + '-tip', this._tipContainer);\r\n\r\n\t\tif (this.options.closeButton) {\r\n\t\t\tvar closeButton = this._closeButton = DomUtil.create('a', prefix + '-close-button', container);\r\n\t\t\tcloseButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399\r\n\t\t\tcloseButton.setAttribute('aria-label', 'Close popup');\r\n\t\t\tcloseButton.href = '#close';\r\n\t\t\tcloseButton.innerHTML = '<span aria-hidden=\"true\">×</span>';\r\n\r\n\t\t\tDomEvent.on(closeButton, 'click', function (ev) {\r\n\t\t\t\tDomEvent.preventDefault(ev);\r\n\t\t\t\tthis.close();\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLayout: function () {\r\n\t\tvar container = this._contentNode,\r\n\t\t style = container.style;\r\n\r\n\t\tstyle.width = '';\r\n\t\tstyle.whiteSpace = 'nowrap';\r\n\r\n\t\tvar width = container.offsetWidth;\r\n\t\twidth = Math.min(width, this.options.maxWidth);\r\n\t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n\t\tstyle.width = (width + 1) + 'px';\r\n\t\tstyle.whiteSpace = '';\r\n\r\n\t\tstyle.height = '';\r\n\r\n\t\tvar height = container.offsetHeight,\r\n\t\t maxHeight = this.options.maxHeight,\r\n\t\t scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n\t\tif (maxHeight && height > maxHeight) {\r\n\t\t\tstyle.height = maxHeight + 'px';\r\n\t\t\tDomUtil.addClass(container, scrolledClass);\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(container, scrolledClass);\r\n\t\t}\r\n\r\n\t\tthis._containerWidth = this._container.offsetWidth;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n\t\t anchor = this._getAnchor();\r\n\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t},\r\n\r\n\t_adjustPan: function (e) {\r\n\t\tif (!this.options.autoPan) { return; }\r\n\t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n\t\tvar map = this._map,\r\n\t\t marginBottom = parseInt(DomUtil.getStyle(this._container, 'marginBottom'), 10) || 0,\r\n\t\t containerHeight = this._container.offsetHeight + marginBottom,\r\n\t\t containerWidth = this._containerWidth,\r\n\t\t layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n\t\tlayerPos._add(DomUtil.getPosition(this._container));\r\n\r\n\t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n\t\t padding = toPoint(this.options.autoPanPadding),\r\n\t\t paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n\t\t paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n\t\t size = map.getSize(),\r\n\t\t dx = 0,\r\n\t\t dy = 0;\r\n\r\n\t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n\t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n\t\t}\r\n\t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n\t\t\tdx = containerPos.x - paddingTL.x;\r\n\t\t}\r\n\t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n\t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n\t\t}\r\n\t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n\t\t\tdy = containerPos.y - paddingTL.y;\r\n\t\t}\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event autopanstart: Event\r\n\t\t// Fired when the map starts autopanning when opening a popup.\r\n\t\tif (dx || dy) {\r\n\t\t\tmap\r\n\t\t\t .fire('autopanstart')\r\n\t\t\t .panBy([dx, dy], {animate: e && e.type === 'moveend'});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\t// Where should we anchor the popup on the source layer?\r\n\t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n\t}\r\n\r\n});\r\n\r\n// @namespace Popup\r\n// @factory L.popup(options?: Popup options, source?: Layer)\r\n// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\n// @alternative\r\n// @factory L.popup(latlng: LatLng, options?: Popup options)\r\n// Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.\r\nexport var popup = function (options, source) {\r\n\treturn new Popup(options, source);\r\n};\r\n\r\n\r\n/* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\nMap.mergeOptions({\r\n\tclosePopupOnClick: true\r\n});\r\n\r\n\r\n// @namespace Map\r\n// @section Methods for Layers and Controls\r\nMap.include({\r\n\t// @method openPopup(popup: Popup): this\r\n\t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n\t// @alternative\r\n\t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n\t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n\topenPopup: function (popup, latlng, options) {\r\n\t\tthis._initOverlay(Popup, popup, latlng, options)\r\n\t\t .openOn(this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(popup?: Popup): this\r\n\t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n\tclosePopup: function (popup) {\r\n\t\tpopup = arguments.length ? popup : this._popup;\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n// @section Popup methods\r\nLayer.include({\r\n\r\n\t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n\t// Binds a popup to the layer with the passed `content` and sets up the\r\n\t// necessary event listeners. If a `Function` is passed it will receive\r\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n\tbindPopup: function (content, options) {\r\n\t\tthis._popup = this._initOverlay(Popup, this._popup, content, options);\r\n\t\tif (!this._popupHandlersAdded) {\r\n\t\t\tthis.on({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method unbindPopup(): this\r\n\t// Removes the popup previously bound with `bindPopup`.\r\n\tunbindPopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis.off({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = false;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method openPopup(latlng?: LatLng): this\r\n\t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n\topenPopup: function (latlng) {\r\n\t\tif (this._popup && this._popup._prepareOpen(latlng || this._latlng)) {\r\n\r\n\t\t\t// open the popup on the map\r\n\t\t\tthis._popup.openOn(this._map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(): this\r\n\t// Closes the popup bound to this layer if it is open.\r\n\tclosePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method togglePopup(): this\r\n\t// Opens or closes the popup bound to this layer depending on its current state.\r\n\ttogglePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.toggle(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method isPopupOpen(): boolean\r\n\t// Returns `true` if the popup bound to this layer is currently open.\r\n\tisPopupOpen: function () {\r\n\t\treturn (this._popup ? this._popup.isOpen() : false);\r\n\t},\r\n\r\n\t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n\t// Sets the content of the popup bound to this layer.\r\n\tsetPopupContent: function (content) {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getPopup(): Popup\r\n\t// Returns the popup bound to this layer.\r\n\tgetPopup: function () {\r\n\t\treturn this._popup;\r\n\t},\r\n\r\n\t_openPopup: function (e) {\r\n\t\tif (!this._popup || !this._map) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// prevent map click\r\n\t\tDomEvent.stop(e);\r\n\r\n\t\tvar target = e.layer || e.target;\r\n\t\tif (this._popup._source === target && !(target instanceof Path)) {\r\n\t\t\t// treat it like a marker and figure out\r\n\t\t\t// if we should toggle it open/closed\r\n\t\t\tif (this._map.hasLayer(this._popup)) {\r\n\t\t\t\tthis.closePopup();\r\n\t\t\t} else {\r\n\t\t\t\tthis.openPopup(e.latlng);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._popup._source = target;\r\n\t\tthis.openPopup(e.latlng);\r\n\t},\r\n\r\n\t_movePopup: function (e) {\r\n\t\tthis._popup.setLatLng(e.latlng);\r\n\t},\r\n\r\n\t_onKeyPress: function (e) {\r\n\t\tif (e.originalEvent.keyCode === 13) {\r\n\t\t\tthis._openPopup(e);\r\n\t\t}\r\n\t}\r\n});\r\n","import {DivOverlay} from './DivOverlay';\nimport {toPoint} from '../geometry/Point';\nimport {Map} from '../map/Map';\nimport {Layer} from './Layer';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as DomEvent from '../dom/DomEvent';\nimport * as Util from '../core/Util';\n\n/*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n * If you want to just bind a tooltip to marker:\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Path overlays like polylines also have a `bindTooltip` method.\n *\n * A tooltip can be also standalone:\n *\n * ```js\n * var tooltip = L.tooltip()\n * \t.setLatLng(latlng)\n * \t.setContent('Hello world!<br />This is a nice tooltip.')\n * \t.addTo(map);\n * ```\n * or\n * ```js\n * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})\n * \t.addTo(map);\n * ```\n *\n *\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n * Add a positive x offset to move the tooltip to the right, and a positive y offset to\n * move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n * should adapt this value if you use a custom icon.\n */\n\n\n// @namespace Tooltip\nexport var Tooltip = DivOverlay.extend({\n\n\t// @section\n\t// @aka Tooltip options\n\toptions: {\n\t\t// @option pane: String = 'tooltipPane'\n\t\t// `Map pane` where the tooltip will be added.\n\t\tpane: 'tooltipPane',\n\n\t\t// @option offset: Point = Point(0, 0)\n\t\t// Optional offset of the tooltip position.\n\t\toffset: [0, 0],\n\n\t\t// @option direction: String = 'auto'\n\t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n\t\t// `top`, `bottom`, `center`, `auto`.\n\t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n\t\t// position on the map.\n\t\tdirection: 'auto',\n\n\t\t// @option permanent: Boolean = false\n\t\t// Whether to open the tooltip permanently or only on mouseover.\n\t\tpermanent: false,\n\n\t\t// @option sticky: Boolean = false\n\t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n\t\tsticky: false,\n\n\t\t// @option opacity: Number = 0.9\n\t\t// Tooltip container opacity.\n\t\topacity: 0.9\n\t},\n\n\tonAdd: function (map) {\n\t\tDivOverlay.prototype.onAdd.call(this, map);\n\t\tthis.setOpacity(this.options.opacity);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipopen: TooltipEvent\n\t\t// Fired when a tooltip is opened in the map.\n\t\tmap.fire('tooltipopen', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.addEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipopen: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is opened.\n\t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tDivOverlay.prototype.onRemove.call(this, map);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipclose: TooltipEvent\n\t\t// Fired when a tooltip in the map is closed.\n\t\tmap.fire('tooltipclose', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.removeEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipclose: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is closed.\n\t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n\t\tif (!this.options.permanent) {\n\t\t\tevents.preclick = this.close;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t_initLayout: function () {\n\t\tvar prefix = 'leaflet-tooltip',\n\t\t className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n\t\tthis._contentNode = this._container = DomUtil.create('div', className);\n\n\t\tthis._container.setAttribute('role', 'tooltip');\n\t\tthis._container.setAttribute('id', 'leaflet-tooltip-' + Util.stamp(this));\n\t},\n\n\t_updateLayout: function () {},\n\n\t_adjustPan: function () {},\n\n\t_setPosition: function (pos) {\n\t\tvar subX, subY,\n\t\t map = this._map,\n\t\t container = this._container,\n\t\t centerPoint = map.latLngToContainerPoint(map.getCenter()),\n\t\t tooltipPoint = map.layerPointToContainerPoint(pos),\n\t\t direction = this.options.direction,\n\t\t tooltipWidth = container.offsetWidth,\n\t\t tooltipHeight = container.offsetHeight,\n\t\t offset = toPoint(this.options.offset),\n\t\t anchor = this._getAnchor();\n\n\t\tif (direction === 'top') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight;\n\t\t} else if (direction === 'bottom') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = 0;\n\t\t} else if (direction === 'center') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'right') {\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'left') {\n\t\t\tsubX = tooltipWidth;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (tooltipPoint.x < centerPoint.x) {\n\t\t\tdirection = 'right';\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else {\n\t\t\tdirection = 'left';\n\t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t}\n\n\t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-right');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-left');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-top');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-bottom');\n\t\tDomUtil.addClass(container, 'leaflet-tooltip-' + direction);\n\t\tDomUtil.setPosition(container, pos);\n\t},\n\n\t_updatePosition: function () {\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._setPosition(pos);\n\t},\n\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\n\t\tif (this._container) {\n\t\t\tDomUtil.setOpacity(this._container, opacity);\n\t\t}\n\t},\n\n\t_animateZoom: function (e) {\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\t\tthis._setPosition(pos);\n\t},\n\n\t_getAnchor: function () {\n\t\t// Where should we anchor the tooltip on the source layer?\n\t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n\t}\n\n});\n\n// @namespace Tooltip\n// @factory L.tooltip(options?: Tooltip options, source?: Layer)\n// Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\n// @alternative\n// @factory L.tooltip(latlng: LatLng, options?: Tooltip options)\n// Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.\nexport var tooltip = function (options, source) {\n\treturn new Tooltip(options, source);\n};\n\n// @namespace Map\n// @section Methods for Layers and Controls\nMap.include({\n\n\t// @method openTooltip(tooltip: Tooltip): this\n\t// Opens the specified tooltip.\n\t// @alternative\n\t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n\t// Creates a tooltip with the specified content and options and open it.\n\topenTooltip: function (tooltip, latlng, options) {\n\t\tthis._initOverlay(Tooltip, tooltip, latlng, options)\n\t\t .openOn(this);\n\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(tooltip: Tooltip): this\n\t// Closes the tooltip given as parameter.\n\tcloseTooltip: function (tooltip) {\n\t\ttooltip.close();\n\t\treturn this;\n\t}\n\n});\n\n/*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n// @section Tooltip methods\nLayer.include({\n\n\t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n\t// Binds a tooltip to the layer with the passed `content` and sets up the\n\t// necessary event listeners. If a `Function` is passed it will receive\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\n\tbindTooltip: function (content, options) {\n\n\t\tif (this._tooltip && this.isTooltipOpen()) {\n\t\t\tthis.unbindTooltip();\n\t\t}\n\n\t\tthis._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);\n\t\tthis._initTooltipInteractions();\n\n\t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n\t\t\tthis.openTooltip();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method unbindTooltip(): this\n\t// Removes the tooltip previously bound with `bindTooltip`.\n\tunbindTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._initTooltipInteractions(true);\n\t\t\tthis.closeTooltip();\n\t\t\tthis._tooltip = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_initTooltipInteractions: function (remove) {\n\t\tif (!remove && this._tooltipHandlersAdded) { return; }\n\t\tvar onOff = remove ? 'off' : 'on',\n\t\t events = {\n\t\t\tremove: this.closeTooltip,\n\t\t\tmove: this._moveTooltip\n\t\t };\n\t\tif (!this._tooltip.options.permanent) {\n\t\t\tevents.mouseover = this._openTooltip;\n\t\t\tevents.mouseout = this.closeTooltip;\n\t\t\tevents.click = this._openTooltip;\n\t\t\tif (this._map) {\n\t\t\t\tthis._addFocusListeners();\n\t\t\t} else {\n\t\t\t\tevents.add = this._addFocusListeners;\n\t\t\t}\n\t\t} else {\n\t\t\tevents.add = this._openTooltip;\n\t\t}\n\t\tif (this._tooltip.options.sticky) {\n\t\t\tevents.mousemove = this._moveTooltip;\n\t\t}\n\t\tthis[onOff](events);\n\t\tthis._tooltipHandlersAdded = !remove;\n\t},\n\n\t// @method openTooltip(latlng?: LatLng): this\n\t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n\topenTooltip: function (latlng) {\n\t\tif (this._tooltip && this._tooltip._prepareOpen(latlng)) {\n\t\t\t// open the tooltip on the map\n\t\t\tthis._tooltip.openOn(this._map);\n\n\t\t\tif (this.getElement) {\n\t\t\t\tthis._setAriaDescribedByOnLayer(this);\n\t\t\t} else if (this.eachLayer) {\n\t\t\t\tthis.eachLayer(this._setAriaDescribedByOnLayer, this);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(): this\n\t// Closes the tooltip bound to this layer if it is open.\n\tcloseTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\treturn this._tooltip.close();\n\t\t}\n\t},\n\n\t// @method toggleTooltip(): this\n\t// Opens or closes the tooltip bound to this layer depending on its current state.\n\ttoggleTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.toggle(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method isTooltipOpen(): boolean\n\t// Returns `true` if the tooltip bound to this layer is currently open.\n\tisTooltipOpen: function () {\n\t\treturn this._tooltip.isOpen();\n\t},\n\n\t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n\t// Sets the content of the tooltip bound to this layer.\n\tsetTooltipContent: function (content) {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.setContent(content);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getTooltip(): Tooltip\n\t// Returns the tooltip bound to this layer.\n\tgetTooltip: function () {\n\t\treturn this._tooltip;\n\t},\n\n\t_addFocusListeners: function () {\n\t\tif (this.getElement) {\n\t\t\tthis._addFocusListenersOnLayer(this);\n\t\t} else if (this.eachLayer) {\n\t\t\tthis.eachLayer(this._addFocusListenersOnLayer, this);\n\t\t}\n\t},\n\n\t_addFocusListenersOnLayer: function (layer) {\n\t\tvar el = layer.getElement();\n\t\tif (el) {\n\t\t\tDomEvent.on(el, 'focus', function () {\n\t\t\t\tthis._tooltip._source = layer;\n\t\t\t\tthis.openTooltip();\n\t\t\t}, this);\n\t\t\tDomEvent.on(el, 'blur', this.closeTooltip, this);\n\t\t}\n\t},\n\n\t_setAriaDescribedByOnLayer: function (layer) {\n\t\tvar el = layer.getElement();\n\t\tif (el) {\n\t\t\tel.setAttribute('aria-describedby', this._tooltip._container.id);\n\t\t}\n\t},\n\n\n\t_openTooltip: function (e) {\n\t\tif (!this._tooltip || !this._map || (this._map.dragging && this._map.dragging.moving())) {\n\t\t\treturn;\n\t\t}\n\t\tthis._tooltip._source = e.layer || e.target;\n\n\t\tthis.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);\n\t},\n\n\t_moveTooltip: function (e) {\n\t\tvar latlng = e.latlng, containerPoint, layerPoint;\n\t\tif (this._tooltip.options.sticky && e.originalEvent) {\n\t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n\t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n\t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n\t\t}\n\t\tthis._tooltip.setLatLng(latlng);\n\t}\n});\n","import {Icon} from './Icon';\nimport {toPoint as point} from '../../geometry/Point';\nimport {empty} from '../../dom/DomUtil';\n\n/*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\nexport var DivIcon = Icon.extend({\n\toptions: {\n\t\t// @section\n\t\t// @aka DivIcon options\n\t\ticonSize: [12, 12], // also can be set through CSS\n\n\t\t// iconAnchor: (Point),\n\t\t// popupAnchor: (Point),\n\n\t\t// @option html: String|HTMLElement = ''\n\t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n\t\t// an instance of `HTMLElement`.\n\t\thtml: false,\n\n\t\t// @option bgPos: Point = [0, 0]\n\t\t// Optional relative position of the background, in pixels\n\t\tbgPos: null,\n\n\t\tclassName: 'leaflet-div-icon'\n\t},\n\n\tcreateIcon: function (oldIcon) {\n\t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n\t\t options = this.options;\n\n\t\tif (options.html instanceof Element) {\n\t\t\tempty(div);\n\t\t\tdiv.appendChild(options.html);\n\t\t} else {\n\t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n\t\t}\n\n\t\tif (options.bgPos) {\n\t\t\tvar bgPos = point(options.bgPos);\n\t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n\t\t}\n\t\tthis._setIconStyles(div, 'icon');\n\n\t\treturn div;\n\t},\n\n\tcreateShadow: function () {\n\t\treturn null;\n\t}\n});\n\n// @factory L.divIcon(options: DivIcon options)\n// Creates a `DivIcon` instance with the given options.\nexport function divIcon(options) {\n\treturn new DivIcon(options);\n}\n","import {Icon} from './Icon';\nexport {icon} from './Icon';\nimport {IconDefault} from './Icon.Default';\nIcon.Default = IconDefault;\nexport {Icon};\n\nexport {DivIcon, divIcon} from './DivIcon';\nexport {Marker, marker} from './Marker';\n","import {Layer} from '../Layer';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport {LatLngBounds, toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n * createTile: function(coords){\n * // create a <canvas> element for drawing\n * var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n * // setup tile width and height according to the options\n * var size = this.getTileSize();\n * tile.width = size.x;\n * tile.height = size.y;\n *\n * // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n * var ctx = tile.getContext('2d');\n *\n * // return the tile so it can be rendered on screen\n * return tile;\n * }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n * createTile: function(coords, done){\n * var error;\n *\n * // create a <canvas> element for drawing\n * var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n * // setup tile width and height according to the options\n * var size = this.getTileSize();\n * tile.width = size.x;\n * tile.height = size.y;\n *\n * // draw something asynchronously and pass the tile to the done() callback\n * setTimeout(function() {\n * done(error, tile);\n * }, 1000);\n *\n * return tile;\n * }\n * });\n * ```\n *\n * @section\n */\n\n\nexport var GridLayer = Layer.extend({\n\n\t// @section\n\t// @aka GridLayer options\n\toptions: {\n\t\t// @option tileSize: Number|Point = 256\n\t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n\t\ttileSize: 256,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n\t\topacity: 1,\n\n\t\t// @option updateWhenIdle: Boolean = (depends)\n\t\t// Load new tiles only when panning ends.\n\t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n\t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n\t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n\t\tupdateWhenIdle: Browser.mobile,\n\n\t\t// @option updateWhenZooming: Boolean = true\n\t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n\t\tupdateWhenZooming: true,\n\n\t\t// @option updateInterval: Number = 200\n\t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n\t\tupdateInterval: 200,\n\n\t\t// @option zIndex: Number = 1\n\t\t// The explicit zIndex of the tile layer.\n\t\tzIndex: 1,\n\n\t\t// @option bounds: LatLngBounds = undefined\n\t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n\t\tbounds: null,\n\n\t\t// @option minZoom: Number = 0\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n\t\tminZoom: 0,\n\n\t\t// @option maxZoom: Number = undefined\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n\t\tmaxZoom: undefined,\n\n\t\t// @option maxNativeZoom: Number = undefined\n\t\t// Maximum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n\t\t// from `maxNativeZoom` level and auto-scaled.\n\t\tmaxNativeZoom: undefined,\n\n\t\t// @option minNativeZoom: Number = undefined\n\t\t// Minimum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n\t\t// from `minNativeZoom` level and auto-scaled.\n\t\tminNativeZoom: undefined,\n\n\t\t// @option noWrap: Boolean = false\n\t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n\t\t// GridLayer will only be displayed once at low zoom levels. Has no\n\t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n\t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n\t\t// tiles outside the CRS limits.\n\t\tnoWrap: false,\n\n\t\t// @option pane: String = 'tilePane'\n\t\t// `Map pane` where the grid layer will be added.\n\t\tpane: 'tilePane',\n\n\t\t// @option className: String = ''\n\t\t// A custom class name to assign to the tile layer. Empty by default.\n\t\tclassName: '',\n\n\t\t// @option keepBuffer: Number = 2\n\t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n\t\tkeepBuffer: 2\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t},\n\n\tonAdd: function () {\n\t\tthis._initContainer();\n\n\t\tthis._levels = {};\n\t\tthis._tiles = {};\n\n\t\tthis._resetView(); // implicit _update() call\n\t},\n\n\tbeforeAdd: function (map) {\n\t\tmap._addZoomLimit(this);\n\t},\n\n\tonRemove: function (map) {\n\t\tthis._removeAllTiles();\n\t\tDomUtil.remove(this._container);\n\t\tmap._removeZoomLimit(this);\n\t\tthis._container = null;\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t// @method bringToFront: this\n\t// Brings the tile layer to the top of all tile layers.\n\tbringToFront: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toFront(this._container);\n\t\t\tthis._setAutoZIndex(Math.max);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack: this\n\t// Brings the tile layer to the bottom of all tile layers.\n\tbringToBack: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toBack(this._container);\n\t\t\tthis._setAutoZIndex(Math.min);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getContainer: HTMLElement\n\t// Returns the HTML element that contains the tiles for this layer.\n\tgetContainer: function () {\n\t\treturn this._container;\n\t},\n\n\t// @method setOpacity(opacity: Number): this\n\t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\t\tthis._updateOpacity();\n\t\treturn this;\n\t},\n\n\t// @method setZIndex(zIndex: Number): this\n\t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n\tsetZIndex: function (zIndex) {\n\t\tthis.options.zIndex = zIndex;\n\t\tthis._updateZIndex();\n\n\t\treturn this;\n\t},\n\n\t// @method isLoading: Boolean\n\t// Returns `true` if any tile in the grid layer has not finished loading.\n\tisLoading: function () {\n\t\treturn this._loading;\n\t},\n\n\t// @method redraw: this\n\t// Causes the layer to clear all the tiles and request them again.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._removeAllTiles();\n\t\t\tvar tileZoom = this._clampZoom(this._map.getZoom());\n\t\t\tif (tileZoom !== this._tileZoom) {\n\t\t\t\tthis._tileZoom = tileZoom;\n\t\t\t\tthis._updateLevels();\n\t\t\t}\n\t\t\tthis._update();\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewprereset: this._invalidateAll,\n\t\t\tviewreset: this._resetView,\n\t\t\tzoom: this._resetView,\n\t\t\tmoveend: this._onMoveEnd\n\t\t};\n\n\t\tif (!this.options.updateWhenIdle) {\n\t\t\t// update tiles on move, but not more often than once per given interval\n\t\t\tif (!this._onMove) {\n\t\t\t\tthis._onMove = Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n\t\t\t}\n\n\t\t\tevents.move = this._onMove;\n\t\t}\n\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._animateZoom;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t// @section Extension methods\n\t// Layers extending `GridLayer` shall reimplement the following method.\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\n\t// Called only internally, must be overridden by classes extending `GridLayer`.\n\t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n\t// is specified, it must be called when the tile has finished loading and drawing.\n\tcreateTile: function () {\n\t\treturn document.createElement('div');\n\t},\n\n\t// @section\n\t// @method getTileSize: Point\n\t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n\tgetTileSize: function () {\n\t\tvar s = this.options.tileSize;\n\t\treturn s instanceof Point ? s : new Point(s, s);\n\t},\n\n\t_updateZIndex: function () {\n\t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n\t\t\tthis._container.style.zIndex = this.options.zIndex;\n\t\t}\n\t},\n\n\t_setAutoZIndex: function (compare) {\n\t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n\t\tvar layers = this.getPane().children,\n\t\t edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n\t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n\t\t\tzIndex = layers[i].style.zIndex;\n\n\t\t\tif (layers[i] !== this._container && zIndex) {\n\t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(edgeZIndex)) {\n\t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n\t\t\tthis._updateZIndex();\n\t\t}\n\t},\n\n\t_updateOpacity: function () {\n\t\tif (!this._map) { return; }\n\n\t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n\t\tif (Browser.ielt9) { return; }\n\n\t\tDomUtil.setOpacity(this._container, this.options.opacity);\n\n\t\tvar now = +new Date(),\n\t\t nextFrame = false,\n\t\t willPrune = false;\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar tile = this._tiles[key];\n\t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n\t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n\t\t\tDomUtil.setOpacity(tile.el, fade);\n\t\t\tif (fade < 1) {\n\t\t\t\tnextFrame = true;\n\t\t\t} else {\n\t\t\t\tif (tile.active) {\n\t\t\t\t\twillPrune = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis._onOpaqueTile(tile);\n\t\t\t\t}\n\t\t\t\ttile.active = true;\n\t\t\t}\n\t\t}\n\n\t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n\t\tif (nextFrame) {\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t}\n\t},\n\n\t_onOpaqueTile: Util.falseFn,\n\n\t_initContainer: function () {\n\t\tif (this._container) { return; }\n\n\t\tthis._container = DomUtil.create('div', 'leaflet-layer ' + (this.options.className || ''));\n\t\tthis._updateZIndex();\n\n\t\tif (this.options.opacity < 1) {\n\t\t\tthis._updateOpacity();\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t},\n\n\t_updateLevels: function () {\n\n\t\tvar zoom = this._tileZoom,\n\t\t maxZoom = this.options.maxZoom;\n\n\t\tif (zoom === undefined) { return undefined; }\n\n\t\tfor (var z in this._levels) {\n\t\t\tz = Number(z);\n\t\t\tif (this._levels[z].el.children.length || z === zoom) {\n\t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n\t\t\t\tthis._onUpdateLevel(z);\n\t\t\t} else {\n\t\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\t\tthis._removeTilesAtZoom(z);\n\t\t\t\tthis._onRemoveLevel(z);\n\t\t\t\tdelete this._levels[z];\n\t\t\t}\n\t\t}\n\n\t\tvar level = this._levels[zoom],\n\t\t map = this._map;\n\n\t\tif (!level) {\n\t\t\tlevel = this._levels[zoom] = {};\n\n\t\t\tlevel.el = DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n\t\t\tlevel.el.style.zIndex = maxZoom;\n\n\t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n\t\t\tlevel.zoom = zoom;\n\n\t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n\t\t\t// force the browser to consider the newly added element for transition\n\t\t\tUtil.falseFn(level.el.offsetWidth);\n\n\t\t\tthis._onCreateLevel(level);\n\t\t}\n\n\t\tthis._level = level;\n\n\t\treturn level;\n\t},\n\n\t_onUpdateLevel: Util.falseFn,\n\n\t_onRemoveLevel: Util.falseFn,\n\n\t_onCreateLevel: Util.falseFn,\n\n\t_pruneTiles: function () {\n\t\tif (!this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar key, tile;\n\n\t\tvar zoom = this._map.getZoom();\n\t\tif (zoom > this.options.maxZoom ||\n\t\t\tzoom < this.options.minZoom) {\n\t\t\tthis._removeAllTiles();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\ttile.retain = tile.current;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\tif (tile.current && !tile.active) {\n\t\t\t\tvar coords = tile.coords;\n\t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n\t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\tif (!this._tiles[key].retain) {\n\t\t\t\tthis._removeTile(key);\n\t\t\t}\n\t\t}\n\t},\n\n\t_removeTilesAtZoom: function (zoom) {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (this._tiles[key].coords.z !== zoom) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_removeAllTiles: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_invalidateAll: function () {\n\t\tfor (var z in this._levels) {\n\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\tthis._onRemoveLevel(Number(z));\n\t\t\tdelete this._levels[z];\n\t\t}\n\t\tthis._removeAllTiles();\n\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t_retainParent: function (x, y, z, minZoom) {\n\t\tvar x2 = Math.floor(x / 2),\n\t\t y2 = Math.floor(y / 2),\n\t\t z2 = z - 1,\n\t\t coords2 = new Point(+x2, +y2);\n\t\tcoords2.z = +z2;\n\n\t\tvar key = this._tileCoordsToKey(coords2),\n\t\t tile = this._tiles[key];\n\n\t\tif (tile && tile.active) {\n\t\t\ttile.retain = true;\n\t\t\treturn true;\n\n\t\t} else if (tile && tile.loaded) {\n\t\t\ttile.retain = true;\n\t\t}\n\n\t\tif (z2 > minZoom) {\n\t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_retainChildren: function (x, y, z, maxZoom) {\n\n\t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n\t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = z + 1;\n\n\t\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\t tile = this._tiles[key];\n\n\t\t\t\tif (tile && tile.active) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t} else if (tile && tile.loaded) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t}\n\n\t\t\t\tif (z + 1 < maxZoom) {\n\t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetView: function (e) {\n\t\tvar animating = e && (e.pinch || e.flyTo);\n\t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n\t},\n\n\t_animateZoom: function (e) {\n\t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n\t},\n\n\t_clampZoom: function (zoom) {\n\t\tvar options = this.options;\n\n\t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n\t\t\treturn options.minNativeZoom;\n\t\t}\n\n\t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n\t\t\treturn options.maxNativeZoom;\n\t\t}\n\n\t\treturn zoom;\n\t},\n\n\t_setView: function (center, zoom, noPrune, noUpdate) {\n\t\tvar tileZoom = Math.round(zoom);\n\t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n\t\t (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n\t\t\ttileZoom = undefined;\n\t\t} else {\n\t\t\ttileZoom = this._clampZoom(tileZoom);\n\t\t}\n\n\t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n\t\tif (!noUpdate || tileZoomChanged) {\n\n\t\t\tthis._tileZoom = tileZoom;\n\n\t\t\tif (this._abortLoading) {\n\t\t\t\tthis._abortLoading();\n\t\t\t}\n\n\t\t\tthis._updateLevels();\n\t\t\tthis._resetGrid();\n\n\t\t\tif (tileZoom !== undefined) {\n\t\t\t\tthis._update(center);\n\t\t\t}\n\n\t\t\tif (!noPrune) {\n\t\t\t\tthis._pruneTiles();\n\t\t\t}\n\n\t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n\t\t\t// a zoom anim or a pinch gesture\n\t\t\tthis._noPrune = !!noPrune;\n\t\t}\n\n\t\tthis._setZoomTransforms(center, zoom);\n\t},\n\n\t_setZoomTransforms: function (center, zoom) {\n\t\tfor (var i in this._levels) {\n\t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n\t\t}\n\t},\n\n\t_setZoomTransform: function (level, center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n\t\t translate = level.origin.multiplyBy(scale)\n\t\t .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(level.el, translate, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(level.el, translate);\n\t\t}\n\t},\n\n\t_resetGrid: function () {\n\t\tvar map = this._map,\n\t\t crs = map.options.crs,\n\t\t tileSize = this._tileSize = this.getTileSize(),\n\t\t tileZoom = this._tileZoom;\n\n\t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n\t\tif (bounds) {\n\t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n\t\t}\n\n\t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n\t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n\t\t];\n\t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n\t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n\t\t];\n\t},\n\n\t_onMoveEnd: function () {\n\t\tif (!this._map || this._map._animatingZoom) { return; }\n\n\t\tthis._update();\n\t},\n\n\t_getTiledPixelBounds: function (center) {\n\t\tvar map = this._map,\n\t\t mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n\t\t scale = map.getZoomScale(mapZoom, this._tileZoom),\n\t\t pixelCenter = map.project(center, this._tileZoom).floor(),\n\t\t halfSize = map.getSize().divideBy(scale * 2);\n\n\t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n\t},\n\n\t// Private method to load tiles in the grid's active zoom level according to map bounds\n\t_update: function (center) {\n\t\tvar map = this._map;\n\t\tif (!map) { return; }\n\t\tvar zoom = this._clampZoom(map.getZoom());\n\n\t\tif (center === undefined) { center = map.getCenter(); }\n\t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n\t\tvar pixelBounds = this._getTiledPixelBounds(center),\n\t\t tileRange = this._pxBoundsToTileRange(pixelBounds),\n\t\t tileCenter = tileRange.getCenter(),\n\t\t queue = [],\n\t\t margin = this.options.keepBuffer,\n\t\t noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n\t\t tileRange.getTopRight().add([margin, -margin]));\n\n\t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n\t\tif (!(isFinite(tileRange.min.x) &&\n\t\t isFinite(tileRange.min.y) &&\n\t\t isFinite(tileRange.max.x) &&\n\t\t isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar c = this._tiles[key].coords;\n\t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n\t\t\t\tthis._tiles[key].current = false;\n\t\t\t}\n\t\t}\n\n\t\t// _update just loads more tiles. If the tile zoom level differs too much\n\t\t// from the map's, let _setView reset levels and prune old tiles.\n\t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n\t\t// create a queue of coordinates to load tiles from\n\t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n\t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = this._tileZoom;\n\n\t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n\t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n\t\t\t\tif (tile) {\n\t\t\t\t\ttile.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(coords);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort tile queue to load tiles in order of their distance to center\n\t\tqueue.sort(function (a, b) {\n\t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n\t\t});\n\n\t\tif (queue.length !== 0) {\n\t\t\t// if it's the first batch of tiles to load\n\t\t\tif (!this._loading) {\n\t\t\t\tthis._loading = true;\n\t\t\t\t// @event loading: Event\n\t\t\t\t// Fired when the grid layer starts loading tiles.\n\t\t\t\tthis.fire('loading');\n\t\t\t}\n\n\t\t\t// create DOM fragment to append tiles in one batch\n\t\t\tvar fragment = document.createDocumentFragment();\n\n\t\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\t\tthis._addTile(queue[i], fragment);\n\t\t\t}\n\n\t\t\tthis._level.el.appendChild(fragment);\n\t\t}\n\t},\n\n\t_isValidTile: function (coords) {\n\t\tvar crs = this._map.options.crs;\n\n\t\tif (!crs.infinite) {\n\t\t\t// don't load tile if it's out of bounds and not wrapped\n\t\t\tvar bounds = this._globalTileRange;\n\t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n\t\t\t (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n\t\t}\n\n\t\tif (!this.options.bounds) { return true; }\n\n\t\t// don't load tile if it doesn't intersect the bounds in options\n\t\tvar tileBounds = this._tileCoordsToBounds(coords);\n\t\treturn latLngBounds(this.options.bounds).overlaps(tileBounds);\n\t},\n\n\t_keyToBounds: function (key) {\n\t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n\t},\n\n\t_tileCoordsToNwSe: function (coords) {\n\t\tvar map = this._map,\n\t\t tileSize = this.getTileSize(),\n\t\t nwPoint = coords.scaleBy(tileSize),\n\t\t sePoint = nwPoint.add(tileSize),\n\t\t nw = map.unproject(nwPoint, coords.z),\n\t\t se = map.unproject(sePoint, coords.z);\n\t\treturn [nw, se];\n\t},\n\n\t// converts tile coordinates to its geographical bounds\n\t_tileCoordsToBounds: function (coords) {\n\t\tvar bp = this._tileCoordsToNwSe(coords),\n\t\t bounds = new LatLngBounds(bp[0], bp[1]);\n\n\t\tif (!this.options.noWrap) {\n\t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n\t\t}\n\t\treturn bounds;\n\t},\n\t// converts tile coordinates to key for the tile cache\n\t_tileCoordsToKey: function (coords) {\n\t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n\t},\n\n\t// converts tile cache key to coordinates\n\t_keyToTileCoords: function (key) {\n\t\tvar k = key.split(':'),\n\t\t coords = new Point(+k[0], +k[1]);\n\t\tcoords.z = +k[2];\n\t\treturn coords;\n\t},\n\n\t_removeTile: function (key) {\n\t\tvar tile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\tDomUtil.remove(tile.el);\n\n\t\tdelete this._tiles[key];\n\n\t\t// @event tileunload: TileEvent\n\t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n\t\tthis.fire('tileunload', {\n\t\t\ttile: tile.el,\n\t\t\tcoords: this._keyToTileCoords(key)\n\t\t});\n\t},\n\n\t_initTile: function (tile) {\n\t\tDomUtil.addClass(tile, 'leaflet-tile');\n\n\t\tvar tileSize = this.getTileSize();\n\t\ttile.style.width = tileSize.x + 'px';\n\t\ttile.style.height = tileSize.y + 'px';\n\n\t\ttile.onselectstart = Util.falseFn;\n\t\ttile.onmousemove = Util.falseFn;\n\n\t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n\t\tif (Browser.ielt9 && this.options.opacity < 1) {\n\t\t\tDomUtil.setOpacity(tile, this.options.opacity);\n\t\t}\n\t},\n\n\t_addTile: function (coords, container) {\n\t\tvar tilePos = this._getTilePos(coords),\n\t\t key = this._tileCoordsToKey(coords);\n\n\t\tvar tile = this.createTile(this._wrapCoords(coords), Util.bind(this._tileReady, this, coords));\n\n\t\tthis._initTile(tile);\n\n\t\t// if createTile is defined with a second argument (\"done\" callback),\n\t\t// we know that tile is async and will be ready later; otherwise\n\t\tif (this.createTile.length < 2) {\n\t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n\t\t\tUtil.requestAnimFrame(Util.bind(this._tileReady, this, coords, null, tile));\n\t\t}\n\n\t\tDomUtil.setPosition(tile, tilePos);\n\n\t\t// save tile in cache\n\t\tthis._tiles[key] = {\n\t\t\tel: tile,\n\t\t\tcoords: coords,\n\t\t\tcurrent: true\n\t\t};\n\n\t\tcontainer.appendChild(tile);\n\t\t// @event tileloadstart: TileEvent\n\t\t// Fired when a tile is requested and starts loading.\n\t\tthis.fire('tileloadstart', {\n\t\t\ttile: tile,\n\t\t\tcoords: coords\n\t\t});\n\t},\n\n\t_tileReady: function (coords, err, tile) {\n\t\tif (err) {\n\t\t\t// @event tileerror: TileErrorEvent\n\t\t\t// Fired when there is an error loading a tile.\n\t\t\tthis.fire('tileerror', {\n\t\t\t\terror: err,\n\t\t\t\ttile: tile,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tvar key = this._tileCoordsToKey(coords);\n\n\t\ttile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\ttile.loaded = +new Date();\n\t\tif (this._map._fadeAnimated) {\n\t\t\tDomUtil.setOpacity(tile.el, 0);\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t} else {\n\t\t\ttile.active = true;\n\t\t\tthis._pruneTiles();\n\t\t}\n\n\t\tif (!err) {\n\t\t\tDomUtil.addClass(tile.el, 'leaflet-tile-loaded');\n\n\t\t\t// @event tileload: TileEvent\n\t\t\t// Fired when a tile loads.\n\t\t\tthis.fire('tileload', {\n\t\t\t\ttile: tile.el,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tif (this._noTilesToLoad()) {\n\t\t\tthis._loading = false;\n\t\t\t// @event load: Event\n\t\t\t// Fired when the grid layer loaded all visible tiles.\n\t\t\tthis.fire('load');\n\n\t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n\t\t\t\tUtil.requestAnimFrame(this._pruneTiles, this);\n\t\t\t} else {\n\t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n\t\t\t\t// to trigger a pruning.\n\t\t\t\tsetTimeout(Util.bind(this._pruneTiles, this), 250);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getTilePos: function (coords) {\n\t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n\t},\n\n\t_wrapCoords: function (coords) {\n\t\tvar newCoords = new Point(\n\t\t\tthis._wrapX ? Util.wrapNum(coords.x, this._wrapX) : coords.x,\n\t\t\tthis._wrapY ? Util.wrapNum(coords.y, this._wrapY) : coords.y);\n\t\tnewCoords.z = coords.z;\n\t\treturn newCoords;\n\t},\n\n\t_pxBoundsToTileRange: function (bounds) {\n\t\tvar tileSize = this.getTileSize();\n\t\treturn new Bounds(\n\t\t\tbounds.min.unscaleBy(tileSize).floor(),\n\t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n\t},\n\n\t_noTilesToLoad: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (!this._tiles[key].loaded) { return false; }\n\t\t}\n\t\treturn true;\n\t}\n});\n\n// @factory L.gridLayer(options?: GridLayer options)\n// Creates a new instance of GridLayer with the supplied options.\nexport function gridLayer(options) {\n\treturn new GridLayer(options);\n}\n","import {GridLayer} from './GridLayer';\r\nimport Browser from '../../core/Browser';\r\nimport * as Util from '../../core/Util';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\n\r\n\r\n/*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(map);\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"@2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\nexport var TileLayer = GridLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer options\r\n\toptions: {\r\n\t\t// @option minZoom: Number = 0\r\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n\t\tminZoom: 0,\r\n\r\n\t\t// @option maxZoom: Number = 18\r\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n\t\tmaxZoom: 18,\r\n\r\n\t\t// @option subdomains: String|String[] = 'abc'\r\n\t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n\t\tsubdomains: 'abc',\r\n\r\n\t\t// @option errorTileUrl: String = ''\r\n\t\t// URL to the tile image to show in place of the tile that failed to load.\r\n\t\terrorTileUrl: '',\r\n\r\n\t\t// @option zoomOffset: Number = 0\r\n\t\t// The zoom number used in tile URLs will be offset with this value.\r\n\t\tzoomOffset: 0,\r\n\r\n\t\t// @option tms: Boolean = false\r\n\t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n\t\ttms: false,\r\n\r\n\t\t// @option zoomReverse: Boolean = false\r\n\t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n\t\tzoomReverse: false,\r\n\r\n\t\t// @option detectRetina: Boolean = false\r\n\t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n\t\tdetectRetina: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option referrerPolicy: Boolean|String = false\r\n\t\t// Whether the referrerPolicy attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.\r\n\t\t// This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer\r\n\t\t// (e.g. to validate an API token).\r\n\t\t// Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.\r\n\t\treferrerPolicy: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n\t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n\t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n\t\t\tif (!options.zoomReverse) {\r\n\t\t\t\toptions.zoomOffset++;\r\n\t\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);\r\n\t\t\t} else {\r\n\t\t\t\toptions.zoomOffset--;\r\n\t\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom + 1);\r\n\t\t\t}\r\n\r\n\t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n\t\t} else if (!options.zoomReverse) {\r\n\t\t\t// make sure maxZoom is gte minZoom\r\n\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom);\r\n\t\t} else {\r\n\t\t\t// make sure minZoom is lte maxZoom\r\n\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom);\r\n\t\t}\r\n\r\n\t\tif (typeof options.subdomains === 'string') {\r\n\t\t\toptions.subdomains = options.subdomains.split('');\r\n\t\t}\r\n\r\n\t\tthis.on('tileunload', this._onTileRemove);\r\n\t},\r\n\r\n\t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n\t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n\t// If the URL does not change, the layer will not be redrawn unless\r\n\t// the noRedraw parameter is set to false.\r\n\tsetUrl: function (url, noRedraw) {\r\n\t\tif (this._url === url && noRedraw === undefined) {\r\n\t\t\tnoRedraw = true;\r\n\t\t}\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n\t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n\t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n\t// callback is called when the tile has been loaded.\r\n\tcreateTile: function (coords, done) {\r\n\t\tvar tile = document.createElement('img');\r\n\r\n\t\tDomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));\r\n\t\tDomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\t// for this new option we follow the documented behavior\r\n\t\t// more closely by only setting the property when string\r\n\t\tif (typeof this.options.referrerPolicy === 'string') {\r\n\t\t\ttile.referrerPolicy = this.options.referrerPolicy;\r\n\t\t}\r\n\r\n\t\t// The alt attribute is set to the empty string,\r\n\t\t// allowing screen readers to ignore the decorative image tiles.\r\n\t\t// https://www.w3.org/WAI/tutorials/images/decorative/\r\n\t\t// https://www.w3.org/TR/html-aria/#el-img-empty-alt\r\n\t\ttile.alt = '';\r\n\r\n\t\ttile.src = this.getTileUrl(coords);\r\n\r\n\t\treturn tile;\r\n\t},\r\n\r\n\t// @section Extension methods\r\n\t// @uninheritable\r\n\t// Layers extending `TileLayer` might reimplement the following method.\r\n\t// @method getTileUrl(coords: Object): String\r\n\t// Called only internally, returns the URL for a tile given its coordinates.\r\n\t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n\tgetTileUrl: function (coords) {\r\n\t\tvar data = {\r\n\t\t\tr: Browser.retina ? '@2x' : '',\r\n\t\t\ts: this._getSubdomain(coords),\r\n\t\t\tx: coords.x,\r\n\t\t\ty: coords.y,\r\n\t\t\tz: this._getZoomForUrl()\r\n\t\t};\r\n\t\tif (this._map && !this._map.options.crs.infinite) {\r\n\t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n\t\t\tif (this.options.tms) {\r\n\t\t\t\tdata['y'] = invertedY;\r\n\t\t\t}\r\n\t\t\tdata['-y'] = invertedY;\r\n\t\t}\r\n\r\n\t\treturn Util.template(this._url, Util.extend(data, this.options));\r\n\t},\r\n\r\n\t_tileOnLoad: function (done, tile) {\r\n\t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n\t\tif (Browser.ielt9) {\r\n\t\t\tsetTimeout(Util.bind(done, this, null, tile), 0);\r\n\t\t} else {\r\n\t\t\tdone(null, tile);\r\n\t\t}\r\n\t},\r\n\r\n\t_tileOnError: function (done, tile, e) {\r\n\t\tvar errorUrl = this.options.errorTileUrl;\r\n\t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n\t\t\ttile.src = errorUrl;\r\n\t\t}\r\n\t\tdone(e, tile);\r\n\t},\r\n\r\n\t_onTileRemove: function (e) {\r\n\t\te.tile.onload = null;\r\n\t},\r\n\r\n\t_getZoomForUrl: function () {\r\n\t\tvar zoom = this._tileZoom,\r\n\t\tmaxZoom = this.options.maxZoom,\r\n\t\tzoomReverse = this.options.zoomReverse,\r\n\t\tzoomOffset = this.options.zoomOffset;\r\n\r\n\t\tif (zoomReverse) {\r\n\t\t\tzoom = maxZoom - zoom;\r\n\t\t}\r\n\r\n\t\treturn zoom + zoomOffset;\r\n\t},\r\n\r\n\t_getSubdomain: function (tilePoint) {\r\n\t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n\t\treturn this.options.subdomains[index];\r\n\t},\r\n\r\n\t// stops loading all tiles in the background layer\r\n\t_abortLoading: function () {\r\n\t\tvar i, tile;\r\n\t\tfor (i in this._tiles) {\r\n\t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n\t\t\t\ttile = this._tiles[i].el;\r\n\r\n\t\t\t\ttile.onload = Util.falseFn;\r\n\t\t\t\ttile.onerror = Util.falseFn;\r\n\r\n\t\t\t\tif (!tile.complete) {\r\n\t\t\t\t\ttile.src = Util.emptyImageUrl;\r\n\t\t\t\t\tvar coords = this._tiles[i].coords;\r\n\t\t\t\t\tDomUtil.remove(tile);\r\n\t\t\t\t\tdelete this._tiles[i];\r\n\t\t\t\t\t// @event tileabort: TileEvent\r\n\t\t\t\t\t// Fired when a tile was loading but is now not wanted.\r\n\t\t\t\t\tthis.fire('tileabort', {\r\n\t\t\t\t\t\ttile: tile,\r\n\t\t\t\t\t\tcoords: coords\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_removeTile: function (key) {\r\n\t\tvar tile = this._tiles[key];\r\n\t\tif (!tile) { return; }\r\n\r\n\t\t// Cancels any pending http requests associated with the tile\r\n\t\ttile.el.setAttribute('src', Util.emptyImageUrl);\r\n\r\n\t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n\t},\r\n\r\n\t_tileReady: function (coords, err, tile) {\r\n\t\tif (!this._map || (tile && tile.getAttribute('src') === Util.emptyImageUrl)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n// Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\nexport function tileLayer(url, options) {\r\n\treturn new TileLayer(url, options);\r\n}\r\n","import {TileLayer} from './TileLayer';\r\nimport {extend, setOptions, getParamString} from '../../core/Util';\r\nimport Browser from '../../core/Browser';\r\nimport {EPSG4326} from '../../geo/crs/CRS.EPSG4326';\r\nimport {toBounds} from '../../geometry/Bounds';\r\n\r\n/*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\nexport var TileLayerWMS = TileLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer.WMS options\r\n\t// If any custom options not documented here are used, they will be sent to the\r\n\t// WMS server as extra parameters in each request URL. This can be useful for\r\n\t// [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n\tdefaultWmsParams: {\r\n\t\tservice: 'WMS',\r\n\t\trequest: 'GetMap',\r\n\r\n\t\t// @option layers: String = ''\r\n\t\t// **(required)** Comma-separated list of WMS layers to show.\r\n\t\tlayers: '',\r\n\r\n\t\t// @option styles: String = ''\r\n\t\t// Comma-separated list of WMS styles.\r\n\t\tstyles: '',\r\n\r\n\t\t// @option format: String = 'image/jpeg'\r\n\t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n\t\tformat: 'image/jpeg',\r\n\r\n\t\t// @option transparent: Boolean = false\r\n\t\t// If `true`, the WMS service will return images with transparency.\r\n\t\ttransparent: false,\r\n\r\n\t\t// @option version: String = '1.1.1'\r\n\t\t// Version of the WMS service to use\r\n\t\tversion: '1.1.1'\r\n\t},\r\n\r\n\toptions: {\r\n\t\t// @option crs: CRS = null\r\n\t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n\t\t// map CRS. Don't change this if you're not sure what it means.\r\n\t\tcrs: null,\r\n\r\n\t\t// @option uppercase: Boolean = false\r\n\t\t// If `true`, WMS request parameter keys will be uppercase.\r\n\t\tuppercase: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n\t\t// all keys that are not TileLayer options go to WMS params\r\n\t\tfor (var i in options) {\r\n\t\t\tif (!(i in this.options)) {\r\n\t\t\t\twmsParams[i] = options[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\tvar realRetina = options.detectRetina && Browser.retina ? 2 : 1;\r\n\t\tvar tileSize = this.getTileSize();\r\n\t\twmsParams.width = tileSize.x * realRetina;\r\n\t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n\t\tthis.wmsParams = wmsParams;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\r\n\t\tthis._crs = this.options.crs || map.options.crs;\r\n\t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n\t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n\t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n\t\tTileLayer.prototype.onAdd.call(this, map);\r\n\t},\r\n\r\n\tgetTileUrl: function (coords) {\r\n\r\n\t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n\t\t crs = this._crs,\r\n\t\t bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n\t\t min = bounds.min,\r\n\t\t max = bounds.max,\r\n\t\t bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n\t\t [min.y, min.x, max.y, max.x] :\r\n\t\t [min.x, min.y, max.x, max.y]).join(','),\r\n\t\t url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n\t\treturn url +\r\n\t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n\t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n\t},\r\n\r\n\t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n\t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n\tsetParams: function (params, noRedraw) {\r\n\r\n\t\textend(this.wmsParams, params);\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\nexport function tileLayerWMS(url, options) {\r\n\treturn new TileLayerWMS(url, options);\r\n}\r\n","export {GridLayer, gridLayer} from './GridLayer';\nimport {TileLayer, tileLayer} from './TileLayer';\nimport {TileLayerWMS, tileLayerWMS} from './TileLayer.WMS';\nTileLayer.WMS = TileLayerWMS;\ntileLayer.wms = tileLayerWMS;\nexport {TileLayer, tileLayer};\n","import {Layer} from '../Layer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n\n/*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\nexport var Renderer = Layer.extend({\n\n\t// @section\n\t// @aka Renderer options\n\toptions: {\n\t\t// @option padding: Number = 0.1\n\t\t// How much to extend the clip area around the map view (relative to its size)\n\t\t// e.g. 0.1 would be 10% of map view in each direction\n\t\tpadding: 0.1\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t\tUtil.stamp(this);\n\t\tthis._layers = this._layers || {};\n\t},\n\n\tonAdd: function () {\n\t\tif (!this._container) {\n\t\t\tthis._initContainer(); // defined by renderer implementations\n\n\t\t\tif (this._zoomAnimated) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-zoom-animated');\n\t\t\t}\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t\tthis._update();\n\t\tthis.on('update', this._updatePaths, this);\n\t},\n\n\tonRemove: function () {\n\t\tthis.off('update', this._updatePaths, this);\n\t\tthis._destroyContainer();\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewreset: this._reset,\n\t\t\tzoom: this._onZoom,\n\t\t\tmoveend: this._update,\n\t\t\tzoomend: this._onZoomEnd\n\t\t};\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._onAnimZoom;\n\t\t}\n\t\treturn events;\n\t},\n\n\t_onAnimZoom: function (ev) {\n\t\tthis._updateTransform(ev.center, ev.zoom);\n\t},\n\n\t_onZoom: function () {\n\t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t},\n\n\t_updateTransform: function (center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n\t\t viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n\t\t currentCenterPoint = this._map.project(this._center, zoom),\n\n\t\t topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint)\n\t\t\t\t .subtract(this._map._getNewPixelOrigin(center, zoom));\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(this._container, topLeftOffset, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(this._container, topLeftOffset);\n\t\t}\n\t},\n\n\t_reset: function () {\n\t\tthis._update();\n\t\tthis._updateTransform(this._center, this._zoom);\n\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._reset();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._project();\n\t\t}\n\t},\n\n\t_updatePaths: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._update();\n\t\t}\n\t},\n\n\t_update: function () {\n\t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n\t\t// Subclasses are responsible of firing the 'update' event.\n\t\tvar p = this.options.padding,\n\t\t size = this._map.getSize(),\n\t\t min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n\t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n\t\tthis._center = this._map.getCenter();\n\t\tthis._zoom = this._map.getZoom();\n\t}\n});\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var Canvas = Renderer.extend({\n\n\t// @section\n\t// @aka Canvas options\n\toptions: {\n\t\t// @option tolerance: Number = 0\n\t\t// How much to extend the click tolerance around a path/object on the map.\n\t\ttolerance: 0\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.viewprereset = this._onViewPreReset;\n\t\treturn events;\n\t},\n\n\t_onViewPreReset: function () {\n\t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n\t\tthis._postponeUpdatePaths = true;\n\t},\n\n\tonAdd: function () {\n\t\tRenderer.prototype.onAdd.call(this);\n\n\t\t// Redraw vectors since canvas is cleared upon removal,\n\t\t// in case of removing the renderer itself from the map.\n\t\tthis._draw();\n\t},\n\n\t_initContainer: function () {\n\t\tvar container = this._container = document.createElement('canvas');\n\n\t\tDomEvent.on(container, 'mousemove', this._onMouseMove, this);\n\t\tDomEvent.on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n\t\tDomEvent.on(container, 'mouseout', this._handleMouseOut, this);\n\t\tcontainer['_leaflet_disable_events'] = true;\n\n\t\tthis._ctx = container.getContext('2d');\n\t},\n\n\t_destroyContainer: function () {\n\t\tUtil.cancelAnimFrame(this._redrawRequest);\n\t\tdelete this._ctx;\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t},\n\n\t_updatePaths: function () {\n\t\tif (this._postponeUpdatePaths) { return; }\n\n\t\tvar layer;\n\t\tthis._redrawBounds = null;\n\t\tfor (var id in this._layers) {\n\t\t\tlayer = this._layers[id];\n\t\t\tlayer._update();\n\t\t}\n\t\tthis._redraw();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t container = this._container,\n\t\t size = b.getSize(),\n\t\t m = Browser.retina ? 2 : 1;\n\n\t\tDomUtil.setPosition(container, b.min);\n\n\t\t// set canvas size (also clearing it); use double size on retina\n\t\tcontainer.width = m * size.x;\n\t\tcontainer.height = m * size.y;\n\t\tcontainer.style.width = size.x + 'px';\n\t\tcontainer.style.height = size.y + 'px';\n\n\t\tif (Browser.retina) {\n\t\t\tthis._ctx.scale(2, 2);\n\t\t}\n\n\t\t// translate so we use the same path coordinates after canvas element moves\n\t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n\t\t// Tell paths to redraw themselves\n\t\tthis.fire('update');\n\t},\n\n\t_reset: function () {\n\t\tRenderer.prototype._reset.call(this);\n\n\t\tif (this._postponeUpdatePaths) {\n\t\t\tthis._postponeUpdatePaths = false;\n\t\t\tthis._updatePaths();\n\t\t}\n\t},\n\n\t_initPath: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\n\t\tvar order = layer._order = {\n\t\t\tlayer: layer,\n\t\t\tprev: this._drawLast,\n\t\t\tnext: null\n\t\t};\n\t\tif (this._drawLast) { this._drawLast.next = order; }\n\t\tthis._drawLast = order;\n\t\tthis._drawFirst = this._drawFirst || this._drawLast;\n\t},\n\n\t_addPath: function (layer) {\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar order = layer._order;\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\tthis._drawLast = prev;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\tdelete layer._order;\n\n\t\tdelete this._layers[Util.stamp(layer)];\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updatePath: function (layer) {\n\t\t// Redraw the union of the layer's old pixel\n\t\t// bounds and the new pixel bounds.\n\t\tthis._extendRedrawBounds(layer);\n\t\tlayer._project();\n\t\tlayer._update();\n\t\t// The redraw will extend the redraw bounds\n\t\t// with the new pixel bounds.\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateDashArray: function (layer) {\n\t\tif (typeof layer.options.dashArray === 'string') {\n\t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n\t\t\t dashArray = [],\n\t\t\t dashValue,\n\t\t\t i;\n\t\t\tfor (i = 0; i < parts.length; i++) {\n\t\t\t\tdashValue = Number(parts[i]);\n\t\t\t\t// Ignore dash array containing invalid lengths\n\t\t\t\tif (isNaN(dashValue)) { return; }\n\t\t\t\tdashArray.push(dashValue);\n\t\t\t}\n\t\t\tlayer.options._dashArray = dashArray;\n\t\t} else {\n\t\t\tlayer.options._dashArray = layer.options.dashArray;\n\t\t}\n\t},\n\n\t_requestRedraw: function (layer) {\n\t\tif (!this._map) { return; }\n\n\t\tthis._extendRedrawBounds(layer);\n\t\tthis._redrawRequest = this._redrawRequest || Util.requestAnimFrame(this._redraw, this);\n\t},\n\n\t_extendRedrawBounds: function (layer) {\n\t\tif (layer._pxBounds) {\n\t\t\tvar padding = (layer.options.weight || 0) + 1;\n\t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n\t\t}\n\t},\n\n\t_redraw: function () {\n\t\tthis._redrawRequest = null;\n\n\t\tif (this._redrawBounds) {\n\t\t\tthis._redrawBounds.min._floor();\n\t\t\tthis._redrawBounds.max._ceil();\n\t\t}\n\n\t\tthis._clear(); // clear layers in redraw bounds\n\t\tthis._draw(); // draw layers\n\n\t\tthis._redrawBounds = null;\n\t},\n\n\t_clear: function () {\n\t\tvar bounds = this._redrawBounds;\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t} else {\n\t\t\tthis._ctx.save();\n\t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n\t\t\tthis._ctx.restore();\n\t\t}\n\t},\n\n\t_draw: function () {\n\t\tvar layer, bounds = this._redrawBounds;\n\t\tthis._ctx.save();\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.beginPath();\n\t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t\tthis._ctx.clip();\n\t\t}\n\n\t\tthis._drawing = true;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n\t\t\t\tlayer._updatePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._drawing = false;\n\n\t\tthis._ctx.restore(); // Restore state before clipping.\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tif (!this._drawing) { return; }\n\n\t\tvar i, j, len2, p,\n\t\t parts = layer._parts,\n\t\t len = parts.length,\n\t\t ctx = this._ctx;\n\n\t\tif (!len) { return; }\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n\t\t\t\tp = parts[i][j];\n\t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tctx.closePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\n\t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n\t},\n\n\t_updateCircle: function (layer) {\n\n\t\tif (!this._drawing || layer._empty()) { return; }\n\n\t\tvar p = layer._point,\n\t\t ctx = this._ctx,\n\t\t r = Math.max(Math.round(layer._radius), 1),\n\t\t s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n\t\tif (s !== 1) {\n\t\t\tctx.save();\n\t\t\tctx.scale(1, s);\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n\t\tif (s !== 1) {\n\t\t\tctx.restore();\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\t},\n\n\t_fillStroke: function (ctx, layer) {\n\t\tvar options = layer.options;\n\n\t\tif (options.fill) {\n\t\t\tctx.globalAlpha = options.fillOpacity;\n\t\t\tctx.fillStyle = options.fillColor || options.color;\n\t\t\tctx.fill(options.fillRule || 'evenodd');\n\t\t}\n\n\t\tif (options.stroke && options.weight !== 0) {\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n\t\t\t}\n\t\t\tctx.globalAlpha = options.opacity;\n\t\t\tctx.lineWidth = options.weight;\n\t\t\tctx.strokeStyle = options.color;\n\t\t\tctx.lineCap = options.lineCap;\n\t\t\tctx.lineJoin = options.lineJoin;\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t// Canvas obviously doesn't have mouse events for individual drawn objects,\n\t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n\t_onClick: function (e) {\n\t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tif (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {\n\t\t\t\t\tclickedLayer = layer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._fireEvent(clickedLayer ? [clickedLayer] : false, e);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n\t\tvar point = this._map.mouseEventToLayerPoint(e);\n\t\tthis._handleMouseHover(e, point);\n\t},\n\n\n\t_handleMouseOut: function (e) {\n\t\tvar layer = this._hoveredLayer;\n\t\tif (layer) {\n\t\t\t// if we're leaving the layer, fire mouseout\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\n\t\t\tthis._fireEvent([layer], e, 'mouseout');\n\t\t\tthis._hoveredLayer = null;\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}\n\t},\n\n\t_handleMouseHover: function (e, point) {\n\t\tif (this._mouseHoverThrottled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layer, candidateHoveredLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tcandidateHoveredLayer = layer;\n\t\t\t}\n\t\t}\n\n\t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n\t\t\tthis._handleMouseOut(e);\n\n\t\t\tif (candidateHoveredLayer) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive'); // change cursor\n\t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n\t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n\t\t\t}\n\t\t}\n\n\t\tthis._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);\n\n\t\tthis._mouseHoverThrottled = true;\n\t\tsetTimeout(Util.bind(function () {\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}, this), 32);\n\t},\n\n\t_fireEvent: function (layers, e, type) {\n\t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\t// Already last\n\t\t\treturn;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else if (next) {\n\t\t\t// Update first entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\torder.prev = this._drawLast;\n\t\tthis._drawLast.next = order;\n\n\t\torder.next = null;\n\t\tthis._drawLast = order;\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\t// Already first\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else if (prev) {\n\t\t\t// Update last entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawLast = prev;\n\t\t}\n\n\t\torder.prev = null;\n\n\t\torder.next = this._drawFirst;\n\t\tthis._drawFirst.prev = order;\n\t\tthis._drawFirst = order;\n\n\t\tthis._requestRedraw(layer);\n\t}\n});\n\n// @factory L.canvas(options?: Renderer options)\n// Creates a Canvas renderer with the given options.\nexport function canvas(options) {\n\treturn Browser.canvas ? new Canvas(options) : null;\n}\n","import * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport {Renderer} from './Renderer';\n\n/*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\nexport var vmlCreate = (function () {\n\ttry {\n\t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n\t\t};\n\t} catch (e) {\n\t\t// Do not return fn from catch block so `e` can be garbage collected\n\t\t// See https://github.com/Leaflet/Leaflet/pull/7279\n\t}\n\treturn function (name) {\n\t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n\t};\n})();\n\n\n/*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\nexport var vmlMixin = {\n\n\t_initContainer: function () {\n\t\tthis._container = DomUtil.create('div', 'leaflet-vml-container');\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom) { return; }\n\t\tRenderer.prototype._update.call(this);\n\t\tthis.fire('update');\n\t},\n\n\t_initPath: function (layer) {\n\t\tvar container = layer._container = vmlCreate('shape');\n\n\t\tDomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n\t\tcontainer.coordsize = '1 1';\n\n\t\tlayer._path = vmlCreate('path');\n\t\tcontainer.appendChild(layer._path);\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tvar container = layer._container;\n\t\tthis._container.appendChild(container);\n\n\t\tif (layer.options.interactive) {\n\t\t\tlayer.addInteractiveTarget(container);\n\t\t}\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar container = layer._container;\n\t\tDomUtil.remove(container);\n\t\tlayer.removeInteractiveTarget(container);\n\t\tdelete this._layers[Util.stamp(layer)];\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar stroke = layer._stroke,\n\t\t fill = layer._fill,\n\t\t options = layer.options,\n\t\t container = layer._container;\n\n\t\tcontainer.stroked = !!options.stroke;\n\t\tcontainer.filled = !!options.fill;\n\n\t\tif (options.stroke) {\n\t\t\tif (!stroke) {\n\t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n\t\t\t}\n\t\t\tcontainer.appendChild(stroke);\n\t\t\tstroke.weight = options.weight + 'px';\n\t\t\tstroke.color = options.color;\n\t\t\tstroke.opacity = options.opacity;\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tstroke.dashStyle = Util.isArray(options.dashArray) ?\n\t\t\t\t options.dashArray.join(' ') :\n\t\t\t\t options.dashArray.replace(/( *, *)/g, ' ');\n\t\t\t} else {\n\t\t\t\tstroke.dashStyle = '';\n\t\t\t}\n\t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n\t\t\tstroke.joinstyle = options.lineJoin;\n\n\t\t} else if (stroke) {\n\t\t\tcontainer.removeChild(stroke);\n\t\t\tlayer._stroke = null;\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tif (!fill) {\n\t\t\t\tfill = layer._fill = vmlCreate('fill');\n\t\t\t}\n\t\t\tcontainer.appendChild(fill);\n\t\t\tfill.color = options.fillColor || options.color;\n\t\t\tfill.opacity = options.fillOpacity;\n\n\t\t} else if (fill) {\n\t\t\tcontainer.removeChild(fill);\n\t\t\tlayer._fill = null;\n\t\t}\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point.round(),\n\t\t r = Math.round(layer._radius),\n\t\t r2 = Math.round(layer._radiusY || r);\n\n\t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n\t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.v = path;\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._container);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._container);\n\t}\n};\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport {stamp} from '../../core/Util';\nimport {svgCreate, pointsToPath} from './SVG.Util';\nexport {pointsToPath};\nimport {vmlMixin, vmlCreate} from './SVG.VML';\n\nexport var create = Browser.vml ? vmlCreate : svgCreate;\n\n/*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var SVG = Renderer.extend({\n\n\t_initContainer: function () {\n\t\tthis._container = create('svg');\n\n\t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n\t\tthis._container.setAttribute('pointer-events', 'none');\n\n\t\tthis._rootGroup = create('g');\n\t\tthis._container.appendChild(this._rootGroup);\n\t},\n\n\t_destroyContainer: function () {\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t\tdelete this._rootGroup;\n\t\tdelete this._svgSize;\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t size = b.getSize(),\n\t\t container = this._container;\n\n\t\t// set size of svg-container if changed\n\t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n\t\t\tthis._svgSize = size;\n\t\t\tcontainer.setAttribute('width', size.x);\n\t\t\tcontainer.setAttribute('height', size.y);\n\t\t}\n\n\t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n\t\tDomUtil.setPosition(container, b.min);\n\t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n\t\tthis.fire('update');\n\t},\n\n\t// methods below are called by vector layers implementations\n\n\t_initPath: function (layer) {\n\t\tvar path = layer._path = create('path');\n\n\t\t// @namespace Path\n\t\t// @option className: String = null\n\t\t// Custom class name set on an element. Only for SVG renderer.\n\t\tif (layer.options.className) {\n\t\t\tDomUtil.addClass(path, layer.options.className);\n\t\t}\n\n\t\tif (layer.options.interactive) {\n\t\t\tDomUtil.addClass(path, 'leaflet-interactive');\n\t\t}\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tif (!this._rootGroup) { this._initContainer(); }\n\t\tthis._rootGroup.appendChild(layer._path);\n\t\tlayer.addInteractiveTarget(layer._path);\n\t},\n\n\t_removePath: function (layer) {\n\t\tDomUtil.remove(layer._path);\n\t\tlayer.removeInteractiveTarget(layer._path);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updatePath: function (layer) {\n\t\tlayer._project();\n\t\tlayer._update();\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar path = layer._path,\n\t\t options = layer.options;\n\n\t\tif (!path) { return; }\n\n\t\tif (options.stroke) {\n\t\t\tpath.setAttribute('stroke', options.color);\n\t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n\t\t\tpath.setAttribute('stroke-width', options.weight);\n\t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n\t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dasharray');\n\t\t\t}\n\n\t\t\tif (options.dashOffset) {\n\t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dashoffset');\n\t\t\t}\n\t\t} else {\n\t\t\tpath.setAttribute('stroke', 'none');\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n\t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n\t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n\t\t} else {\n\t\t\tpath.setAttribute('fill', 'none');\n\t\t}\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point,\n\t\t r = Math.max(Math.round(layer._radius), 1),\n\t\t r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n\t\t arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n\t\t// drawing a circle with two half-arcs\n\t\tvar d = layer._empty() ? 'M0 0' :\n\t\t\t'M' + (p.x - r) + ',' + p.y +\n\t\t\tarc + (r * 2) + ',0 ' +\n\t\t\tarc + (-r * 2) + ',0 ';\n\n\t\tthis._setPath(layer, d);\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.setAttribute('d', path);\n\t},\n\n\t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._path);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._path);\n\t}\n});\n\nif (Browser.vml) {\n\tSVG.include(vmlMixin);\n}\n\n// @namespace SVG\n// @factory L.svg(options?: Renderer options)\n// Creates a SVG renderer with the given options.\nexport function svg(options) {\n\treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n}\n","import {Map} from '../../map/Map';\nimport {canvas} from './Canvas';\nimport {svg} from './SVG';\n\nMap.include({\n\t// @namespace Map; @method getRenderer(layer: Path): Renderer\n\t// Returns the instance of `Renderer` that should be used to render the given\n\t// `Path`. It will ensure that the `renderer` options of the map and paths\n\t// are respected, and that the renderers do exist on the map.\n\tgetRenderer: function (layer) {\n\t\t// @namespace Path; @option renderer: Renderer\n\t\t// Use this specific instance of `Renderer` for this path. Takes\n\t\t// precedence over the map's [default renderer](#map-renderer).\n\t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n\t\tif (!renderer) {\n\t\t\trenderer = this._renderer = this._createRenderer();\n\t\t}\n\n\t\tif (!this.hasLayer(renderer)) {\n\t\t\tthis.addLayer(renderer);\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_getPaneRenderer: function (name) {\n\t\tif (name === 'overlayPane' || name === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar renderer = this._paneRenderers[name];\n\t\tif (renderer === undefined) {\n\t\t\trenderer = this._createRenderer({pane: name});\n\t\t\tthis._paneRenderers[name] = renderer;\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_createRenderer: function (options) {\n\t\t// @namespace Map; @option preferCanvas: Boolean = false\n\t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n\t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n\t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n\t}\n});\n","import {Polygon} from './Polygon';\nimport {toLatLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n/*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\nexport var Rectangle = Polygon.extend({\n\tinitialize: function (latLngBounds, options) {\n\t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n\t},\n\n\t// @method setBounds(latLngBounds: LatLngBounds): this\n\t// Redraws the rectangle with the passed bounds.\n\tsetBounds: function (latLngBounds) {\n\t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n\t},\n\n\t_boundsToLatLngs: function (latLngBounds) {\n\t\tlatLngBounds = toLatLngBounds(latLngBounds);\n\t\treturn [\n\t\t\tlatLngBounds.getSouthWest(),\n\t\t\tlatLngBounds.getNorthWest(),\n\t\t\tlatLngBounds.getNorthEast(),\n\t\t\tlatLngBounds.getSouthEast()\n\t\t];\n\t}\n});\n\n\n// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\nexport function rectangle(latLngBounds, options) {\n\treturn new Rectangle(latLngBounds, options);\n}\n","export {Renderer} from './Renderer';\nexport {Canvas, canvas} from './Canvas';\nimport {SVG, create, pointsToPath, svg} from './SVG';\nSVG.create = create;\nSVG.pointsToPath = pointsToPath;\nexport {SVG, svg};\nimport './Renderer.getRenderer';\t// This is a bit of a hack, but needed because circular dependencies\n\nexport {Path} from './Path';\nexport {CircleMarker, circleMarker} from './CircleMarker';\nexport {Circle, circle} from './Circle';\nexport {Polyline, polyline} from './Polyline';\nexport {Polygon, polygon} from './Polygon';\nexport {Rectangle, rectangle} from './Rectangle';\n","export {Layer} from './Layer';\nexport {LayerGroup, layerGroup} from './LayerGroup';\nexport {FeatureGroup, featureGroup} from './FeatureGroup';\nimport {GeoJSON, geoJSON, geoJson, geometryToLayer, coordsToLatLng, coordsToLatLngs, latLngToCoords, latLngsToCoords, getFeature, asFeature} from './GeoJSON';\nGeoJSON.geometryToLayer = geometryToLayer;\nGeoJSON.coordsToLatLng = coordsToLatLng;\nGeoJSON.coordsToLatLngs = coordsToLatLngs;\nGeoJSON.latLngToCoords = latLngToCoords;\nGeoJSON.latLngsToCoords = latLngsToCoords;\nGeoJSON.getFeature = getFeature;\nGeoJSON.asFeature = asFeature;\nexport {GeoJSON, geoJSON, geoJson};\n\nexport {ImageOverlay, imageOverlay} from './ImageOverlay';\nexport {VideoOverlay, videoOverlay} from './VideoOverlay';\nexport {SVGOverlay, svgOverlay} from './SVGOverlay';\n\nexport {DivOverlay} from './DivOverlay';\nexport {Popup, popup} from './Popup';\nexport {Tooltip, tooltip} from './Tooltip';\n\nexport * from './marker/index';\nexport * from './tile/index';\nexport * from './vector/index';\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option boxZoom: Boolean = true\n\t// Whether the map can be zoomed to a rectangular area specified by\n\t// dragging the mouse while pressing the shift key.\n\tboxZoom: true\n});\n\nexport var BoxZoom = Handler.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = map._container;\n\t\tthis._pane = map._panes.overlayPane;\n\t\tthis._resetStateTimeout = 0;\n\t\tmap.on('unload', this._destroy, this);\n\t},\n\n\taddHooks: function () {\n\t\tDomEvent.on(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tmoved: function () {\n\t\treturn this._moved;\n\t},\n\n\t_destroy: function () {\n\t\tDomUtil.remove(this._pane);\n\t\tdelete this._pane;\n\t},\n\n\t_resetState: function () {\n\t\tthis._resetStateTimeout = 0;\n\t\tthis._moved = false;\n\t},\n\n\t_clearDeferredResetState: function () {\n\t\tif (this._resetStateTimeout !== 0) {\n\t\t\tclearTimeout(this._resetStateTimeout);\n\t\t\tthis._resetStateTimeout = 0;\n\t\t}\n\t},\n\n\t_onMouseDown: function (e) {\n\t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n\t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n\t\t// will interrupt the interaction and orphan a box element in the container.\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetState();\n\n\t\tDomUtil.disableTextSelection();\n\t\tDomUtil.disableImageDrag();\n\n\t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n\t\tDomEvent.on(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._moved) {\n\t\t\tthis._moved = true;\n\n\t\t\tthis._box = DomUtil.create('div', 'leaflet-zoom-box', this._container);\n\t\t\tDomUtil.addClass(this._container, 'leaflet-crosshair');\n\n\t\t\tthis._map.fire('boxzoomstart');\n\t\t}\n\n\t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n\t\tvar bounds = new Bounds(this._point, this._startPoint),\n\t\t size = bounds.getSize();\n\n\t\tDomUtil.setPosition(this._box, bounds.min);\n\n\t\tthis._box.style.width = size.x + 'px';\n\t\tthis._box.style.height = size.y + 'px';\n\t},\n\n\t_finish: function () {\n\t\tif (this._moved) {\n\t\t\tDomUtil.remove(this._box);\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-crosshair');\n\t\t}\n\n\t\tDomUtil.enableTextSelection();\n\t\tDomUtil.enableImageDrag();\n\n\t\tDomEvent.off(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseUp: function (e) {\n\t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n\t\tthis._finish();\n\n\t\tif (!this._moved) { return; }\n\t\t// Postpone to next JS tick so internal click event handling\n\t\t// still see it as \"moved\".\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetStateTimeout = setTimeout(Util.bind(this._resetState, this), 0);\n\n\t\tvar bounds = new LatLngBounds(\n\t\t this._map.containerPointToLatLng(this._startPoint),\n\t\t this._map.containerPointToLatLng(this._point));\n\n\t\tthis._map\n\t\t\t.fitBounds(bounds)\n\t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.keyCode === 27) {\n\t\t\tthis._finish();\n\t\t\tthis._clearDeferredResetState();\n\t\t\tthis._resetState();\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property boxZoom: Handler\n// Box (shift-drag with mouse) zoom handler.\nMap.addInitHook('addHandler', 'boxZoom', BoxZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\n\n/*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\n\nMap.mergeOptions({\n\t// @option doubleClickZoom: Boolean|String = true\n\t// Whether the map can be zoomed in by double clicking on it and\n\t// zoomed out by double clicking while holding shift. If passed\n\t// `'center'`, double-click zoom will zoom to the center of the\n\t// view regardless of where the mouse was.\n\tdoubleClickZoom: true\n});\n\nexport var DoubleClickZoom = Handler.extend({\n\taddHooks: function () {\n\t\tthis._map.on('dblclick', this._onDoubleClick, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._map.off('dblclick', this._onDoubleClick, this);\n\t},\n\n\t_onDoubleClick: function (e) {\n\t\tvar map = this._map,\n\t\t oldZoom = map.getZoom(),\n\t\t delta = map.options.zoomDelta,\n\t\t zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n\t\tif (map.options.doubleClickZoom === 'center') {\n\t\t\tmap.setZoom(zoom);\n\t\t} else {\n\t\t\tmap.setZoomAround(e.containerPoint, zoom);\n\t\t}\n\t}\n});\n\n// @section Handlers\n//\n// Map properties include interaction handlers that allow you to control\n// interaction behavior in runtime, enabling or disabling certain features such\n// as dragging or touch zoom (see `Handler` methods). For example:\n//\n// ```js\n// map.doubleClickZoom.disable();\n// ```\n//\n// @property doubleClickZoom: Handler\n// Double click zoom handler.\nMap.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {Draggable} from '../../dom/Draggable';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\nimport {toBounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option dragging: Boolean = true\n\t// Whether the map is draggable with mouse/touch or not.\n\tdragging: true,\n\n\t// @section Panning Inertia Options\n\t// @option inertia: Boolean = *\n\t// If enabled, panning of the map will have an inertia effect where\n\t// the map builds momentum while dragging and continues moving in\n\t// the same direction for some time. Feels especially nice on touch\n\t// devices. Enabled by default.\n\tinertia: true,\n\n\t// @option inertiaDeceleration: Number = 3000\n\t// The rate with which the inertial movement slows down, in pixels/second².\n\tinertiaDeceleration: 3400, // px/s^2\n\n\t// @option inertiaMaxSpeed: Number = Infinity\n\t// Max speed of the inertial movement, in pixels/second.\n\tinertiaMaxSpeed: Infinity, // px/s\n\n\t// @option easeLinearity: Number = 0.2\n\teaseLinearity: 0.2,\n\n\t// TODO refactor, move to CRS\n\t// @option worldCopyJump: Boolean = false\n\t// With this option enabled, the map tracks when you pan to another \"copy\"\n\t// of the world and seamlessly jumps to the original one so that all overlays\n\t// like markers and vector layers are still visible.\n\tworldCopyJump: false,\n\n\t// @option maxBoundsViscosity: Number = 0.0\n\t// If `maxBounds` is set, this option will control how solid the bounds\n\t// are when dragging the map around. The default value of `0.0` allows the\n\t// user to drag outside the bounds at normal speed, higher values will\n\t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n\t// solid, preventing the user from dragging outside the bounds.\n\tmaxBoundsViscosity: 0.0\n});\n\nexport var Drag = Handler.extend({\n\taddHooks: function () {\n\t\tif (!this._draggable) {\n\t\t\tvar map = this._map;\n\n\t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n\t\t\tthis._draggable.on({\n\t\t\t\tdragstart: this._onDragStart,\n\t\t\t\tdrag: this._onDrag,\n\t\t\t\tdragend: this._onDragEnd\n\t\t\t}, this);\n\n\t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n\t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n\t\t\t\tmap.whenReady(this._onZoomEnd, this);\n\t\t\t}\n\t\t}\n\t\tDomUtil.addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n\t\tthis._draggable.enable();\n\t\tthis._positions = [];\n\t\tthis._times = [];\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-grab');\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-drag');\n\t\tthis._draggable.disable();\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\tmoving: function () {\n\t\treturn this._draggable && this._draggable._moving;\n\t},\n\n\t_onDragStart: function () {\n\t\tvar map = this._map;\n\n\t\tmap._stop();\n\t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n\t\t\tvar bounds = latLngBounds(this._map.options.maxBounds);\n\n\t\t\tthis._offsetLimit = toBounds(\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n\t\t\t\t\t.add(this._map.getSize()));\n\n\t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n\t\t} else {\n\t\t\tthis._offsetLimit = null;\n\t\t}\n\n\t\tmap\n\t\t .fire('movestart')\n\t\t .fire('dragstart');\n\n\t\tif (map.options.inertia) {\n\t\t\tthis._positions = [];\n\t\t\tthis._times = [];\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tif (this._map.options.inertia) {\n\t\t\tvar time = this._lastTime = +new Date(),\n\t\t\t pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n\t\t\tthis._positions.push(pos);\n\t\t\tthis._times.push(time);\n\n\t\t\tthis._prunePositions(time);\n\t\t}\n\n\t\tthis._map\n\t\t .fire('move', e)\n\t\t .fire('drag', e);\n\t},\n\n\t_prunePositions: function (time) {\n\t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n\t\t\tthis._positions.shift();\n\t\t\tthis._times.shift();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tvar pxCenter = this._map.getSize().divideBy(2),\n\t\t pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n\t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n\t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n\t},\n\n\t_viscousLimit: function (value, threshold) {\n\t\treturn value - (value - threshold) * this._viscosity;\n\t},\n\n\t_onPreDragLimit: function () {\n\t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n\t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n\t\tvar limit = this._offsetLimit;\n\t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n\t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n\t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n\t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n\t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n\t},\n\n\t_onPreDragWrap: function () {\n\t\t// TODO refactor to be able to adjust map pane position after zoom\n\t\tvar worldWidth = this._worldWidth,\n\t\t halfWidth = Math.round(worldWidth / 2),\n\t\t dx = this._initialWorldOffset,\n\t\t x = this._draggable._newPos.x,\n\t\t newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n\t\t newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n\t\t newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n\t\tthis._draggable._absPos = this._draggable._newPos.clone();\n\t\tthis._draggable._newPos.x = newX;\n\t},\n\n\t_onDragEnd: function (e) {\n\t\tvar map = this._map,\n\t\t options = map.options,\n\n\t\t noInertia = !options.inertia || e.noInertia || this._times.length < 2;\n\n\t\tmap.fire('dragend', e);\n\n\t\tif (noInertia) {\n\t\t\tmap.fire('moveend');\n\n\t\t} else {\n\t\t\tthis._prunePositions(+new Date());\n\n\t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n\t\t\t duration = (this._lastTime - this._times[0]) / 1000,\n\t\t\t ease = options.easeLinearity,\n\n\t\t\t speedVector = direction.multiplyBy(ease / duration),\n\t\t\t speed = speedVector.distanceTo([0, 0]),\n\n\t\t\t limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n\t\t\t limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n\t\t\t decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n\t\t\t offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n\t\t\tif (!offset.x && !offset.y) {\n\t\t\t\tmap.fire('moveend');\n\n\t\t\t} else {\n\t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n\t\t\t\tUtil.requestAnimFrame(function () {\n\t\t\t\t\tmap.panBy(offset, {\n\t\t\t\t\t\tduration: decelerationDuration,\n\t\t\t\t\t\teaseLinearity: ease,\n\t\t\t\t\t\tnoMoveStart: true,\n\t\t\t\t\t\tanimate: true\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property dragging: Handler\n// Map dragging handler (by both mouse and touch).\nMap.addInitHook('addHandler', 'dragging', Drag);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {on, off, stop} from '../../dom/DomEvent';\nimport {toPoint} from '../../geometry/Point';\n\n\n/*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n// @namespace Map\n// @section Keyboard Navigation Options\nMap.mergeOptions({\n\t// @option keyboard: Boolean = true\n\t// Makes the map focusable and allows users to navigate the map with keyboard\n\t// arrows and `+`/`-` keys.\n\tkeyboard: true,\n\n\t// @option keyboardPanDelta: Number = 80\n\t// Amount of pixels to pan when pressing an arrow key.\n\tkeyboardPanDelta: 80\n});\n\nexport var Keyboard = Handler.extend({\n\n\tkeyCodes: {\n\t\tleft: [37],\n\t\tright: [39],\n\t\tdown: [40],\n\t\tup: [38],\n\t\tzoomIn: [187, 107, 61, 171],\n\t\tzoomOut: [189, 109, 54, 173]\n\t},\n\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\n\t\tthis._setPanDelta(map.options.keyboardPanDelta);\n\t\tthis._setZoomDelta(map.options.zoomDelta);\n\t},\n\n\taddHooks: function () {\n\t\tvar container = this._map._container;\n\n\t\t// make the container focusable by tabbing\n\t\tif (container.tabIndex <= 0) {\n\t\t\tcontainer.tabIndex = '0';\n\t\t}\n\n\t\ton(container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.on({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._removeHooks();\n\n\t\toff(this._map._container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.off({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\t_onMouseDown: function () {\n\t\tif (this._focused) { return; }\n\n\t\tvar body = document.body,\n\t\t docEl = document.documentElement,\n\t\t top = body.scrollTop || docEl.scrollTop,\n\t\t left = body.scrollLeft || docEl.scrollLeft;\n\n\t\tthis._map._container.focus();\n\n\t\twindow.scrollTo(left, top);\n\t},\n\n\t_onFocus: function () {\n\t\tthis._focused = true;\n\t\tthis._map.fire('focus');\n\t},\n\n\t_onBlur: function () {\n\t\tthis._focused = false;\n\t\tthis._map.fire('blur');\n\t},\n\n\t_setPanDelta: function (panDelta) {\n\t\tvar keys = this._panKeys = {},\n\t\t codes = this.keyCodes,\n\t\t i, len;\n\n\t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n\t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n\t\t\tkeys[codes.right[i]] = [panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n\t\t\tkeys[codes.down[i]] = [0, panDelta];\n\t\t}\n\t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n\t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n\t\t}\n\t},\n\n\t_setZoomDelta: function (zoomDelta) {\n\t\tvar keys = this._zoomKeys = {},\n\t\t codes = this.keyCodes,\n\t\t i, len;\n\n\t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n\t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n\t\t}\n\t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n\t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n\t\t}\n\t},\n\n\t_addHooks: function () {\n\t\ton(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_removeHooks: function () {\n\t\toff(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n\t\tvar key = e.keyCode,\n\t\t map = this._map,\n\t\t offset;\n\n\t\tif (key in this._panKeys) {\n\t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n\t\t\t\toffset = this._panKeys[key];\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n\t\t\t\t}\n\n\t\t\t\tmap.panBy(offset);\n\n\t\t\t\tif (map.options.maxBounds) {\n\t\t\t\t\tmap.panInsideBounds(map.options.maxBounds);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (key in this._zoomKeys) {\n\t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n\t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n\t\t\tmap.closePopup();\n\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tstop(e);\n\t}\n});\n\n// @section Handlers\n// @section Handlers\n// @property keyboard: Handler\n// Keyboard navigation handler.\nMap.addInitHook('addHandler', 'keyboard', Keyboard);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\n\n/*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Mouse wheel options\n\t// @option scrollWheelZoom: Boolean|String = true\n\t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n\t// it will zoom to the center of the view regardless of where the mouse was.\n\tscrollWheelZoom: true,\n\n\t// @option wheelDebounceTime: Number = 40\n\t// Limits the rate at which a wheel can fire (in milliseconds). By default\n\t// user can't zoom via wheel more often than once per 40 ms.\n\twheelDebounceTime: 40,\n\n\t// @option wheelPxPerZoomLevel: Number = 60\n\t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n\t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n\t// faster (and vice versa).\n\twheelPxPerZoomLevel: 60\n});\n\nexport var ScrollWheelZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'wheel', this._onWheelScroll, this);\n\n\t\tthis._delta = 0;\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'wheel', this._onWheelScroll, this);\n\t},\n\n\t_onWheelScroll: function (e) {\n\t\tvar delta = DomEvent.getWheelDelta(e);\n\n\t\tvar debounce = this._map.options.wheelDebounceTime;\n\n\t\tthis._delta += delta;\n\t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n\t\tif (!this._startTime) {\n\t\t\tthis._startTime = +new Date();\n\t\t}\n\n\t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n\t\tclearTimeout(this._timer);\n\t\tthis._timer = setTimeout(Util.bind(this._performZoom, this), left);\n\n\t\tDomEvent.stop(e);\n\t},\n\n\t_performZoom: function () {\n\t\tvar map = this._map,\n\t\t zoom = map.getZoom(),\n\t\t snap = this._map.options.zoomSnap || 0;\n\n\t\tmap._stop(); // stop panning and fly animations if any\n\n\t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n\t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n\t\t d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n\t\t d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n\t\t delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n\t\tthis._delta = 0;\n\t\tthis._startTime = null;\n\n\t\tif (!delta) { return; }\n\n\t\tif (map.options.scrollWheelZoom === 'center') {\n\t\t\tmap.setZoom(zoom + delta);\n\t\t} else {\n\t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property scrollWheelZoom: Handler\n// Scroll wheel zoom handler.\nMap.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {Point} from '../../geometry/Point';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Map.TapHold is used to simulate `contextmenu` event on long hold,\n * which otherwise is not fired by mobile Safari.\n */\n\nvar tapHoldDelay = 600;\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option tapHold: Boolean\n\t// Enables simulation of `contextmenu` event, default is `true` for mobile Safari.\n\ttapHold: Browser.touchNative && Browser.safari && Browser.mobile,\n\n\t// @option tapTolerance: Number = 15\n\t// The max number of pixels a user can shift his finger during touch\n\t// for it to be considered a valid tap.\n\ttapTolerance: 15\n});\n\nexport var TapHold = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\t_onDown: function (e) {\n\t\tclearTimeout(this._holdTimeout);\n\t\tif (e.touches.length !== 1) { return; }\n\n\t\tvar first = e.touches[0];\n\t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n\t\tthis._holdTimeout = setTimeout(Util.bind(function () {\n\t\t\tthis._cancel();\n\t\t\tif (!this._isTapValid()) { return; }\n\n\t\t\t// prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events\n\t\t\tDomEvent.on(document, 'touchend', DomEvent.preventDefault);\n\t\t\tDomEvent.on(document, 'touchend touchcancel', this._cancelClickPrevent);\n\t\t\tthis._simulateEvent('contextmenu', first);\n\t\t}, this), tapHoldDelay);\n\n\t\tDomEvent.on(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.on(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_cancelClickPrevent: function cancelClickPrevent() {\n\t\tDomEvent.off(document, 'touchend', DomEvent.preventDefault);\n\t\tDomEvent.off(document, 'touchend touchcancel', cancelClickPrevent);\n\t},\n\n\t_cancel: function () {\n\t\tclearTimeout(this._holdTimeout);\n\t\tDomEvent.off(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.off(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_onMove: function (e) {\n\t\tvar first = e.touches[0];\n\t\tthis._newPos = new Point(first.clientX, first.clientY);\n\t},\n\n\t_isTapValid: function () {\n\t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n\t},\n\n\t_simulateEvent: function (type, e) {\n\t\tvar simulatedEvent = new MouseEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tview: window,\n\t\t\t// detail: 1,\n\t\t\tscreenX: e.screenX,\n\t\t\tscreenY: e.screenY,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\t// button: 2,\n\t\t\t// buttons: 2\n\t\t});\n\n\t\tsimulatedEvent._simulated = true;\n\n\t\te.target.dispatchEvent(simulatedEvent);\n\t}\n});\n\n// @section Handlers\n// @property tapHold: Handler\n// Long tap handler to simulate `contextmenu` event (useful in mobile Safari).\nMap.addInitHook('addHandler', 'tapHold', TapHold);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option touchZoom: Boolean|String = *\n\t// Whether the map can be zoomed by touch-dragging with two fingers. If\n\t// passed `'center'`, it will zoom to the center of the view regardless of\n\t// where the touch events (fingers) were. Enabled for touch-capable web\n\t// browsers.\n\ttouchZoom: Browser.touch,\n\n\t// @option bounceAtZoomLimits: Boolean = true\n\t// Set it to false if you don't want the map to zoom beyond min/max zoom\n\t// and then bounce back when pinch-zooming.\n\tbounceAtZoomLimits: true\n});\n\nexport var TouchZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomUtil.addClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\t_onTouchStart: function (e) {\n\t\tvar map = this._map;\n\t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n\t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n\t\tthis._centerPoint = map.getSize()._divideBy(2);\n\t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\t\tif (map.options.touchZoom !== 'center') {\n\t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n\t\t}\n\n\t\tthis._startDist = p1.distanceTo(p2);\n\t\tthis._startZoom = map.getZoom();\n\n\t\tthis._moved = false;\n\t\tthis._zooming = true;\n\n\t\tmap._stop();\n\n\t\tDomEvent.on(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.on(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchMove: function (e) {\n\t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n\t\tvar map = this._map,\n\t\t p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t p2 = map.mouseEventToContainerPoint(e.touches[1]),\n\t\t scale = p1.distanceTo(p2) / this._startDist;\n\n\t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n\t\tif (!map.options.bounceAtZoomLimits && (\n\t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n\t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n\t\t\tthis._zoom = map._limitZoom(this._zoom);\n\t\t}\n\n\t\tif (map.options.touchZoom === 'center') {\n\t\t\tthis._center = this._startLatLng;\n\t\t\tif (scale === 1) { return; }\n\t\t} else {\n\t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n\t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n\t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n\t\t}\n\n\t\tif (!this._moved) {\n\t\t\tmap._moveStart(true, false);\n\t\t\tthis._moved = true;\n\t\t}\n\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tvar moveFn = Util.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);\n\t\tthis._animRequest = Util.requestAnimFrame(moveFn, this, true);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchEnd: function () {\n\t\tif (!this._moved || !this._zooming) {\n\t\t\tthis._zooming = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._zooming = false;\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tDomEvent.off(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.off(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n\t\t} else {\n\t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nMap.addInitHook('addHandler', 'touchZoom', TouchZoom);\n","import {Map} from './Map';\nimport {BoxZoom} from './handler/Map.BoxZoom';\nMap.BoxZoom = BoxZoom;\nimport {DoubleClickZoom} from './handler/Map.DoubleClickZoom';\nMap.DoubleClickZoom = DoubleClickZoom;\nimport {Drag} from './handler/Map.Drag';\nMap.Drag = Drag;\nimport {Keyboard} from './handler/Map.Keyboard';\nMap.Keyboard = Keyboard;\nimport {ScrollWheelZoom} from './handler/Map.ScrollWheelZoom';\nMap.ScrollWheelZoom = ScrollWheelZoom;\nimport {TapHold} from './handler/Map.TapHold';\nMap.TapHold = TapHold;\nimport {TouchZoom} from './handler/Map.TouchZoom';\nMap.TouchZoom = TouchZoom;\n\nexport {Map, createMap as map} from './Map';\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\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","/**\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","/** @license React v16.14.0\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\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\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\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(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 z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(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){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(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(ra,sa);z[b]=new v(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(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(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 ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction 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 A({},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 ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(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\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(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 cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(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)}function kb(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\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=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(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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}}var wb=null;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(p(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;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){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 Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"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&&Ne(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&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(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,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(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&128))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 Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,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){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(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]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(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,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&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}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"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[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,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=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/** @license React v17.0.2\n * react-is.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 b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","/**\n * @license React\n * react-is.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 b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrevArrow = exports.NextArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = exports.extractObject = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\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 pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\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=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v16.13.1\n * react-is.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'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _postcssValueParser = require('postcss-value-parser');\n\nvar _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);\n\nvar _parser = require('./parser');\n\nvar _reducer = require('./lib/reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nvar _stringifier = require('./lib/stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eslint-disable-line\nvar MATCH_CALC = /((?:\\-[a-z]+\\-)?calc)/;\n\nexports.default = function (value) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n return (0, _postcssValueParser2.default)(value).walk(function (node) {\n // skip anything which isn't a calc() function\n if (node.type !== 'function' || !MATCH_CALC.test(node.value)) return;\n\n // stringify calc expression and produce an AST\n var contents = _postcssValueParser2.default.stringify(node.nodes);\n\n // skip constant() and env()\n if (contents.indexOf('constant') >= 0 || contents.indexOf('env') >= 0) return;\n\n var ast = _parser.parser.parse(contents);\n\n // reduce AST to its simplest form, that is, either to a single value\n // or a simplified calc expression\n var reducedAst = (0, _reducer2.default)(ast, precision);\n\n // stringify AST and write it back\n node.type = 'word';\n node.value = (0, _stringifier2.default)(node.value, reducedAst, precision);\n }, true).toString();\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _cssUnitConverter = require('css-unit-converter');\n\nvar _cssUnitConverter2 = _interopRequireDefault(_cssUnitConverter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction convertNodes(left, right, precision) {\n switch (left.type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n return convertAbsoluteLength(left, right, precision);\n default:\n return { left: left, right: right };\n }\n}\n\nfunction convertAbsoluteLength(left, right, precision) {\n if (right.type === left.type) {\n right = {\n type: left.type,\n value: (0, _cssUnitConverter2.default)(right.value, right.unit, left.unit, precision),\n unit: left.unit\n };\n }\n return { left: left, right: right };\n}\n\nexports.default = convertNodes;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\n\nvar _convert = require(\"./convert\");\n\nvar _convert2 = _interopRequireDefault(_convert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction reduce(node, precision) {\n if (node.type === \"MathExpression\") return reduceMathExpression(node, precision);\n if (node.type === \"Calc\") return reduce(node.value, precision);\n\n return node;\n}\n\nfunction isEqual(left, right) {\n return left.type === right.type && left.value === right.value;\n}\n\nfunction isValueType(type) {\n switch (type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n case 'EmValue':\n case 'ExValue':\n case 'ChValue':\n case 'RemValue':\n case 'VhValue':\n case 'VwValue':\n case 'VminValue':\n case 'VmaxValue':\n case 'PercentageValue':\n case 'Value':\n return true;\n }\n return false;\n}\n\nfunction convertMathExpression(node, precision) {\n var nodes = (0, _convert2.default)(node.left, node.right, precision);\n var left = reduce(nodes.left, precision);\n var right = reduce(nodes.right, precision);\n\n if (left.type === \"MathExpression\" && right.type === \"MathExpression\") {\n\n if (left.operator === '/' && right.operator === '*' || left.operator === '-' && right.operator === '+' || left.operator === '*' && right.operator === '/' || left.operator === '+' && right.operator === '-') {\n\n if (isEqual(left.right, right.right)) nodes = (0, _convert2.default)(left.left, right.left, precision);else if (isEqual(left.right, right.left)) nodes = (0, _convert2.default)(left.left, right.right, precision);\n\n left = reduce(nodes.left, precision);\n right = reduce(nodes.right, precision);\n }\n }\n\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction flip(operator) {\n return operator === '+' ? '-' : '+';\n}\n\nfunction flipValue(node) {\n if (isValueType(node.type)) node.value = -node.value;else if (node.type == 'MathExpression') {\n node.left = flipValue(node.left);\n node.right = flipValue(node.right);\n }\n return node;\n}\n\nfunction reduceAddSubExpression(node, precision) {\n var _node = node,\n left = _node.left,\n right = _node.right,\n op = _node.operator;\n\n\n if (left.type === 'CssVariable' || right.type === 'CssVariable') return node;\n\n // something + 0 => something\n // something - 0 => something\n if (right.value === 0) return left;\n\n // 0 + something => something\n if (left.value === 0 && op === \"+\") return right;\n\n // 0 - something => -something\n if (left.value === 0 && op === \"-\") return flipValue(right);\n\n // value + value\n // value - value\n if (left.type === right.type && isValueType(left.type)) {\n node = Object.assign({}, left);\n if (op === \"+\") node.value = left.value + right.value;else node.value = left.value - right.value;\n }\n\n // value <op> (expr)\n if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') {\n // value + (value + something) => (value + value) + something\n // value + (value - something) => (value + value) - something\n // value - (value + something) => (value - value) - something\n // value - (value - something) => (value - value) + something\n if (left.type === right.left.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left,\n right: right.left\n }, precision);\n node.right = right.right;\n node.operator = op === '-' ? flip(right.operator) : right.operator;\n return reduce(node, precision);\n }\n // value + (something + value) => (value + value) + something\n // value + (something - value) => (value - value) + something\n // value - (something + value) => (value - value) - something\n // value - (something - value) => (value + value) - something\n else if (left.type === right.right.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op === '-' ? flip(right.operator) : right.operator,\n left: left,\n right: right.right\n }, precision);\n node.right = right.left;\n return reduce(node, precision);\n }\n }\n\n // (expr) <op> value\n if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) {\n // (value + something) + value => (value + value) + something\n // (value - something) + value => (value + value) - something\n // (value + something) - value => (value - value) + something\n // (value - something) - value => (value - value) - something\n if (right.type === left.left.type) {\n node = Object.assign({}, left);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.left,\n right: right\n }, precision);\n return reduce(node, precision);\n }\n // (something + value) + value => something + (value + value)\n // (something - value1) + value2 => something - (value2 - value1)\n // (something + value) - value => something + (value - value)\n // (something - value) - value => something - (value + value)\n else if (right.type === left.right.type) {\n node = Object.assign({}, left);\n if (left.operator === '-') {\n node.right = reduce({\n type: 'MathExpression',\n operator: op === '-' ? '+' : '-',\n left: right,\n right: left.right\n }, precision);\n node.operator = op === '-' ? '-' : '+';\n } else {\n node.right = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.right,\n right: right\n }, precision);\n }\n if (node.right.value < 0) {\n node.right.value *= -1;\n node.operator = node.operator === '-' ? '+' : '-';\n }\n return reduce(node, precision);\n }\n }\n return node;\n}\n\nfunction reduceDivisionExpression(node, precision) {\n if (!isValueType(node.right.type)) return node;\n\n if (node.right.type !== 'Value') throw new Error(\"Cannot divide by \\\"\" + node.right.unit + \"\\\", number expected\");\n\n if (node.right.value === 0) throw new Error('Cannot divide by zero');\n\n // (expr) / value\n if (node.left.type === 'MathExpression') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value /= node.right.value;\n node.left.right.value /= node.right.value;\n return reduce(node.left, precision);\n }\n return node;\n }\n // something / value\n else if (isValueType(node.left.type)) {\n node.left.value /= node.right.value;\n return node.left;\n }\n return node;\n}\n\nfunction reduceMultiplicationExpression(node) {\n // (expr) * value\n if (node.left.type === 'MathExpression' && node.right.type === 'Value') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value *= node.right.value;\n node.left.right.value *= node.right.value;\n return node.left;\n }\n }\n // something * value\n else if (isValueType(node.left.type) && node.right.type === 'Value') {\n node.left.value *= node.right.value;\n return node.left;\n }\n // value * (expr)\n else if (node.left.type === 'Value' && node.right.type === 'MathExpression') {\n if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) {\n node.right.left.value *= node.left.value;\n node.right.right.value *= node.left.value;\n return node.right;\n }\n }\n // value * something\n else if (node.left.type === 'Value' && isValueType(node.right.type)) {\n node.right.value *= node.left.value;\n return node.right;\n }\n return node;\n}\n\nfunction reduceMathExpression(node, precision) {\n node = convertMathExpression(node, precision);\n\n switch (node.operator) {\n case \"+\":\n case \"-\":\n return reduceAddSubExpression(node, precision);\n case \"/\":\n return reduceDivisionExpression(node, precision);\n case \"*\":\n return reduceMultiplicationExpression(node);\n }\n return node;\n}\n\nexports.default = reduce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (calc, node, precision) {\n var str = stringify(node, precision);\n\n if (node.type === \"MathExpression\") {\n // if calc expression couldn't be resolved to a single value, re-wrap it as\n // a calc()\n str = calc + \"(\" + str + \")\";\n }\n return str;\n};\n\nvar _reducer = require(\"./reducer\");\n\nvar order = {\n \"*\": 0,\n \"/\": 0,\n \"+\": 1,\n \"-\": 1\n};\n\nfunction round(value, prec) {\n if (prec !== false) {\n var precision = Math.pow(10, prec);\n return Math.round(value * precision) / precision;\n }\n return value;\n}\n\nfunction stringify(node, prec) {\n switch (node.type) {\n case \"MathExpression\":\n {\n var left = node.left,\n right = node.right,\n op = node.operator;\n\n var str = \"\";\n\n if (left.type === 'MathExpression' && order[op] < order[left.operator]) str += \"(\" + stringify(left, prec) + \")\";else str += stringify(left, prec);\n\n str += \" \" + node.operator + \" \";\n\n if (right.type === 'MathExpression' && order[op] < order[right.operator]) {\n str += \"(\" + stringify(right, prec) + \")\";\n } else if (right.type === 'MathExpression' && op === \"-\" && [\"+\", \"-\"].includes(right.operator)) {\n // fix #52 : a-(b+c) = a-b-c\n right.operator = (0, _reducer.flip)(right.operator);\n str += stringify(right, prec);\n } else {\n str += stringify(right, prec);\n }\n\n return str;\n }\n case \"Value\":\n return round(node.value, prec);\n case 'CssVariable':\n if (node.fallback) {\n return \"var(\" + node.value + \", \" + stringify(node.fallback, prec, true) + \")\";\n }\n return \"var(\" + node.value + \")\";\n case 'Calc':\n if (node.prefix) {\n return \"-\" + node.prefix + \"-calc(\" + stringify(node.value, prec) + \")\";\n }\n return \"calc(\" + stringify(node.value, prec) + \")\";\n default:\n return round(node.value, prec) + node.unit;\n }\n}\n\nmodule.exports = exports[\"default\"];","\n/* parser generated by jison 0.6.1-215 */\n\n/*\n * Returns a Parser object of the following structure:\n *\n * Parser: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a derivative/copy of this one,\n * not a direct reference!\n * }\n *\n * Parser.prototype: {\n * yy: {},\n * EOF: 1,\n * TERROR: 2,\n *\n * trace: function(errorMessage, ...),\n *\n * JisonParserError: function(msg, hash),\n *\n * quoteName: function(name),\n * Helper function which can be overridden by user code later on: put suitable\n * quotes around literal IDs in a description string.\n *\n * originalQuoteName: function(name),\n * The basic quoteName handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `quoteName()` to reference this function\n * at the end of the `parse()`.\n *\n * describeSymbol: function(symbol),\n * Return a more-or-less human-readable description of the given symbol, when\n * available, or the symbol itself, serving as its own 'description' for lack\n * of something better to serve up.\n *\n * Return NULL when the symbol is unknown to the parser.\n *\n * symbols_: {associative list: name ==> number},\n * terminals_: {associative list: number ==> name},\n * nonterminals: {associative list: rule-name ==> {associative list: number ==> rule-alt}},\n * terminal_descriptions_: (if there are any) {associative list: number ==> description},\n * productions_: [...],\n *\n * performAction: function parser__performAction(yytext, yyleng, yylineno, yyloc, yystate, yysp, yyvstack, yylstack, yystack, yysstack),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `yyval` internal object, which has members (`$` and `_$`)\n * to store/reference the rule value `$$` and location info `@$`.\n *\n * One important thing to note about `this` a.k.a. `yyval`: every *reduce* action gets\n * to see the same object via the `this` reference, i.e. if you wish to carry custom\n * data from one reduce action through to the next within a single parse run, then you\n * may get nasty and use `yyval` a.k.a. `this` for storing you own semi-permanent data.\n *\n * `this.yy` is a direct reference to the `yy` shared state object.\n *\n * `%parse-param`-specified additional `parse()` arguments have been added to this `yy`\n * object at `parse()` start and are therefore available to the action code via the\n * same named `yy.xxxx` attributes (where `xxxx` represents a identifier name from\n * the %parse-param` list.\n *\n * - `yytext` : reference to the lexer value which belongs to the last lexer token used\n * to match this rule. This is *not* the look-ahead token, but the last token\n * that's actually part of this rule.\n *\n * Formulated another way, `yytext` is the value of the token immediately preceeding\n * the current look-ahead token.\n * Caveats apply for rules which don't require look-ahead, such as epsilon rules.\n *\n * - `yyleng` : ditto as `yytext`, only now for the lexer.yyleng value.\n *\n * - `yylineno`: ditto as `yytext`, only now for the lexer.yylineno value.\n *\n * - `yyloc` : ditto as `yytext`, only now for the lexer.yylloc lexer token location info.\n *\n * WARNING: since jison 0.4.18-186 this entry may be NULL/UNDEFINED instead\n * of an empty object when no suitable location info can be provided.\n *\n * - `yystate` : the current parser state number, used internally for dispatching and\n * executing the action code chunk matching the rule currently being reduced.\n *\n * - `yysp` : the current state stack position (a.k.a. 'stack pointer')\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * Also note that you can access this and other stack index values using the new double-hash\n * syntax, i.e. `##$ === ##0 === yysp`, while `##1` is the stack index for all things\n * related to the first rule term, just like you have `$1`, `@1` and `#1`.\n * This is made available to write very advanced grammar action rules, e.g. when you want\n * to investigate the parse state stack in your action code, which would, for example,\n * be relevant when you wish to implement error diagnostics and reporting schemes similar\n * to the work described here:\n *\n * + Pottier, F., 2016. Reachability and error diagnosis in LR(1) automata.\n * In Journées Francophones des Languages Applicatifs.\n *\n * + Jeffery, C.L., 2003. Generating LR syntax error messages from examples.\n * ACM Transactions on Programming Languages and Systems (TOPLAS), 25(5), pp.631–640.\n *\n * - `yyrulelength`: the current rule's term count, i.e. the number of entries occupied on the stack.\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * - `yyvstack`: reference to the parser value stack. Also accessed via the `$1` etc.\n * constructs.\n *\n * - `yylstack`: reference to the parser token location stack. Also accessed via\n * the `@1` etc. constructs.\n *\n * WARNING: since jison 0.4.18-186 this array MAY contain slots which are\n * UNDEFINED rather than an empty (location) object, when the lexer/parser\n * action code did not provide a suitable location info object when such a\n * slot was filled!\n *\n * - `yystack` : reference to the parser token id stack. Also accessed via the\n * `#1` etc. constructs.\n *\n * Note: this is a bit of a **white lie** as we can statically decode any `#n` reference to\n * its numeric token id value, hence that code wouldn't need the `yystack` but *you* might\n * want access this array for your own purposes, such as error analysis as mentioned above!\n *\n * Note that this stack stores the current stack of *tokens*, that is the sequence of\n * already parsed=reduced *nonterminals* (tokens representing rules) and *terminals*\n * (lexer tokens *shifted* onto the stack until the rule they belong to is found and\n * *reduced*.\n *\n * - `yysstack`: reference to the parser state stack. This one carries the internal parser\n * *states* such as the one in `yystate`, which are used to represent\n * the parser state machine in the *parse table*. *Very* *internal* stuff,\n * what can I say? If you access this one, you're clearly doing wicked things\n *\n * - `...` : the extra arguments you specified in the `%parse-param` statement in your\n * grammar definition file.\n *\n * table: [...],\n * State transition table\n * ----------------------\n *\n * index levels are:\n * - `state` --> hash table\n * - `symbol` --> action (number or array)\n *\n * If the `action` is an array, these are the elements' meaning:\n * - index [0]: 1 = shift, 2 = reduce, 3 = accept\n * - index [1]: GOTO `state`\n *\n * If the `action` is a number, it is the GOTO `state`\n *\n * defaultActions: {...},\n *\n * parseError: function(str, hash, ExceptionClass),\n * yyError: function(str, ...),\n * yyRecovering: function(),\n * yyErrOk: function(),\n * yyClearIn: function(),\n *\n * constructParseErrorInfo: function(error_message, exception_object, expected_token_set, is_recoverable),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this parser kernel in many places; example usage:\n *\n * var infoObj = parser.constructParseErrorInfo('fail!', null,\n * parser.collect_expected_token_set(state), true);\n * var retVal = parser.parseError(infoObj.errStr, infoObj, parser.JisonParserError);\n *\n * originalParseError: function(str, hash, ExceptionClass),\n * The basic `parseError` handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `parseError()` to reference this function\n * at the end of the `parse()`.\n *\n * options: { ... parser %options ... },\n *\n * parse: function(input[, args...]),\n * Parse the given `input` and return the parsed value (or `true` when none was provided by\n * the root action, in which case the parser is acting as a *matcher*).\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of this grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Parser's additional `args...` parameters (via `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the jison run-time;\n * when such a collision is detected an exception is thrown to prevent the generated run-time\n * from silently accepting this confusing and potentially hazardous situation!\n *\n * The lexer MAY add its own set of additional parameters (via the `%parse-param` line in\n * the lexer section of the grammar spec): these will be inserted in the `yy` shared state\n * object and any collision with those will be reported by the lexer via a thrown exception.\n *\n * cleanupAfterParse: function(resultValue, invoke_post_methods, do_not_nuke_errorinfos),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API is invoked at the end of the `parse()` call, unless an exception was thrown\n * and `%options no-try-catch` has been defined for this grammar: in that case this helper MAY\n * be invoked by calling user code to ensure the `post_parse` callbacks are invoked and\n * the internal parser gets properly garbage collected under these particular circumstances.\n *\n * yyMergeLocationInfo: function(first_index, last_index, first_yylloc, last_yylloc, dont_look_back),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API can be invoked to calculate a spanning `yylloc` location info object.\n *\n * Note: %epsilon rules MAY specify no `first_index` and `first_yylloc`, in which case\n * this function will attempt to obtain a suitable location marker by inspecting the location stack\n * backwards.\n *\n * For more info see the documentation comment further below, immediately above this function's\n * implementation.\n *\n * lexer: {\n * yy: {...}, A reference to the so-called \"shared state\" `yy` once\n * received via a call to the `.setInput(input, yy)` lexer API.\n * EOF: 1,\n * ERROR: 2,\n * JisonLexerError: function(msg, hash),\n * parseError: function(str, hash, ExceptionClass),\n * setInput: function(input, [yy]),\n * input: function(),\n * unput: function(str),\n * more: function(),\n * reject: function(),\n * less: function(n),\n * pastInput: function(n),\n * upcomingInput: function(n),\n * showPosition: function(),\n * test_match: function(regex_match_array, rule_index, ...),\n * next: function(...),\n * lex: function(...),\n * begin: function(condition),\n * pushState: function(condition),\n * popState: function(),\n * topState: function(),\n * _currentRules: function(),\n * stateStackSize: function(),\n * cleanupAfterLex: function()\n *\n * options: { ... lexer %options ... },\n *\n * performAction: function(yy, yy_, $avoiding_name_collisions, YY_START, ...),\n * rules: [...],\n * conditions: {associative list: name ==> set},\n * }\n * }\n *\n *\n * token location info (@$, _$, etc.): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer and\n * parser errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * }\n *\n * parser (grammar) errors will also provide these additional members:\n *\n * {\n * expected: (array describing the set of expected tokens;\n * may be UNDEFINED when we cannot easily produce such a set)\n * state: (integer (or array when the table includes grammar collisions);\n * represents the current internal state of the parser kernel.\n * can, for example, be used to pass to the `collect_expected_token_set()`\n * API to obtain the expected token set)\n * action: (integer; represents the current internal action which will be executed)\n * new_state: (integer; represents the next/planned internal state, once the current\n * action has executed)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * state_stack: (array: the current parser LALR/LR internal state stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * value_stack: (array: the current parser LALR/LR internal `$$` value stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * location_stack: (array: the current parser LALR/LR internal location stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * parser: (reference to the current parser instance)\n * }\n *\n * while `this` will reference the current parser instance.\n *\n * When `parseError` is invoked by the lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * lexer: (reference to the current lexer instance which reported the error)\n * }\n *\n * When `parseError` is invoked by the parser due to a **JavaScript exception** being fired\n * from either the parser or lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * exception: (reference to the exception thrown)\n * }\n *\n * Please do note that in the latter situation, the `expected` field will be omitted as\n * this type of failure is assumed not to be due to *parse errors* but rather due to user\n * action code in either parser or lexer failing unexpectedly.\n *\n * ---\n *\n * You can specify parser options by setting / modifying the `.yy` object of your Parser instance.\n * These options are available:\n *\n * ### options which are global for all parser instances\n *\n * Parser.pre_parse: function(yy)\n * optional: you can specify a pre_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`.\n * Parser.post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: you can specify a post_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`. When it does not return any value,\n * the parser will return the original `retval`.\n *\n * ### options which can be set up per parser instance\n *\n * yy: {\n * pre_parse: function(yy)\n * optional: is invoked before the parse cycle starts (and before the first\n * invocation of `lex()`) but immediately after the invocation of\n * `parser.pre_parse()`).\n * post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: is invoked when the parse terminates due to success ('accept')\n * or failure (even when exceptions are thrown).\n * `retval` contains the return value to be produced by `Parser.parse()`;\n * this function can override the return value by returning another.\n * When it does not return any value, the parser will return the original\n * `retval`.\n * This function is invoked immediately before `parser.post_parse()`.\n *\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * quoteName: function(name),\n * optional: overrides the default `quoteName` function.\n * }\n *\n * parser.lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this `%option` has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n \n \n var parser = (function () {\n\n\n// See also:\n// http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n// but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n// with userland code which might access the derived class in a 'classic' way.\nfunction JisonParserError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonParserError'\n });\n\n if (msg == null) msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n\n var stacktrace;\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) { // V8/Chrome engine\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = (new Error(msg)).stack;\n }\n }\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n}\n\nif (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);\n} else {\n JisonParserError.prototype = Object.create(Error.prototype);\n}\nJisonParserError.prototype.constructor = JisonParserError;\nJisonParserError.prototype.name = 'JisonParserError';\n\n\n\n\n // helper: reconstruct the productions[] table\n function bp(s) {\n var rv = [];\n var p = s.pop;\n var r = s.rule;\n for (var i = 0, l = p.length; i < l; i++) {\n rv.push([\n p[i],\n r[i]\n ]);\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the defaultActions[] table\n function bda(s) {\n var rv = {};\n var d = s.idx;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var j = d[i];\n rv[j] = g[i];\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the 'goto' table\n function bt(s) {\n var rv = [];\n var d = s.len;\n var y = s.symbol;\n var t = s.type;\n var a = s.state;\n var m = s.mode;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var n = d[i];\n var q = {};\n for (var j = 0; j < n; j++) {\n var z = y.shift();\n switch (t.shift()) {\n case 2:\n q[z] = [\n m.shift(),\n g.shift()\n ];\n break;\n\n case 0:\n q[z] = a.shift();\n break;\n\n default:\n // type === 1: accept\n q[z] = [\n 3\n ];\n }\n }\n rv.push(q);\n }\n return rv;\n }\n \n\n\n // helper: runlength encoding with increment step: code, length: step (default step = 0)\n // `this` references an array\n function s(c, l, a) {\n a = a || 0;\n for (var i = 0; i < l; i++) {\n this.push(c);\n c += a;\n }\n }\n\n // helper: duplicate sequence from *relative* offset and length.\n // `this` references an array\n function c(i, l) {\n i = this.length - i;\n for (l += i; i < l; i++) {\n this.push(this[i]);\n }\n }\n\n // helper: unpack an array using helpers and data, all passed in an array argument 'a'.\n function u(a) {\n var rv = [];\n for (var i = 0, l = a.length; i < l; i++) {\n var e = a[i];\n // Is this entry a helper function?\n if (typeof e === 'function') {\n i++;\n e.apply(rv, a[i]);\n } else {\n rv.push(e);\n }\n }\n return rv;\n }\n \n\nvar parser = {\n // Code Generator Information Report\n // ---------------------------------\n //\n // Options:\n //\n // default action mode: ............. [\"classic\",\"merge\"]\n // test-compile action mode: ........ \"parser:*,lexer:*\"\n // try..catch: ...................... true\n // default resolve on conflict: ..... true\n // on-demand look-ahead: ............ false\n // error recovery token skip maximum: 3\n // yyerror in parse actions is: ..... NOT recoverable,\n // yyerror in lexer actions and other non-fatal lexer are:\n // .................................. NOT recoverable,\n // debug grammar/output: ............ false\n // has partial LR conflict upgrade: true\n // rudimentary token-stack support: false\n // parser table compression mode: ... 2\n // export debug tables: ............. false\n // export *all* tables: ............. false\n // module type: ..................... commonjs\n // parser engine type: .............. lalr\n // output main() in the module: ..... true\n // has user-specified main(): ....... false\n // has user-specified require()/import modules for main():\n // .................................. false\n // number of expected conflicts: .... 0\n //\n //\n // Parser Analysis flags:\n //\n // no significant actions (parser is a language matcher only):\n // .................................. false\n // uses yyleng: ..................... false\n // uses yylineno: ................... false\n // uses yytext: ..................... false\n // uses yylloc: ..................... false\n // uses ParseError API: ............. false\n // uses YYERROR: .................... false\n // uses YYRECOVERING: ............... false\n // uses YYERROK: .................... false\n // uses YYCLEARIN: .................. false\n // tracks rule values: .............. true\n // assigns rule values: ............. true\n // uses location tracking: .......... false\n // assigns location: ................ false\n // uses yystack: .................... false\n // uses yysstack: ................... false\n // uses yysp: ....................... true\n // uses yyrulelength: ............... false\n // uses yyMergeLocationInfo API: .... false\n // has error recovery: .............. false\n // has error reporting: ............. false\n //\n // --------- END OF REPORT -----------\n\ntrace: function no_op_trace() { },\nJisonParserError: JisonParserError,\nyy: {},\noptions: {\n type: \"lalr\",\n hasPartialLrUpgradeOnConflict: true,\n errorRecoveryTokenDiscardCount: 3\n},\nsymbols_: {\n \"$accept\": 0,\n \"$end\": 1,\n \"ADD\": 3,\n \"ANGLE\": 16,\n \"CHS\": 22,\n \"COMMA\": 14,\n \"CSS_CPROP\": 13,\n \"CSS_VAR\": 12,\n \"DIV\": 6,\n \"EMS\": 20,\n \"EOF\": 1,\n \"EXS\": 21,\n \"FREQ\": 18,\n \"LENGTH\": 15,\n \"LPAREN\": 7,\n \"MUL\": 5,\n \"NESTED_CALC\": 9,\n \"NUMBER\": 11,\n \"PERCENTAGE\": 28,\n \"PREFIX\": 10,\n \"REMS\": 23,\n \"RES\": 19,\n \"RPAREN\": 8,\n \"SUB\": 4,\n \"TIME\": 17,\n \"VHS\": 24,\n \"VMAXS\": 27,\n \"VMINS\": 26,\n \"VWS\": 25,\n \"css_value\": 33,\n \"css_variable\": 32,\n \"error\": 2,\n \"expression\": 29,\n \"math_expression\": 30,\n \"value\": 31\n},\nterminals_: {\n 1: \"EOF\",\n 2: \"error\",\n 3: \"ADD\",\n 4: \"SUB\",\n 5: \"MUL\",\n 6: \"DIV\",\n 7: \"LPAREN\",\n 8: \"RPAREN\",\n 9: \"NESTED_CALC\",\n 10: \"PREFIX\",\n 11: \"NUMBER\",\n 12: \"CSS_VAR\",\n 13: \"CSS_CPROP\",\n 14: \"COMMA\",\n 15: \"LENGTH\",\n 16: \"ANGLE\",\n 17: \"TIME\",\n 18: \"FREQ\",\n 19: \"RES\",\n 20: \"EMS\",\n 21: \"EXS\",\n 22: \"CHS\",\n 23: \"REMS\",\n 24: \"VHS\",\n 25: \"VWS\",\n 26: \"VMINS\",\n 27: \"VMAXS\",\n 28: \"PERCENTAGE\"\n},\nTERROR: 2,\n EOF: 1,\n\n // internals: defined here so the object *structure* doesn't get modified by parse() et al,\n // thus helping JIT compilers like Chrome V8.\n originalQuoteName: null,\n originalParseError: null,\n cleanupAfterParse: null,\n constructParseErrorInfo: null,\n yyMergeLocationInfo: null,\n\n __reentrant_call_depth: 0, // INTERNAL USE ONLY\n __error_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n __error_recovery_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n\n // APIs which will be set up depending on user action code analysis:\n //yyRecovering: 0,\n //yyErrOk: 0,\n //yyClearIn: 0,\n\n // Helper APIs\n // -----------\n\n // Helper function which can be overridden by user code later on: put suitable quotes around\n // literal IDs in a description string.\n quoteName: function parser_quoteName(id_str) {\n return '\"' + id_str + '\"';\n },\n\n // Return the name of the given symbol (terminal or non-terminal) as a string, when available.\n //\n // Return NULL when the symbol is unknown to the parser.\n getSymbolName: function parser_getSymbolName(symbol) {\n if (this.terminals_[symbol]) {\n return this.terminals_[symbol];\n }\n\n // Otherwise... this might refer to a RULE token i.e. a non-terminal: see if we can dig that one up.\n //\n // An example of this may be where a rule's action code contains a call like this:\n //\n // parser.getSymbolName(#$)\n //\n // to obtain a human-readable name of the current grammar rule.\n var s = this.symbols_;\n for (var key in s) {\n if (s[key] === symbol) {\n return key;\n }\n }\n return null;\n },\n\n // Return a more-or-less human-readable description of the given symbol, when available,\n // or the symbol itself, serving as its own 'description' for lack of something better to serve up.\n //\n // Return NULL when the symbol is unknown to the parser.\n describeSymbol: function parser_describeSymbol(symbol) {\n if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {\n return this.terminal_descriptions_[symbol];\n }\n else if (symbol === this.EOF) {\n return 'end of input';\n }\n var id = this.getSymbolName(symbol);\n if (id) {\n return this.quoteName(id);\n }\n return null;\n },\n\n // Produce a (more or less) human-readable list of expected tokens at the point of failure.\n //\n // The produced list may contain token or token set descriptions instead of the tokens\n // themselves to help turning this output into something that easier to read by humans\n // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,\n // expected terminals and nonterminals is produced.\n //\n // The returned list (array) will not contain any duplicate entries.\n collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {\n var TERROR = this.TERROR;\n var tokenset = [];\n var check = {};\n // Has this (error?) state been outfitted with a custom expectations description text for human consumption?\n // If so, use that one instead of the less palatable token set.\n if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {\n return [\n this.state_descriptions_[state]\n ];\n }\n for (var p in this.table[state]) {\n p = +p;\n if (p !== TERROR) {\n var d = do_not_describe ? p : this.describeSymbol(p);\n if (d && !check[d]) {\n tokenset.push(d);\n check[d] = true; // Mark this token description as already mentioned to prevent outputting duplicate entries.\n }\n }\n }\n return tokenset;\n },\nproductions_: bp({\n pop: u([\n 29,\n s,\n [30, 10],\n 31,\n 31,\n 32,\n 32,\n s,\n [33, 15]\n]),\n rule: u([\n 2,\n s,\n [3, 5],\n 4,\n 7,\n s,\n [1, 4],\n 2,\n 4,\n 6,\n s,\n [1, 14],\n 2\n])\n}),\nperformAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {\n\n /* this == yyval */\n\n // the JS engine itself can go and remove these statements when `yy` turns out to be unused in any action code!\n var yy = this.yy;\n var yyparser = yy.parser;\n var yylexer = yy.lexer;\n\n \n\n switch (yystate) {\ncase 0:\n /*! Production:: $accept : expression $end */\n\n // default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-)\n break;\n\ncase 1:\n /*! Production:: expression : math_expression EOF */\n\n // default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-)\n \n \n return yyvstack[yysp - 1];\n break;\n\ncase 2:\n /*! Production:: math_expression : math_expression ADD math_expression */\ncase 3:\n /*! Production:: math_expression : math_expression SUB math_expression */\ncase 4:\n /*! Production:: math_expression : math_expression MUL math_expression */\ncase 5:\n /*! Production:: math_expression : math_expression DIV math_expression */\n\n this.$ = { type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };\n break;\n\ncase 6:\n /*! Production:: math_expression : LPAREN math_expression RPAREN */\n\n this.$ = yyvstack[yysp - 1];\n break;\n\ncase 7:\n /*! Production:: math_expression : NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1] };\n break;\n\ncase 8:\n /*! Production:: math_expression : SUB PREFIX SUB NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1], prefix: yyvstack[yysp - 5] };\n break;\n\ncase 9:\n /*! Production:: math_expression : css_variable */\ncase 10:\n /*! Production:: math_expression : css_value */\ncase 11:\n /*! Production:: math_expression : value */\n\n this.$ = yyvstack[yysp];\n break;\n\ncase 12:\n /*! Production:: value : NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) };\n break;\n\ncase 13:\n /*! Production:: value : SUB NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) * -1 };\n break;\n\ncase 14:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 1] };\n break;\n\ncase 15:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP COMMA math_expression RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 3], fallback: yyvstack[yysp - 1] };\n break;\n\ncase 16:\n /*! Production:: css_value : LENGTH */\n\n this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 17:\n /*! Production:: css_value : ANGLE */\n\n this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 18:\n /*! Production:: css_value : TIME */\n\n this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 19:\n /*! Production:: css_value : FREQ */\n\n this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 20:\n /*! Production:: css_value : RES */\n\n this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 21:\n /*! Production:: css_value : EMS */\n\n this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };\n break;\n\ncase 22:\n /*! Production:: css_value : EXS */\n\n this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };\n break;\n\ncase 23:\n /*! Production:: css_value : CHS */\n\n this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };\n break;\n\ncase 24:\n /*! Production:: css_value : REMS */\n\n this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };\n break;\n\ncase 25:\n /*! Production:: css_value : VHS */\n\n this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };\n break;\n\ncase 26:\n /*! Production:: css_value : VWS */\n\n this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };\n break;\n\ncase 27:\n /*! Production:: css_value : VMINS */\n\n this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };\n break;\n\ncase 28:\n /*! Production:: css_value : VMAXS */\n\n this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };\n break;\n\ncase 29:\n /*! Production:: css_value : PERCENTAGE */\n\n this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };\n break;\n\ncase 30:\n /*! Production:: css_value : SUB css_value */\n\n var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;\n break;\n\n}\n},\ntable: bt({\n len: u([\n 24,\n 1,\n 5,\n 23,\n 1,\n 18,\n s,\n [0, 3],\n 1,\n s,\n [0, 16],\n s,\n [23, 4],\n c,\n [28, 3],\n 0,\n 0,\n 16,\n 1,\n 6,\n 6,\n s,\n [0, 3],\n 5,\n 1,\n 2,\n c,\n [37, 3],\n c,\n [20, 3],\n 5,\n 0,\n 0\n]),\n symbol: u([\n 4,\n 7,\n 9,\n 11,\n 12,\n s,\n [15, 19, 1],\n 1,\n 1,\n s,\n [3, 4, 1],\n c,\n [30, 19],\n c,\n [29, 4],\n 7,\n 4,\n 10,\n 11,\n c,\n [22, 14],\n c,\n [19, 3],\n c,\n [43, 22],\n c,\n [23, 69],\n c,\n [139, 4],\n 8,\n c,\n [51, 24],\n 4,\n c,\n [138, 15],\n 13,\n c,\n [186, 5],\n 8,\n c,\n [6, 6],\n c,\n [5, 5],\n 9,\n 8,\n 14,\n c,\n [159, 47],\n c,\n [60, 10]\n]),\n type: u([\n s,\n [2, 19],\n s,\n [0, 5],\n 1,\n s,\n [2, 24],\n s,\n [0, 4],\n c,\n [22, 19],\n c,\n [43, 42],\n c,\n [23, 70],\n c,\n [28, 25],\n c,\n [45, 25],\n c,\n [113, 54]\n]),\n state: u([\n 1,\n 2,\n 8,\n 6,\n 7,\n 30,\n c,\n [4, 3],\n 33,\n 37,\n c,\n [5, 3],\n 38,\n c,\n [4, 3],\n 39,\n c,\n [4, 3],\n 40,\n c,\n [4, 3],\n 42,\n c,\n [21, 4],\n 50,\n c,\n [5, 3],\n 51,\n c,\n [4, 3]\n]),\n mode: u([\n s,\n [1, 179],\n s,\n [2, 3],\n c,\n [5, 5],\n c,\n [6, 4],\n s,\n [1, 57]\n]),\n goto: u([\n 5,\n 3,\n 4,\n 24,\n s,\n [9, 15, 1],\n s,\n [25, 5, 1],\n c,\n [24, 19],\n 31,\n 35,\n 32,\n 34,\n c,\n [18, 14],\n 36,\n c,\n [38, 19],\n c,\n [19, 57],\n c,\n [118, 4],\n 41,\n c,\n [24, 19],\n 43,\n 35,\n c,\n [16, 14],\n 44,\n s,\n [2, 3],\n 28,\n 29,\n 2,\n s,\n [3, 3],\n 28,\n 29,\n 3,\n c,\n [53, 4],\n s,\n [45, 5, 1],\n c,\n [100, 42],\n 52,\n c,\n [5, 4],\n 53\n])\n}),\ndefaultActions: bda({\n idx: u([\n 6,\n 7,\n 8,\n s,\n [10, 16, 1],\n 33,\n 34,\n 39,\n 40,\n 41,\n 45,\n 47,\n 52,\n 53\n]),\n goto: u([\n 9,\n 10,\n 11,\n s,\n [16, 14, 1],\n 12,\n 1,\n 30,\n 13,\n s,\n [4, 4, 1],\n 14,\n 15,\n 8\n])\n}),\nparseError: function parseError(str, hash, ExceptionClass) {\n if (hash.recoverable) {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n hash.destroy(); // destroy... well, *almost*!\n } else {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n throw new ExceptionClass(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this;\n var stack = new Array(128); // token stack: stores token which leads to state at the same index (column storage)\n var sstack = new Array(128); // state stack: stores states (column storage)\n\n var vstack = new Array(128); // semantic value stack\n\n var table = this.table;\n var sp = 0; // 'stack pointer': index into the stacks\n\n\n \n\n\n var symbol = 0;\n\n\n\n var TERROR = this.TERROR;\n var EOF = this.EOF;\n var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;\n var NO_ACTION = [0, 54 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];\n\n var lexer;\n if (this.__lexer__) {\n lexer = this.__lexer__;\n } else {\n lexer = this.__lexer__ = Object.create(this.lexer);\n }\n\n var sharedState_yy = {\n parseError: undefined,\n quoteName: undefined,\n lexer: undefined,\n parser: undefined,\n pre_parse: undefined,\n post_parse: undefined,\n pre_lex: undefined,\n post_lex: undefined // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!\n };\n\n var ASSERT;\n if (typeof assert !== 'function') {\n ASSERT = function JisonAssert(cond, msg) {\n if (!cond) {\n throw new Error('assertion failed: ' + (msg || '***'));\n }\n };\n } else {\n ASSERT = assert;\n }\n\n this.yyGetSharedState = function yyGetSharedState() {\n return sharedState_yy;\n };\n\n\n\n\n\n\n\n\n function shallow_copy_noclobber(dst, src) {\n for (var k in src) {\n if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {\n dst[k] = src[k];\n }\n }\n }\n\n // copy state\n shallow_copy_noclobber(sharedState_yy, this.yy);\n\n sharedState_yy.lexer = lexer;\n sharedState_yy.parser = this;\n\n\n\n\n\n\n // Does the shared state override the default `parseError` that already comes with this instance?\n if (typeof sharedState_yy.parseError === 'function') {\n this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);\n };\n } else {\n this.parseError = this.originalParseError;\n }\n\n // Does the shared state override the default `quoteName` that already comes with this instance?\n if (typeof sharedState_yy.quoteName === 'function') {\n this.quoteName = function quoteNameAlt(id_str) {\n return sharedState_yy.quoteName.call(this, id_str);\n };\n } else {\n this.quoteName = this.originalQuoteName;\n }\n\n // set up the cleanup function; make it an API so that external code can re-use this one in case of\n // calamities or when the `%options no-try-catch` option has been specified for the grammar, in which\n // case this parse() API method doesn't come with a `finally { ... }` block any more!\n //\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `sharedState`, etc. references will be *wrong*!\n this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {\n var rv;\n\n if (invoke_post_methods) {\n var hash;\n\n if (sharedState_yy.post_parse || this.post_parse) {\n // create an error hash info instance: we re-use this API in a **non-error situation**\n // as this one delivers all parser internals ready for access by userland code.\n hash = this.constructParseErrorInfo(null /* no error! */, null /* no exception! */, null, false);\n }\n\n if (sharedState_yy.post_parse) {\n rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n if (this.post_parse) {\n rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n\n // cleanup:\n if (hash && hash.destroy) {\n hash.destroy();\n }\n }\n\n if (this.__reentrant_call_depth > 1) return resultValue; // do not (yet) kill the sharedState when this is a reentrant run.\n\n // clean up the lingering lexer structures as well:\n if (lexer.cleanupAfterLex) {\n lexer.cleanupAfterLex(do_not_nuke_errorinfos);\n }\n\n // prevent lingering circular references from causing memory leaks:\n if (sharedState_yy) {\n sharedState_yy.lexer = undefined;\n sharedState_yy.parser = undefined;\n if (lexer.yy === sharedState_yy) {\n lexer.yy = undefined;\n }\n }\n sharedState_yy = undefined;\n this.parseError = this.originalParseError;\n this.quoteName = this.originalQuoteName;\n\n // nuke the vstack[] array at least as that one will still reference obsoleted user values.\n // To be safe, we nuke the other internal stack columns as well...\n stack.length = 0; // fastest way to nuke an array without overly bothering the GC\n sstack.length = 0;\n\n vstack.length = 0;\n sp = 0;\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n this.__error_infos.length = 0;\n\n\n }\n\n return resultValue;\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `lexer`, `sharedState`, etc. references will be *wrong*!\n this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {\n var pei = {\n errStr: msg,\n exception: ex,\n text: lexer.match,\n value: lexer.yytext,\n token: this.describeSymbol(symbol) || symbol,\n token_id: symbol,\n line: lexer.yylineno,\n\n expected: expected,\n recoverable: recoverable,\n state: state,\n action: action,\n new_state: newState,\n symbol_stack: stack,\n state_stack: sstack,\n value_stack: vstack,\n\n stack_pointer: sp,\n yy: sharedState_yy,\n lexer: lexer,\n parser: this,\n\n // and make sure the error info doesn't stay due to potential\n // ref cycle via userland code manipulations.\n // These would otherwise all be memory leak opportunities!\n //\n // Note that only array and object references are nuked as those\n // constitute the set of elements which can produce a cyclic ref.\n // The rest of the members is kept intact as they are harmless.\n destroy: function destructParseErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // info.value = null;\n // info.value_stack = null;\n // ...\n var rec = !!this.recoverable;\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n this.recoverable = rec;\n }\n };\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n return pei;\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n function getNonTerminalFromCode(symbol) {\n var tokenName = self.getSymbolName(symbol);\n if (!tokenName) {\n tokenName = symbol;\n }\n return tokenName;\n }\n\n\n function stdLex() {\n var token = lexer.lex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n function fastLex() {\n var token = lexer.fastLex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n var lex = stdLex;\n\n\n var state, action, r, t;\n var yyval = {\n $: true,\n _$: undefined,\n yy: sharedState_yy\n };\n var p;\n var yyrulelen;\n var this_production;\n var newState;\n var retval = false;\n\n\n try {\n this.__reentrant_call_depth++;\n\n lexer.setInput(input, sharedState_yy);\n\n // NOTE: we *assume* no lexer pre/post handlers are set up *after* \n // this initial `setInput()` call: hence we can now check and decide\n // whether we'll go with the standard, slower, lex() API or the\n // `fast_lex()` one:\n if (typeof lexer.canIUse === 'function') {\n var lexerInfo = lexer.canIUse();\n if (lexerInfo.fastLex && typeof fastLex === 'function') {\n lex = fastLex;\n }\n } \n\n\n\n vstack[sp] = null;\n sstack[sp] = 0;\n stack[sp] = 0;\n ++sp;\n\n\n\n\n\n if (this.pre_parse) {\n this.pre_parse.call(this, sharedState_yy);\n }\n if (sharedState_yy.pre_parse) {\n sharedState_yy.pre_parse.call(this, sharedState_yy);\n }\n\n newState = sstack[sp - 1];\n for (;;) {\n // retrieve state number from top of stack\n state = newState; // sstack[sp - 1];\n\n // use default actions if available\n if (this.defaultActions[state]) {\n action = 2;\n newState = this.defaultActions[state];\n } else {\n // The single `==` condition below covers both these `===` comparisons in a single\n // operation:\n //\n // if (symbol === null || typeof symbol === 'undefined') ...\n if (!symbol) {\n symbol = lex();\n }\n // read action for current state and first input\n t = (table[state] && table[state][symbol]) || NO_ACTION;\n newState = t[1];\n action = t[0];\n\n\n\n\n\n\n\n\n\n\n\n // handle parse error\n if (!action) {\n var errStr;\n var errSymbolDescr = (this.describeSymbol(symbol) || symbol);\n var expected = this.collect_expected_token_set(state);\n\n // Report error\n if (typeof lexer.yylineno === 'number') {\n errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';\n } else {\n errStr = 'Parse error: ';\n }\n if (typeof lexer.showPosition === 'function') {\n errStr += '\\n' + lexer.showPosition(79 - 10, 10) + '\\n';\n }\n if (expected.length) {\n errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;\n } else {\n errStr += 'Unexpected ' + errSymbolDescr;\n }\n // we cannot recover from the error!\n p = this.constructParseErrorInfo(errStr, null, expected, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n\n\n }\n\n\n\n\n\n\n\n\n\n\n switch (action) {\n // catch misc. parse failures:\n default:\n // this shouldn't happen, unless resolve defaults are off\n if (action instanceof Array) {\n p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n // Another case of better safe than sorry: in case state transitions come out of another error recovery process\n // or a buggy LUT (LookUp Table):\n p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n\n // shift:\n case 1:\n stack[sp] = symbol;\n vstack[sp] = lexer.yytext;\n\n sstack[sp] = newState; // push state\n\n ++sp;\n symbol = 0;\n\n\n\n\n // Pick up the lexer details for the current symbol as that one is not 'look-ahead' any more:\n\n\n\n\n continue;\n\n // reduce:\n case 2:\n\n\n\n this_production = this.productions_[newState - 1]; // `this.productions_[]` is zero-based indexed while states start from 1 upwards...\n yyrulelen = this_production[1];\n\n\n\n\n\n\n\n\n\n\n r = this.performAction.call(yyval, newState, sp - 1, vstack);\n\n if (typeof r !== 'undefined') {\n retval = r;\n break;\n }\n\n // pop off stack\n sp -= yyrulelen;\n\n // don't overwrite the `symbol` variable: use a local var to speed things up:\n var ntsymbol = this_production[0]; // push nonterminal (reduce)\n stack[sp] = ntsymbol;\n vstack[sp] = yyval.$;\n\n // goto new state = table[STATE][NONTERMINAL]\n newState = table[sstack[sp - 1]][ntsymbol];\n sstack[sp] = newState;\n ++sp;\n\n\n\n\n\n\n\n\n\n continue;\n\n // accept:\n case 3:\n if (sp !== -2) {\n retval = true;\n // Return the `$accept` rule's `$$` result, if available.\n //\n // Also note that JISON always adds this top-most `$accept` rule (with implicit,\n // default, action):\n //\n // $accept: <startSymbol> $end\n // %{ $$ = $1; @$ = @1; %}\n //\n // which, combined with the parse kernel's `$accept` state behaviour coded below,\n // will produce the `$$` value output of the <startSymbol> rule as the parse result,\n // IFF that result is *not* `undefined`. (See also the parser kernel code.)\n //\n // In code:\n //\n // %{\n // @$ = @1; // if location tracking support is included\n // if (typeof $1 !== 'undefined')\n // return $1;\n // else\n // return true; // the default parse result if the rule actions don't produce anything\n // %}\n sp--;\n if (typeof vstack[sp] !== 'undefined') {\n retval = vstack[sp];\n }\n }\n break;\n }\n\n // break out of loop: we accept or fail with error\n break;\n }\n } catch (ex) {\n // report exceptions through the parseError callback too, but keep the exception intact\n // if it is a known parser or lexer error which has been thrown by parseError() already:\n if (ex instanceof this.JisonParserError) {\n throw ex;\n }\n else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {\n throw ex;\n }\n\n p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);\n retval = false;\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n } finally {\n retval = this.cleanupAfterParse(retval, true, true);\n this.__reentrant_call_depth--;\n } // /finally\n\n return retval;\n}\n};\nparser.originalParseError = parser.parseError;\nparser.originalQuoteName = parser.quoteName;\n/* lexer generated by jison-lex 0.6.1-215 */\n\n/*\n * Returns a Lexer object of the following structure:\n *\n * Lexer: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a direct reference!\n *\n * This \"shared context\" object was passed to the lexer by way of \n * the `lexer.setInput(str, yy)` API before you may use it.\n *\n * This \"shared context\" object is passed to the lexer action code in `performAction()`\n * so userland code in the lexer actions may communicate with the outside world \n * and/or other lexer rules' actions in more or less complex ways.\n *\n * }\n *\n * Lexer.prototype: {\n * EOF: 1,\n * ERROR: 2,\n *\n * yy: The overall \"shared context\" object reference.\n *\n * JisonLexerError: function(msg, hash),\n *\n * performAction: function lexer__performAction(yy, yyrulenumber, YY_START),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `lexer` instance. \n * `yy_` is an alias for `this` lexer instance reference used internally.\n *\n * - `yy` : a reference to the `yy` \"shared state\" object which was passed to the lexer\n * by way of the `lexer.setInput(str, yy)` API before.\n *\n * Note:\n * The extra arguments you specified in the `%parse-param` statement in your\n * **parser** grammar definition file are passed to the lexer via this object\n * reference as member variables.\n *\n * - `yyrulenumber` : index of the matched lexer rule (regex), used internally.\n *\n * - `YY_START`: the current lexer \"start condition\" state.\n *\n * parseError: function(str, hash, ExceptionClass),\n *\n * constructLexErrorInfo: function(error_message, is_recoverable),\n * Helper function.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this lexer kernel in many places; example usage:\n *\n * var infoObj = lexer.constructParseErrorInfo('fail!', true);\n * var retVal = lexer.parseError(infoObj.errStr, infoObj, lexer.JisonLexerError);\n *\n * options: { ... lexer %options ... },\n *\n * lex: function(),\n * Produce one token of lexed input, which was passed in earlier via the `lexer.setInput()` API.\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of the **lexer** grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Lexer's additional `args...` parameters (via lexer's `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the **parser** or the jison run-time; \n * when such a collision is detected an exception is thrown to prevent the generated run-time \n * from silently accepting this confusing and potentially hazardous situation! \n *\n * cleanupAfterLex: function(do_not_nuke_errorinfos),\n * Helper function.\n *\n * This helper API is invoked when the **parse process** has completed: it is the responsibility\n * of the **parser** (or the calling userland code) to invoke this method once cleanup is desired. \n *\n * This helper may be invoked by user code to ensure the internal lexer gets properly garbage collected.\n *\n * setInput: function(input, [yy]),\n *\n *\n * input: function(),\n *\n *\n * unput: function(str),\n *\n *\n * more: function(),\n *\n *\n * reject: function(),\n *\n *\n * less: function(n),\n *\n *\n * pastInput: function(n),\n *\n *\n * upcomingInput: function(n),\n *\n *\n * showPosition: function(),\n *\n *\n * test_match: function(regex_match_array, rule_index),\n *\n *\n * next: function(),\n *\n *\n * begin: function(condition),\n *\n *\n * pushState: function(condition),\n *\n *\n * popState: function(),\n *\n *\n * topState: function(),\n *\n *\n * _currentRules: function(),\n *\n *\n * stateStackSize: function(),\n *\n *\n * performAction: function(yy, yy_, yyrulenumber, YY_START),\n *\n *\n * rules: [...],\n *\n *\n * conditions: {associative list: name ==> set},\n * }\n *\n *\n * token location info (`yylloc`): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * }\n *\n * while `this` will reference the current lexer instance.\n *\n * When `parseError` is invoked by the lexer, the default implementation will\n * attempt to invoke `yy.parser.parseError()`; when this callback is not provided\n * it will try to invoke `yy.parseError()` instead. When that callback is also not\n * provided, a `JisonLexerError` exception will be thrown containing the error\n * message and `hash`, as constructed by the `constructLexErrorInfo()` API.\n *\n * Note that the lexer's `JisonLexerError` error class is passed via the\n * `ExceptionClass` argument, which is invoked to construct the exception\n * instance to be thrown, so technically `parseError` will throw the object\n * produced by the `new ExceptionClass(str, hash)` JavaScript expression.\n *\n * ---\n *\n * You can specify lexer options by setting / modifying the `.options` object of your Lexer instance.\n * These options are available:\n *\n * (Options are permanent.)\n * \n * yy: {\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * }\n *\n * lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * WARNING: the next set of options are not meant to be changed. They echo the abilities of\n * the lexer as per when it was compiled!\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this %option has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n\nvar lexer = function() {\n /**\n * See also:\n * http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n * but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n * with userland code which might access the derived class in a 'classic' way.\n *\n * @public\n * @constructor\n * @nocollapse\n */\n function JisonLexerError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonLexerError'\n });\n\n if (msg == null)\n msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n var stacktrace;\n\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) {\n // V8\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = new Error(msg).stack;\n }\n }\n\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n }\n\n if (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);\n } else {\n JisonLexerError.prototype = Object.create(Error.prototype);\n }\n\n JisonLexerError.prototype.constructor = JisonLexerError;\n JisonLexerError.prototype.name = 'JisonLexerError';\n\n var lexer = {\n \n// Code Generator Information Report\n// ---------------------------------\n//\n// Options:\n//\n// backtracking: .................... false\n// location.ranges: ................. false\n// location line+column tracking: ... true\n//\n//\n// Forwarded Parser Analysis flags:\n//\n// uses yyleng: ..................... false\n// uses yylineno: ................... false\n// uses yytext: ..................... false\n// uses yylloc: ..................... false\n// uses lexer values: ............... true / true\n// location tracking: ............... false\n// location assignment: ............. false\n//\n//\n// Lexer Analysis flags:\n//\n// uses yyleng: ..................... ???\n// uses yylineno: ................... ???\n// uses yytext: ..................... ???\n// uses yylloc: ..................... ???\n// uses ParseError API: ............. ???\n// uses yyerror: .................... ???\n// uses location tracking & editing: ???\n// uses more() API: ................. ???\n// uses unput() API: ................ ???\n// uses reject() API: ............... ???\n// uses less() API: ................. ???\n// uses display APIs pastInput(), upcomingInput(), showPosition():\n// ............................. ???\n// uses describeYYLLOC() API: ....... ???\n//\n// --------- END OF REPORT -----------\n\nEOF: 1,\n ERROR: 2,\n\n // JisonLexerError: JisonLexerError, /// <-- injected by the code generator\n\n // options: {}, /// <-- injected by the code generator\n\n // yy: ..., /// <-- injected by setInput()\n\n __currentRuleSet__: null, /// INTERNAL USE ONLY: internal rule set cache for the current lexer state \n\n __error_infos: [], /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup \n __decompressed: false, /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use \n done: false, /// INTERNAL USE ONLY \n _backtrack: false, /// INTERNAL USE ONLY \n _input: '', /// INTERNAL USE ONLY \n _more: false, /// INTERNAL USE ONLY \n _signaled_error_token: false, /// INTERNAL USE ONLY \n conditionStack: [], /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()` \n match: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely! \n matched: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far \n matches: false, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt \n yytext: '', /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API. \n offset: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far \n yyleng: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`) \n yylineno: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located \n yylloc: null, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction \n\n /**\n * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.\n * \n * @public\n * @this {RegExpLexer}\n */\n constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {\n msg = '' + msg;\n\n // heuristic to determine if the error message already contains a (partial) source code dump\n // as produced by either `showPosition()` or `prettyPrintRange()`:\n if (show_input_position == undefined) {\n show_input_position = !(msg.indexOf('\\n') > 0 && msg.indexOf('^') > 0);\n }\n\n if (this.yylloc && show_input_position) {\n if (typeof this.prettyPrintRange === 'function') {\n var pretty_src = this.prettyPrintRange(this.yylloc);\n\n if (!/\\n\\s*$/.test(msg)) {\n msg += '\\n';\n }\n\n msg += '\\n Erroneous area:\\n' + this.prettyPrintRange(this.yylloc);\n } else if (typeof this.showPosition === 'function') {\n var pos_str = this.showPosition();\n\n if (pos_str) {\n if (msg.length && msg[msg.length - 1] !== '\\n' && pos_str[0] !== '\\n') {\n msg += '\\n' + pos_str;\n } else {\n msg += pos_str;\n }\n }\n }\n }\n\n /** @constructor */\n var pei = {\n errStr: msg,\n recoverable: !!recoverable,\n text: this.match, // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'... \n token: null,\n line: this.yylineno,\n loc: this.yylloc,\n yy: this.yy,\n lexer: this,\n\n /**\n * and make sure the error info doesn't stay due to potential\n * ref cycle via userland code manipulations.\n * These would otherwise all be memory leak opportunities!\n * \n * Note that only array and object references are nuked as those\n * constitute the set of elements which can produce a cyclic ref.\n * The rest of the members is kept intact as they are harmless.\n * \n * @public\n * @this {LexErrorInfo}\n */\n destroy: function destructLexErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // ...\n var rec = !!this.recoverable;\n\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n\n this.recoverable = rec;\n }\n };\n\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n\n return pei;\n },\n\n /**\n * handler which is invoked when a lexer error occurs.\n * \n * @public\n * @this {RegExpLexer}\n */\n parseError: function lexer_parseError(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonLexerError;\n }\n\n if (this.yy) {\n if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {\n return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n } else if (typeof this.yy.parseError === 'function') {\n return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n }\n }\n\n throw new ExceptionClass(str, hash);\n },\n\n /**\n * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.\n * \n * @public\n * @this {RegExpLexer}\n */\n yyerror: function yyError(str /*, ...args */) {\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': ' + str,\n this.options.lexerErrorsAreRecoverable\n );\n\n // Add any extra args to the hash under the name `extra_error_attributes`:\n var args = Array.prototype.slice.call(arguments, 1);\n\n if (args.length) {\n p.extra_error_attributes = args;\n }\n\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n },\n\n /**\n * final cleanup function for when we have completed lexing the input;\n * make it an API so that external code can use this one once userland\n * code has decided it's time to destroy any lingering lexer error\n * hash object instances and the like: this function helps to clean\n * up these constructs, which *may* carry cyclic references which would\n * otherwise prevent the instances from being properly and timely\n * garbage-collected, i.e. this function helps prevent memory leaks!\n * \n * @public\n * @this {RegExpLexer}\n */\n cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {\n // prevent lingering circular references from causing memory leaks:\n this.setInput('', {});\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n\n this.__error_infos.length = 0;\n }\n\n return this;\n },\n\n /**\n * clear the lexer token context; intended for internal use only\n * \n * @public\n * @this {RegExpLexer}\n */\n clear: function lexer_clear() {\n this.yytext = '';\n this.yyleng = 0;\n this.match = '';\n\n // - DO NOT reset `this.matched`\n this.matches = false;\n\n this._more = false;\n this._backtrack = false;\n var col = (this.yylloc ? this.yylloc.last_column : 0);\n\n this.yylloc = {\n first_line: this.yylineno + 1,\n first_column: col,\n last_line: this.yylineno + 1,\n last_column: col,\n range: [this.offset, this.offset]\n };\n },\n\n /**\n * resets the lexer, sets new input\n * \n * @public\n * @this {RegExpLexer}\n */\n setInput: function lexer_setInput(input, yy) {\n this.yy = yy || this.yy || {};\n\n // also check if we've fully initialized the lexer instance,\n // including expansion work to be done to go from a loaded\n // lexer to a usable lexer:\n if (!this.__decompressed) {\n // step 1: decompress the regex list:\n var rules = this.rules;\n\n for (var i = 0, len = rules.length; i < len; i++) {\n var rule_re = rules[i];\n\n // compression: is the RE an xref to another RE slot in the rules[] table?\n if (typeof rule_re === 'number') {\n rules[i] = rules[rule_re];\n }\n }\n\n // step 2: unfold the conditions[] set to make these ready for use:\n var conditions = this.conditions;\n\n for (var k in conditions) {\n var spec = conditions[k];\n var rule_ids = spec.rules;\n var len = rule_ids.length;\n var rule_regexes = new Array(len + 1); // slot 0 is unused; we use a 1-based index approach here to keep the hottest code in `lexer_next()` fast and simple! \n var rule_new_ids = new Array(len + 1);\n\n for (var i = 0; i < len; i++) {\n var idx = rule_ids[i];\n var rule_re = rules[idx];\n rule_regexes[i + 1] = rule_re;\n rule_new_ids[i + 1] = idx;\n }\n\n spec.rules = rule_new_ids;\n spec.__rule_regexes = rule_regexes;\n spec.__rule_count = len;\n }\n\n this.__decompressed = true;\n }\n\n this._input = input || '';\n this.clear();\n this._signaled_error_token = false;\n this.done = false;\n this.yylineno = 0;\n this.matched = '';\n this.conditionStack = ['INITIAL'];\n this.__currentRuleSet__ = null;\n\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n this.offset = 0;\n return this;\n },\n\n /**\n * edit the remaining input via user-specified callback.\n * This can be used to forward-adjust the input-to-parse, \n * e.g. inserting macro expansions and alike in the\n * input which has yet to be lexed.\n * The behaviour of this API contrasts the `unput()` et al\n * APIs as those act on the *consumed* input, while this\n * one allows one to manipulate the future, without impacting\n * the current `yyloc` cursor location or any history. \n * \n * Use this API to help implement C-preprocessor-like\n * `#include` statements, etc.\n * \n * The provided callback must be synchronous and is\n * expected to return the edited input (string).\n *\n * The `cpsArg` argument value is passed to the callback\n * as-is.\n *\n * `callback` interface: \n * `function callback(input, cpsArg)`\n * \n * - `input` will carry the remaining-input-to-lex string\n * from the lexer.\n * - `cpsArg` is `cpsArg` passed into this API.\n * \n * The `this` reference for the callback will be set to\n * reference this lexer instance so that userland code\n * in the callback can easily and quickly access any lexer\n * API. \n *\n * When the callback returns a non-string-type falsey value,\n * we assume the callback did not edit the input and we\n * will using the input as-is.\n *\n * When the callback returns a non-string-type value, it\n * is converted to a string for lexing via the `\"\" + retval`\n * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html \n * -- that way any returned object's `toValue()` and `toString()`\n * methods will be invoked in a proper/desirable order.)\n * \n * @public\n * @this {RegExpLexer}\n */\n editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {\n var rv = callback.call(this, this._input, cpsArg);\n\n if (typeof rv !== 'string') {\n if (rv) {\n this._input = '' + rv;\n } \n // else: keep `this._input` as is. \n } else {\n this._input = rv;\n }\n\n return this;\n },\n\n /**\n * consumes and returns one char from the input\n * \n * @public\n * @this {RegExpLexer}\n */\n input: function lexer_input() {\n if (!this._input) {\n //this.done = true; -- don't set `done` as we want the lex()/next() API to be able to produce one custom EOF token match after this anyhow. (lexer can match special <<EOF>> tokens and perform user action code for a <<EOF>> match, but only does so *once*)\n return null;\n }\n\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n\n // Count the linenumber up when we hit the LF (or a stand-alone CR).\n // On CRLF, the linenumber is incremented when you fetch the CR or the CRLF combo\n // and we advance immediately past the LF as well, returning both together as if\n // it was all a single 'character' only.\n var slice_len = 1;\n\n var lines = false;\n\n if (ch === '\\n') {\n lines = true;\n } else if (ch === '\\r') {\n lines = true;\n var ch2 = this._input[1];\n\n if (ch2 === '\\n') {\n slice_len++;\n ch += ch2;\n this.yytext += ch2;\n this.yyleng++;\n this.offset++;\n this.match += ch2;\n this.matched += ch2;\n this.yylloc.range[1]++;\n }\n }\n\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n this.yylloc.last_column = 0;\n } else {\n this.yylloc.last_column++;\n }\n\n this.yylloc.range[1]++;\n this._input = this._input.slice(slice_len);\n return ch;\n },\n\n /**\n * unshifts one char (or an entire string) into the input\n * \n * @public\n * @this {RegExpLexer}\n */\n unput: function lexer_unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.yyleng = this.yytext.length;\n this.offset -= len;\n this.match = this.match.substr(0, this.match.length - len);\n this.matched = this.matched.substr(0, this.matched.length - len);\n\n if (lines.length > 1) {\n this.yylineno -= lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n\n // Get last entirely matched line into the `pre_lines[]` array's\n // last index slot; we don't mind when other previously \n // matched lines end up in the array too. \n var pre = this.match;\n\n var pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n\n if (pre_lines.length === 1) {\n pre = this.matched;\n pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n }\n\n this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;\n } else {\n this.yylloc.last_column -= len;\n }\n\n this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;\n this.done = false;\n return this;\n },\n\n /**\n * cache matched text and append it on next action\n * \n * @public\n * @this {RegExpLexer}\n */\n more: function lexer_more() {\n this._more = true;\n return this;\n },\n\n /**\n * signal the lexer that this rule fails to match the input, so the\n * next matching rule (regex) should be tested instead.\n * \n * @public\n * @this {RegExpLexer}\n */\n reject: function lexer_reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n // when the `parseError()` call returns, we MUST ensure that the error is registered.\n // We accomplish this by signaling an 'error' token to be produced for the current\n // `.lex()` run.\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',\n false\n );\n\n this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n\n return this;\n },\n\n /**\n * retain first n characters of the match\n * \n * @public\n * @this {RegExpLexer}\n */\n less: function lexer_less(n) {\n return this.unput(this.match.slice(n));\n },\n\n /**\n * return (part of the) already matched input, i.e. for error\n * messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of\n * input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n * \n * @public\n * @this {RegExpLexer}\n */\n pastInput: function lexer_pastInput(maxSize, maxLines) {\n var past = this.matched.substring(0, this.matched.length - this.match.length);\n\n if (maxSize < 0)\n maxSize = past.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = past.length; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substr` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n past = past.substr(-maxSize * 2 - 2);\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = past.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(-maxLines);\n past = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis prefix...\n if (past.length > maxSize) {\n past = '...' + past.substr(-maxSize);\n }\n\n return past;\n },\n\n /**\n * return (part of the) upcoming input, i.e. for error messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n *\n * > ### NOTE ###\n * >\n * > *\"upcoming input\"* is defined as the whole of the both\n * > the *currently lexed* input, together with any remaining input\n * > following that. *\"currently lexed\"* input is the input \n * > already recognized by the lexer but not yet returned with\n * > the lexer token. This happens when you are invoking this API\n * > from inside any lexer rule action code block. \n * >\n * \n * @public\n * @this {RegExpLexer}\n */\n upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {\n var next = this.match;\n\n if (maxSize < 0)\n maxSize = next.length + this._input.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = maxSize; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substring` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n if (next.length < maxSize * 2 + 2) {\n next += this._input.substring(0, maxSize * 2 + 2); // substring is faster on Chrome/V8 \n }\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = next.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(0, maxLines);\n next = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis postfix...\n if (next.length > maxSize) {\n next = next.substring(0, maxSize) + '...';\n }\n\n return next;\n },\n\n /**\n * return a string which displays the character position where the\n * lexing error occurred, i.e. for error messages\n * \n * @public\n * @this {RegExpLexer}\n */\n showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {\n var pre = this.pastInput(maxPrefix).replace(/\\s/g, ' ');\n var c = new Array(pre.length + 1).join('-');\n return pre + this.upcomingInput(maxPostfix).replace(/\\s/g, ' ') + '\\n' + c + '^';\n },\n\n /**\n * return an YYLLOC info object derived off the given context (actual, preceding, following, current).\n * Use this method when the given `actual` location is not guaranteed to exist (i.e. when\n * it MAY be NULL) and you MUST have a valid location info object anyway:\n * then we take the given context of the `preceding` and `following` locations, IFF those are available,\n * and reconstruct the `actual` location info from those.\n * If this fails, the heuristic is to take the `current` location, IFF available.\n * If this fails as well, we assume the sought location is at/around the current lexer position\n * and then produce that one as a response. DO NOTE that these heuristic/derived location info\n * values MAY be inaccurate!\n *\n * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just\n * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).\n * \n * @public\n * @this {RegExpLexer}\n */\n deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {\n var loc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n if (actual) {\n loc.first_line = actual.first_line | 0;\n loc.last_line = actual.last_line | 0;\n loc.first_column = actual.first_column | 0;\n loc.last_column = actual.last_column | 0;\n\n if (actual.range) {\n loc.range[0] = actual.range[0] | 0;\n loc.range[1] = actual.range[1] | 0;\n }\n }\n\n if (loc.first_line <= 0 || loc.last_line < loc.first_line) {\n // plan B: heuristic using preceding and following:\n if (loc.first_line <= 0 && preceding) {\n loc.first_line = preceding.last_line | 0;\n loc.first_column = preceding.last_column | 0;\n\n if (preceding.range) {\n loc.range[0] = actual.range[1] | 0;\n }\n }\n\n if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {\n loc.last_line = following.first_line | 0;\n loc.last_column = following.first_column | 0;\n\n if (following.range) {\n loc.range[1] = actual.range[0] | 0;\n }\n }\n\n // plan C?: see if the 'current' location is useful/sane too:\n if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {\n loc.first_line = current.first_line | 0;\n loc.first_column = current.first_column | 0;\n\n if (current.range) {\n loc.range[0] = current.range[0] | 0;\n }\n }\n\n if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {\n loc.last_line = current.last_line | 0;\n loc.last_column = current.last_column | 0;\n\n if (current.range) {\n loc.range[1] = current.range[1] | 0;\n }\n }\n }\n\n // sanitize: fix last_line BEFORE we fix first_line as we use the 'raw' value of the latter\n // or plan D heuristics to produce a 'sensible' last_line value:\n if (loc.last_line <= 0) {\n if (loc.first_line <= 0) {\n loc.first_line = this.yylloc.first_line;\n loc.last_line = this.yylloc.last_line;\n loc.first_column = this.yylloc.first_column;\n loc.last_column = this.yylloc.last_column;\n loc.range[0] = this.yylloc.range[0];\n loc.range[1] = this.yylloc.range[1];\n } else {\n loc.last_line = this.yylloc.last_line;\n loc.last_column = this.yylloc.last_column;\n loc.range[1] = this.yylloc.range[1];\n }\n }\n\n if (loc.first_line <= 0) {\n loc.first_line = loc.last_line;\n loc.first_column = 0; // loc.last_column; \n loc.range[1] = loc.range[0];\n }\n\n if (loc.first_column < 0) {\n loc.first_column = 0;\n }\n\n if (loc.last_column < 0) {\n loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);\n }\n\n return loc;\n },\n\n /**\n * return a string which displays the lines & columns of input which are referenced \n * by the given location info range, plus a few lines of context.\n * \n * This function pretty-prints the indicated section of the input, with line numbers \n * and everything!\n * \n * This function is very useful to provide highly readable error reports, while\n * the location range may be specified in various flexible ways:\n * \n * - `loc` is the location info object which references the area which should be\n * displayed and 'marked up': these lines & columns of text are marked up by `^`\n * characters below each character in the entire input range.\n * \n * - `context_loc` is the *optional* location info object which instructs this\n * pretty-printer how much *leading* context should be displayed alongside\n * the area referenced by `loc`. This can help provide context for the displayed\n * error, etc.\n * \n * When this location info is not provided, a default context of 3 lines is\n * used.\n * \n * - `context_loc2` is another *optional* location info object, which serves\n * a similar purpose to `context_loc`: it specifies the amount of *trailing*\n * context lines to display in the pretty-print output.\n * \n * When this location info is not provided, a default context of 1 line only is\n * used.\n * \n * Special Notes:\n * \n * - when the `loc`-indicated range is very large (about 5 lines or more), then\n * only the first and last few lines of this block are printed while a\n * `...continued...` message will be printed between them.\n * \n * This serves the purpose of not printing a huge amount of text when the `loc`\n * range happens to be huge: this way a manageable & readable output results\n * for arbitrary large ranges.\n * \n * - this function can display lines of input which whave not yet been lexed.\n * `prettyPrintRange()` can access the entire input!\n * \n * @public\n * @this {RegExpLexer}\n */\n prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {\n loc = this.deriveLocationInfo(loc, context_loc, context_loc2);\n const CONTEXT = 3;\n const CONTEXT_TAIL = 1;\n const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;\n var input = this.matched + this._input;\n var lines = input.split('\\n');\n var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));\n var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));\n var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;\n var ws_prefix = new Array(lineno_display_width).join(' ');\n var nonempty_line_indexes = [];\n\n var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {\n var lno = index + l0;\n var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);\n var rv = lno_pfx + ': ' + line;\n var errpfx = new Array(lineno_display_width + 1).join('^');\n var offset = 2 + 1;\n var len = 0;\n\n if (lno === loc.first_line) {\n offset += loc.first_column;\n\n len = Math.max(\n 2,\n ((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1\n );\n } else if (lno === loc.last_line) {\n len = Math.max(2, loc.last_column + 1);\n } else if (lno > loc.first_line && lno < loc.last_line) {\n len = Math.max(2, line.length + 1);\n }\n\n if (len) {\n var lead = new Array(offset).join('.');\n var mark = new Array(len).join('^');\n rv += '\\n' + errpfx + lead + mark;\n\n if (line.trim().length > 0) {\n nonempty_line_indexes.push(index);\n }\n }\n\n rv = rv.replace(/\\t/g, ' ');\n return rv;\n });\n\n // now make sure we don't print an overly large amount of error area: limit it \n // to the top and bottom line count:\n if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {\n var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;\n var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;\n var intermediate_line = new Array(lineno_display_width + 1).join(' ') + ' (...continued...)';\n intermediate_line += '\\n' + new Array(lineno_display_width + 1).join('-') + ' (---------------)';\n rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);\n }\n\n return rv.join('\\n');\n },\n\n /**\n * helper function, used to produce a human readable description as a string, given\n * the input `yylloc` location object.\n * \n * Set `display_range_too` to TRUE to include the string character index position(s)\n * in the description if the `yylloc.range` is available.\n * \n * @public\n * @this {RegExpLexer}\n */\n describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {\n var l1 = yylloc.first_line;\n var l2 = yylloc.last_line;\n var c1 = yylloc.first_column;\n var c2 = yylloc.last_column;\n var dl = l2 - l1;\n var dc = c2 - c1;\n var rv;\n\n if (dl === 0) {\n rv = 'line ' + l1 + ', ';\n\n if (dc <= 1) {\n rv += 'column ' + c1;\n } else {\n rv += 'columns ' + c1 + ' .. ' + c2;\n }\n } else {\n rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';\n }\n\n if (yylloc.range && display_range_too) {\n var r1 = yylloc.range[0];\n var r2 = yylloc.range[1] - 1;\n\n if (r2 <= r1) {\n rv += ' {String Offset: ' + r1 + '}';\n } else {\n rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';\n }\n }\n\n return rv;\n },\n\n /**\n * test the lexed token: return FALSE when not a match, otherwise return token.\n * \n * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`\n * contains the actually matched text string.\n * \n * Also move the input cursor forward and update the match collectors:\n * \n * - `yytext`\n * - `yyleng`\n * - `match`\n * - `matches`\n * - `yylloc`\n * - `offset`\n * \n * @public\n * @this {RegExpLexer}\n */\n test_match: function lexer_test_match(match, indexed_rule) {\n var token, lines, backup, match_str, match_str_len;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.yylloc.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column,\n range: this.yylloc.range.slice(0)\n },\n\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n\n //_signaled_error_token: this._signaled_error_token,\n yy: this.yy,\n\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n }\n\n match_str = match[0];\n match_str_len = match_str.length;\n\n // if (match_str.indexOf('\\n') !== -1 || match_str.indexOf('\\r') !== -1) {\n lines = match_str.split(/(?:\\r\\n?|\\n)/g);\n\n if (lines.length > 1) {\n this.yylineno += lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n this.yylloc.last_column = lines[lines.length - 1].length;\n } else {\n this.yylloc.last_column += match_str_len;\n }\n\n // }\n this.yytext += match_str;\n\n this.match += match_str;\n this.matched += match_str;\n this.matches = match;\n this.yyleng = this.yytext.length;\n this.yylloc.range[1] += match_str_len;\n\n // previous lex rules MAY have invoked the `more()` API rather than producing a token:\n // those rules will already have moved this `offset` forward matching their match lengths,\n // hence we must only add our own match length now:\n this.offset += match_str_len;\n\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match_str_len);\n\n // calling this method:\n //\n // function lexer__performAction(yy, yyrulenumber, YY_START) {...}\n token = this.performAction.call(\n this,\n this.yy,\n indexed_rule,\n this.conditionStack[this.conditionStack.length - 1] /* = YY_START */\n );\n\n // otherwise, when the action codes are all simple return token statements:\n //token = this.simpleCaseActionClusters[indexed_rule];\n\n if (this.done && this._input) {\n this.done = false;\n }\n\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n\n this.__currentRuleSet__ = null;\n return false; // rule action called reject() implying the next rule should be tested instead. \n } else if (this._signaled_error_token) {\n // produce one 'error' token as `.parseError()` in `reject()`\n // did not guarantee a failure signal by throwing an exception!\n token = this._signaled_error_token;\n\n this._signaled_error_token = false;\n return token;\n }\n\n return false;\n },\n\n /**\n * return next match in input\n * \n * @public\n * @this {RegExpLexer}\n */\n next: function lexer_next() {\n if (this.done) {\n this.clear();\n return this.EOF;\n }\n\n if (!this._input) {\n this.done = true;\n }\n\n var token, match, tempMatch, index;\n\n if (!this._more) {\n this.clear();\n }\n\n var spec = this.__currentRuleSet__;\n\n if (!spec) {\n // Update the ruleset cache as we apparently encountered a state change or just started lexing.\n // The cache is set up for fast lookup -- we assume a lexer will switch states much less often than it will\n // invoke the `lex()` token-producing API and related APIs, hence caching the set for direct access helps\n // speed up those activities a tiny bit.\n spec = this.__currentRuleSet__ = this._currentRules();\n\n // Check whether a *sane* condition has been pushed before: this makes the lexer robust against\n // user-programmer bugs such as https://github.com/zaach/jison-lex/issues/19\n if (!spec || !spec.rules) {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name \"' + this.topState() + '\"; this is a fatal error and should be reported to the application programmer team!',\n false\n );\n\n // produce one 'error' token until this situation has been resolved, most probably by parse termination!\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n }\n\n var rule_ids = spec.rules;\n var regexes = spec.__rule_regexes;\n var len = spec.__rule_count;\n\n // Note: the arrays are 1-based, while `len` itself is a valid index,\n // hence the non-standard less-or-equal check in the next loop condition!\n for (var i = 1; i <= len; i++) {\n tempMatch = this._input.match(regexes[i]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rule_ids[i]);\n\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = undefined;\n continue; // rule action called reject() implying a rule MISmatch. \n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n\n if (match) {\n token = this.test_match(match, rule_ids[index]);\n\n if (token !== false) {\n return token;\n }\n\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n\n if (!this._input) {\n this.done = true;\n this.clear();\n return this.EOF;\n } else {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': Unrecognized text.',\n this.options.lexerErrorsAreRecoverable\n );\n\n var pendingInput = this._input;\n var activeCondition = this.topState();\n var conditionStackDepth = this.conditionStack.length;\n token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n\n if (token === this.ERROR) {\n // we can try to recover from a lexer error that `parseError()` did not 'recover' for us\n // by moving forward at least one character at a time IFF the (user-specified?) `parseError()`\n // has not consumed/modified any pending input or changed state in the error handler:\n if (!this.matches && // and make sure the input has been modified/consumed ...\n pendingInput === this._input && // ...or the lexer state has been modified significantly enough\n // to merit a non-consuming error handling action right now.\n activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {\n this.input();\n }\n }\n\n return token;\n }\n },\n\n /**\n * return next match that has a token\n * \n * @public\n * @this {RegExpLexer}\n */\n lex: function lexer_lex() {\n var r;\n\n // allow the PRE/POST handlers set/modify the return token for maximum flexibility of the generated lexer:\n if (typeof this.pre_lex === 'function') {\n r = this.pre_lex.call(this, 0);\n }\n\n if (typeof this.options.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.pre_lex.call(this, r) || r;\n }\n\n if (this.yy && typeof this.yy.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.pre_lex.call(this, r) || r;\n }\n\n while (!r) {\n r = this.next();\n }\n\n if (this.yy && typeof this.yy.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.post_lex.call(this, r) || r;\n }\n\n if (typeof this.options.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.post_lex.call(this, r) || r;\n }\n\n if (typeof this.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.post_lex.call(this, r) || r;\n }\n\n return r;\n },\n\n /**\n * return next match that has a token. Identical to the `lex()` API but does not invoke any of the \n * `pre_lex()` nor any of the `post_lex()` callbacks.\n * \n * @public\n * @this {RegExpLexer}\n */\n fastLex: function lexer_fastLex() {\n var r;\n\n while (!r) {\n r = this.next();\n }\n\n return r;\n },\n\n /**\n * return info about the lexer state that can help a parser or other lexer API user to use the\n * most efficient means available. This API is provided to aid run-time performance for larger\n * systems which employ this lexer.\n * \n * @public\n * @this {RegExpLexer}\n */\n canIUse: function lexer_canIUse() {\n var rv = {\n fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'\n };\n\n return rv;\n },\n\n /**\n * backwards compatible alias for `pushState()`;\n * the latter is symmetrical with `popState()` and we advise to use\n * those APIs in any modern lexer code, rather than `begin()`.\n * \n * @public\n * @this {RegExpLexer}\n */\n begin: function lexer_begin(condition) {\n return this.pushState(condition);\n },\n\n /**\n * activates a new lexer condition state (pushes the new lexer\n * condition state onto the condition stack)\n * \n * @public\n * @this {RegExpLexer}\n */\n pushState: function lexer_pushState(condition) {\n this.conditionStack.push(condition);\n this.__currentRuleSet__ = null;\n return this;\n },\n\n /**\n * pop the previously active lexer condition state off the condition\n * stack\n * \n * @public\n * @this {RegExpLexer}\n */\n popState: function lexer_popState() {\n var n = this.conditionStack.length - 1;\n\n if (n > 0) {\n this.__currentRuleSet__ = null;\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n /**\n * return the currently active lexer condition state; when an index\n * argument is provided it produces the N-th previous condition state,\n * if available\n * \n * @public\n * @this {RegExpLexer}\n */\n topState: function lexer_topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return 'INITIAL';\n }\n },\n\n /**\n * (internal) determine the lexer rule set which is active for the\n * currently active lexer condition state\n * \n * @public\n * @this {RegExpLexer}\n */\n _currentRules: function lexer__currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]];\n } else {\n return this.conditions['INITIAL'];\n }\n },\n\n /**\n * return the number of states currently on the stack\n * \n * @public\n * @this {RegExpLexer}\n */\n stateStackSize: function lexer_stateStackSize() {\n return this.conditionStack.length;\n },\n\n options: {\n trackPosition: true\n },\n\n JisonLexerError: JisonLexerError,\n\n performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {\n var yy_ = this;\n var YYSTATE = YY_START;\n\n switch (yyrulenumber) {\n case 1:\n /*! Conditions:: INITIAL */\n /*! Rule:: \\s+ */\n /* skip whitespace */\n break;\n\n default:\n return this.simpleCaseActionClusters[yyrulenumber];\n }\n },\n\n simpleCaseActionClusters: {\n /*! Conditions:: INITIAL */\n /*! Rule:: (--[0-9a-z-A-Z-]*) */\n 0: 13,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\* */\n 2: 5,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\/ */\n 3: 6,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\+ */\n 4: 3,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: - */\n 5: 4,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)px\\b */\n 6: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)cm\\b */\n 7: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)mm\\b */\n 8: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)in\\b */\n 9: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pt\\b */\n 10: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pc\\b */\n 11: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)deg\\b */\n 12: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)grad\\b */\n 13: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rad\\b */\n 14: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)turn\\b */\n 15: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)s\\b */\n 16: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ms\\b */\n 17: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)Hz\\b */\n 18: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)kHz\\b */\n 19: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpi\\b */\n 20: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpcm\\b */\n 21: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dppx\\b */\n 22: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)em\\b */\n 23: 20,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ex\\b */\n 24: 21,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ch\\b */\n 25: 22,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rem\\b */\n 26: 23,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vw\\b */\n 27: 25,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vh\\b */\n 28: 24,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmin\\b */\n 29: 26,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmax\\b */\n 30: 27,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)% */\n 31: 28,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\b */\n 32: 11,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (calc) */\n 33: 9,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (var) */\n 34: 12,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([a-z]+) */\n 35: 10,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\( */\n 36: 7,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\) */\n 37: 8,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: , */\n 38: 14,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: $ */\n 39: 1\n },\n\n rules: [\n /* 0: */ /^(?:(--[\\d\\-A-Za-z]*))/,\n /* 1: */ /^(?:\\s+)/,\n /* 2: */ /^(?:\\*)/,\n /* 3: */ /^(?:\\/)/,\n /* 4: */ /^(?:\\+)/,\n /* 5: */ /^(?:-)/,\n /* 6: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)px\\b)/,\n /* 7: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)cm\\b)/,\n /* 8: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)mm\\b)/,\n /* 9: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)in\\b)/,\n /* 10: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pt\\b)/,\n /* 11: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pc\\b)/,\n /* 12: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)deg\\b)/,\n /* 13: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)grad\\b)/,\n /* 14: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rad\\b)/,\n /* 15: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)turn\\b)/,\n /* 16: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)s\\b)/,\n /* 17: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ms\\b)/,\n /* 18: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)Hz\\b)/,\n /* 19: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)kHz\\b)/,\n /* 20: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpi\\b)/,\n /* 21: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpcm\\b)/,\n /* 22: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dppx\\b)/,\n /* 23: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)em\\b)/,\n /* 24: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ex\\b)/,\n /* 25: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ch\\b)/,\n /* 26: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rem\\b)/,\n /* 27: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vw\\b)/,\n /* 28: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vh\\b)/,\n /* 29: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmin\\b)/,\n /* 30: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmax\\b)/,\n /* 31: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)%)/,\n /* 32: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)\\b)/,\n /* 33: */ /^(?:(calc))/,\n /* 34: */ /^(?:(var))/,\n /* 35: */ /^(?:([a-z]+))/,\n /* 36: */ /^(?:\\()/,\n /* 37: */ /^(?:\\))/,\n /* 38: */ /^(?:,)/,\n /* 39: */ /^(?:$)/\n ],\n\n conditions: {\n 'INITIAL': {\n rules: [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39\n ],\n\n inclusive: true\n }\n }\n };\n\n return lexer;\n}();\nparser.lexer = lexer;\n\n\n\nfunction Parser() {\n this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\nreturn new Parser();\n})();\n\n \n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\n exports.parser = parser;\n exports.Parser = parser.Parser;\n exports.parse = function () {\n return parser.parse.apply(parser, arguments);\n };\n \n}\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next, quote, prev, token, escape, escapePos, whitespacePos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash && value.charCodeAt(next + 1) !== star)\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n token = {\n type: \"comment\",\n sourceIndex: pos\n };\n\n next = value.indexOf(\"*/\", pos);\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(pos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n }\n pos = next + 1;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n after = \"\";\n balanced -= 1;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n }\n\n return stack[0].nodes;\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var sciPos = -1;\n var containsNumber = false;\n var code;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n containsNumber = true;\n } else if (code === exp || code === EXP) {\n if (sciPos > -1) {\n break;\n }\n sciPos = pos;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n dotted = true;\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n } else {\n break;\n }\n\n pos += 1;\n }\n\n if (sciPos + 1 === pos) pos--;\n\n return containsNumber\n ? {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n }\n : false;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.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(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=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&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=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","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * @license React\n * use-sync-external-store-shim.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 e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.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 h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","__webpack_require__.nc = undefined;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import { createContext } from 'react';\nexport const ReactReduxContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\nexport function useReduxContext() {\n const contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : () => useContext(context);\n return function useSelector(selector, equalityFn = refEquality) {\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState\n } = useReduxContext();\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: () => listeners\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState\n}) {\n const contextValue = useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined\n };\n }, [store, serverState]);\n const previousState = useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : () => useContext(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an <a href> attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n go(delta) {\n action = Action.Pop;\n index = clampIndex(index + delta);\n if (listener) {\n listener({ action, location: getCurrentLocation() });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly<Location> {\n let location: Readonly<Location> = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial<Path>) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n let parsedPath: Partial<Path> = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function handlePop() {\n action = Action.Pop;\n if (listener) {\n listener({ action, location: history.location });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: location });\n }\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\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 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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","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}","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 if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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}","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}","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 setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = useRef();\n const lastWrapperProps = useRef(wrapperProps);\n const childPropsFromStoreUpdate = useRef();\n const renderIsScheduled = useRef(false);\n const isProcessingDispatch = useRef(false);\n const isMounted = useRef(false);\n const latestSubscriptionCallbackError = useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import type { Location, Path, To } from \"./history\";\nimport { parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type FormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: Exclude<FormMethod, \"get\">;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam<L> | _PathParam<R>\n : // find params after `:`\n Path extends `${string}:${infer Param}`\n ? Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam<Path extends string> =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam<Rest>\n : // look for params in the absence of wildcards\n _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n // if could not find path params, fallback to `string`\n [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set<string> = new Set<string>()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch<string, RouteObjectType>(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch<RouteObjectType>[] = [],\n parentsMeta: RouteMeta<RouteObjectType>[] = [],\n parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta<RouteObjectType> = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch<RouteObjectType>,\n pathname: string\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params<ParamKey>,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n path: Path,\n params: {\n [key in PathParam<Path>]: string;\n } = {} as any\n): string {\n return path\n .replace(/:(\\w+)/g, (_, key: PathParam<Path>) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam<Path>;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n });\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial<Path>\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in <Link to=\"...\"> and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial<Path>;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise<any> {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeys: Set<string | number> = new Set<string | number>();\n private controller: AbortController;\n private abortPromise: Promise<void>;\n private unlistenAbortSignal: () => void;\n private subscriber?: (aborted: boolean) => void = undefined;\n data: Record<string, unknown>;\n\n constructor(data: Record<string, unknown>) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n }\n\n private trackPromise(\n key: string | number,\n value: Promise<unknown> | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.pendingKeys.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string | number,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeys.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n const subscriber = this.subscriber;\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n subscriber && subscriber(false);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n subscriber && subscriber(false);\n return data;\n }\n\n subscribe(fn: (aborted: boolean) => void) {\n this.subscriber = fn;\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n let subscriber = this.subscriber;\n subscriber && subscriber(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeys.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport function defer(data: Record<string, unknown>) {\n return new DeferredData(data);\n}\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n\n constructor(status: number, statusText: string | undefined, data: any) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.data = data;\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\nexport function isRouteErrorResponse(e: any): e is ErrorResponse {\n return e instanceof ErrorResponse;\n}\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\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore<T>(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\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 * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\n// Contexts for data routers\nexport const DataStaticRouterContext =\n React.createContext<StaticHandlerContext | null>(null);\nif (__DEV__) {\n DataStaticRouterContext.displayName = \"DataStaticRouterContext\";\n}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n}\n\nexport const DataRouterContext =\n React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n DataStaticRouterContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nfunction getPathContributingMatches(matches: RouteMatch[]) {\n return matches.filter(\n (match, index) =>\n index === 0 ||\n (!match.route.index &&\n match.pathnameBase !== matches[index - 1].pathnameBase)\n );\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg) {\n return (\n <LocationContext.Provider\n value={{\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location,\n },\n navigationType: NavigationType.Pop,\n }}\n >\n {renderedMatches}\n </LocationContext.Provider>\n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n return (\n <>\n <h2>Unhandled Thrown Error!</h2>\n <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n {stack ? <pre style={preStyles}>{stack}</pre> : null}\n <p>💿 Hey developer 👋</p>\n <p>\n You can provide a way better UX than this when your app throws errors by\n providing your own \n <code style={codeStyles}>errorElement</code> props on \n <code style={codeStyles}><Route></code>\n </p>\n </>\n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n <RouteErrorContext.Provider\n value={this.state.error}\n children={this.props.component}\n />\n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch<string, RouteObject>;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataStaticRouterContext = React.useContext(DataStaticRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataStaticRouterContext && match.route.errorElement) {\n dataStaticRouterContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n <RouteContext.Provider value={routeContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || <DefaultErrorElement />\n : null;\n let getChildren = () => (\n <RenderedRoute\n match={match}\n routeContext={{\n outlet,\n matches: parentMatches.concat(renderedMatches.slice(0, index + 1)),\n }}\n >\n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n </RenderedRoute>\n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n <RenderErrorBoundary\n location={dataRouterState.location}\n component={errorElement}\n error={error}\n children={getChildren()}\n />\n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useLoaderData must be used inside a RouteContext`);\n\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `useLoaderData can only be used on routes that contain a unique \"id\"`\n );\n\n return state.loaderData[thisRoute.route.id];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let route = React.useContext(RouteContext);\n let thisRoute = route.matches[route.matches.length - 1];\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n invariant(route, `useRouteError must be used inside a RouteContext`);\n invariant(\n thisRoute.route.id,\n `useRouteError can only be used on routes that contain a unique \"id\"`\n );\n\n // Otherwise look for errors from our data router state\n return state.errors?.[thisRoute.route.id];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n return (\n <DataRouterContext.Provider\n value={{\n router,\n navigator,\n static: false,\n // Do we need this?\n basename,\n }}\n >\n <DataRouterStateContext.Provider value={state}>\n <Router\n basename={router.basename}\n location={router.state.location}\n navigationType={router.state.historyAction}\n navigator={navigator}\n >\n {router.state.initialized ? <Routes /> : fallbackElement}\n </Router>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n );\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let dataRouterState = React.useContext(DataRouterStateContext);\n let navigate = useNavigate();\n\n React.useEffect(() => {\n // Avoid kicking off multiple navigations if we're in the middle of a\n // data-router navigation, since components get re-rendered when we enter\n // a submitting/loading state\n if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n return;\n }\n navigate(to, { replace, state, relative });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n let dataRouterContext = React.useContext(DataRouterContext);\n // When in a DataRouterContext _without_ children, we use the router routes\n // directly. If we have children, then we're in a descendant tree and we\n // need to use child routes.\n let routes =\n dataRouterContext && !children\n ? (dataRouterContext.router.routes as DataRouteObject[])\n : createRoutesFromChildren(children);\n return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited<any>): React.ReactElement;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n <ResolveAwait>{children}</ResolveAwait>\n </AwaitErrorBoundary>\n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return <AwaitContext.Provider value={promise} children={errorElement} />;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return <AwaitContext.Provider value={promise} children={children} />;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n if (typeof children === \"function\") {\n return children(data);\n }\n return <>{children}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, parentPath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let treePath = [...parentPath, index];\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n hasErrorBoundary: element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\nexport function enhanceManualRouteObjects(\n routes: RouteObject[]\n): RouteObject[] {\n return routes.map((route) => {\n let routeClone = { ...route };\n if (routeClone.hasErrorBoundary == null) {\n routeClone.hasErrorBoundary = routeClone.errorElement != null;\n }\n if (routeClone.children) {\n routeClone.children = enhanceManualRouteObjects(routeClone.children);\n }\n return routeClone;\n });\n}\n","/**\n * Browser-safe usage of process\n */\nconst defaultEnvironment = \"production\";\nconst env = typeof process === \"undefined\" || process.env === undefined\n ? defaultEnvironment\n : process.env.NODE_ENV || defaultEnvironment;\n\nexport { env };\n","const defaultTimestep = (1 / 60) * 1000;\nconst getCurrentTime = typeof performance !== \"undefined\"\n ? () => performance.now()\n : () => Date.now();\nconst onNextFrame = typeof window !== \"undefined\"\n ? (callback) => window.requestAnimationFrame(callback)\n : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\nexport { defaultTimestep, onNextFrame };\n","import { onNextFrame, defaultTimestep } from './on-next-frame.mjs';\nimport { createRenderStep } from './create-render-step.mjs';\n\nconst maxElapsed = 40;\nlet useDefaultElapsed = true;\nlet runNextFrame = false;\nlet isProcessing = false;\nconst frame = {\n delta: 0,\n timestamp: 0,\n};\nconst stepsOrder = [\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n}, {});\nconst sync = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n startLoop();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n}, {});\nconst cancelSync = stepsOrder.reduce((acc, key) => {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nconst flushSync = stepsOrder.reduce((acc, key) => {\n acc[key] = () => steps[key].process(frame);\n return acc;\n}, {});\nconst processStep = (stepId) => steps[stepId].process(frame);\nconst processFrame = (timestamp) => {\n runNextFrame = false;\n frame.delta = useDefaultElapsed\n ? defaultTimestep\n : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (runNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nconst startLoop = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing)\n onNextFrame(processFrame);\n};\nconst getFrameData = () => frame;\n\nexport default sync;\nexport { cancelSync, flushSync, getFrameData };\n","function createRenderStep(runNextFrame) {\n let toRun = [];\n let toRunNextFrame = [];\n let numToRun = 0;\n let isProcessing = false;\n let flushNextFrame = false;\n const toKeepAlive = new WeakSet();\n const step = {\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (buffer.indexOf(callback) === -1) {\n buffer.push(callback);\n if (addToCurrentFrame && isProcessing)\n numToRun = toRun.length;\n }\n return callback;\n },\n cancel: (callback) => {\n const index = toRunNextFrame.indexOf(callback);\n if (index !== -1)\n toRunNextFrame.splice(index, 1);\n toKeepAlive.delete(callback);\n },\n process: (frameData) => {\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n toRunNextFrame.length = 0;\n numToRun = toRun.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = toRun[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\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 { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","const warned = new Set();\nfunction warnOnce(condition, message, element) {\n if (condition || warned.has(message))\n return;\n console.warn(message);\n if (element)\n console.warn(element);\n warned.add(message);\n}\n\nexport { warnOnce };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { env } from '../../utils/process.mjs';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n // Support deprecated exitBeforeEnter prop\n if (exitBeforeEnter) {\n mode = \"wait\";\n warnOnce(false, \"Replace exitBeforeEnter with mode='wait'\");\n }\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n let [forceRender] = useForceUpdate();\n const forceRenderLayoutGroup = useContext(LayoutGroupContext).forceRender;\n if (forceRenderLayoutGroup)\n forceRender = forceRenderLayoutGroup;\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exiting = new Set();\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exiting.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1) {\n exiting.add(key);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exiting.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exiting.forEach((key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n const onExit = () => {\n allChildren.delete(key);\n exiting.delete(key);\n // Remove this child from the present children\n const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exiting.size) {\n presentChildren.current = filteredChildren;\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n childrenToRender.splice(insertionIndex, 0, React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exiting.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (env !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exiting.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import sync from 'framesync';\nimport { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => sync.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export const Searchicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"21\"\n height=\"21\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n >\n <path\n d=\"M19.8438 18.8203L15.1172 14.0938C15 14.0156 14.8828 13.9375 14.7656 13.9375H14.2578C15.4688 12.5312 16.25 10.6562 16.25 8.625C16.25 4.17188 12.5781 0.5 8.125 0.5C3.63281 0.5 0 4.17188 0 8.625C0 13.1172 3.63281 16.75 8.125 16.75C10.1562 16.75 11.9922 16.0078 13.4375 14.7969V15.3047C13.4375 15.4219 13.4766 15.5391 13.5547 15.6562L18.2812 20.3828C18.4766 20.5781 18.7891 20.5781 18.9453 20.3828L19.8438 19.4844C20.0391 19.3281 20.0391 19.0156 19.8438 18.8203ZM8.125 14.875C4.64844 14.875 1.875 12.1016 1.875 8.625C1.875 5.1875 4.64844 2.375 8.125 2.375C11.5625 2.375 14.375 5.1875 14.375 8.625C14.375 12.1016 11.5625 14.875 8.125 14.875Z\"\n fill=\"#F67736\"\n />\n </svg>\n );\n};\n","export const SET_ADDRESS = \"set_address\";\nexport const SET_CHECKED_ADDRESS = \"set_checked_address\";\nexport const SET_FINAL_ADDRESS = \"set_final_address\";\n// export const SET_ADDRESS_LATLNG = \"set_address_latlng\";\nexport const SET_MUNICIPALITY = \"set_municipality\";\n","import {\n SET_ADDRESS,\n SET_ADDRESS_LATLNG,\n SET_CHECKED_ADDRESS,\n SET_FINAL_ADDRESS,\n SET_MUNICIPALITY,\n} from \"./types\";\n\nexport function setAddress(address) {\n return {\n type: SET_ADDRESS,\n address,\n };\n}\n\nexport function setCheckedAddress(checkedAddress) {\n return {\n type: SET_CHECKED_ADDRESS,\n checkedAddress,\n };\n}\n\nexport function setFinalAddress(finalAddress) {\n return {\n type: SET_FINAL_ADDRESS,\n finalAddress,\n };\n}\n\nexport function setMunicipality(municipality) {\n return {\n type: SET_MUNICIPALITY,\n municipality,\n };\n}\n\n// export function setAddressLatlng(latlng) {\n// return {\n// type: SET_ADDRESS_LATLNG,\n// latlng,\n// };\n// }\n","export const config = {\n apikey: \"b7690ca9-43f4-4dbc-80bf-0664cfc1cd01\",\n WAAPItakflaterPunktUrl: \"//www.webatlas.no/WAAPI-Takflater/takflater/punkt\",\n WAAPItakflaterUrl: \"//waapi.webatlas.no/wms-takhelning/\",\n WAAPIsearchUrl: \"//www.webatlas.no/waapi-fritekstsok\",\n WAAPIhoydeUrl: \"//www.webatlas.no/WAAPI-Hoyde/hoyde\",\n};\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 defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\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 && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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 *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {void}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\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 (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 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\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 *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const result = {};\n const 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 (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && 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 *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\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 *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[_-\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber\n};\n","'use strict';\n\nimport utils from '../utils.js';\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 {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n 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 status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","import FormData from 'form-data';\nexport default FormData;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport envFormData from '../env/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (envFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n (utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\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 * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\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 */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n 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 *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\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 *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default FormData;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\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 *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.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 const 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 const 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","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\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 *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" 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 * 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 *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.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 const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let 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 let 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 const 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","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\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} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\nconst $defaults = Symbol('defaults');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nfunction matchHeaderValue(context, value, header, filter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nfunction AxiosHeaders(headers, defaults) {\n headers && this.set(headers);\n this[$defaults] = defaults || null;\n}\n\nObject.assign(AxiosHeaders.prototype, {\n set: function(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = findKey(self, lHeader);\n\n if (key && _rewrite !== true && (self[key] === false || _rewrite === false)) {\n return;\n }\n\n self[key || _header] = normalizeValue(_value);\n }\n\n if (utils.isPlainObject(header)) {\n utils.forEach(header, (_value, _header) => {\n setHeader(_value, _header, valueOrRewrite);\n });\n } else {\n setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n },\n\n get: function(header, parser) {\n header = normalizeHeader(header);\n\n if (!header) return undefined;\n\n const key = findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n },\n\n has: function(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = findKey(this, header);\n\n return !!(key && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n },\n\n delete: function(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n },\n\n clear: function() {\n return Object.keys(this).forEach(this.delete.bind(this));\n },\n\n normalize: function(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n },\n\n toJSON: function(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(Object.assign({}, this[$defaults] || null, this),\n (value, header) => {\n if (value == null || value === false) return;\n obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value;\n });\n\n return obj;\n }\n});\n\nObject.assign(AxiosHeaders, {\n from: function(thing) {\n if (utils.isString(thing)) {\n return new this(parseHeaders(thing));\n }\n return thing instanceof this ? thing : new this(thing);\n },\n\n accessor: function(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n});\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nexport default function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && platform.isStandardBrowserEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\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 const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, 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(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\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 (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\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', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\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 *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\n\nconst adapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nexport default {\n getAdapter: (nameOrAdapter) => {\n if(utils.isString(nameOrAdapter)){\n const adapter = adapters[nameOrAdapter];\n\n if (!nameOrAdapter) {\n throw Error(\n utils.hasOwnProp(nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Can not resolve adapter '${nameOrAdapter}'`\n );\n }\n\n return adapter\n }\n\n if (!utils.isFunction(nameOrAdapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return nameOrAdapter;\n },\n adapters\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\nimport adapters from '../adapters/index.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\n/**\n * If the browser has an XMLHttpRequest object, use the XHR adapter, otherwise use the HTTP\n * adapter\n *\n * @returns {Function}\n */\nfunction getDefaultAdapter() {\n let adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = adapters.getAdapter('xhr');\n } else if (typeof process !== 'undefined' && utils.kindOf(process) === 'process') {\n // For node use HTTP adapter\n adapter = adapters.getAdapter('http');\n }\n return adapter;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\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\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (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 headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\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 env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\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\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\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 *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n const 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 config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\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 config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\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 *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\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 // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n const mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.1.3\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !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 *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(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 {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n const defaultHeaders = config.headers && utils.merge(\n config.headers.common,\n config.headers[config.method]\n );\n\n defaultHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n config.headers = new AxiosHeaders(config.headers, defaultHeaders);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let 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 const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\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,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\naxios.formToJSON = thing => {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nexport default axios\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 *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData\n} = axios;\n\nexport default axios;\nexport {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData\n}\n","export const SET_SHOW = \"set_show\";\nexport const SET_SHOW_COOKIE = \"set_show_cookie\"\n","import { SET_SHOW, SET_SHOW_COOKIE } from \"./types\";\n\nexport function setShow(show) {\n return {\n type: SET_SHOW,\n show,\n };\n}\n\nexport function setShowCookie(showCookie) {\n return {\n type: SET_SHOW_COOKIE,\n showCookie,\n };\n}\n","export const SET_ORDER_PANEL_COUNT = \"set_order_panel_count\";\nexport const SET_ORDER_ROOF_TYPE = \"set_order_roof_type\";\nexport const SET_ORDER_ROOF_INFO = \"set_order_roof_info\";\nexport const SET_CUSTOMER_INFO = \"set_customer_info\";\nexport const SET_PANEL_TYPE = \"set_panel_type\";\nexport const SET_ORDER_INFO = \"set_order_info\";\nexport const SET_ROOF_INFORMATION = \"set_roof_information\";\nexport const SET_SFNumber = \"set_sf_numer\";\nexport const SET_COMMENT = \"set_comment\";\nexport const SET_ORDER = \"set_order\";\nexport const SET_ENOVE = \"set_enova\";\nexport const SET_PARTNER_ID = \"set_partner_id\";\n","import axios from \"axios\";\nimport { setShow } from \"../Show/action\";\nimport {\n SET_COMMENT,\n SET_CUSTOMER_INFO,\n SET_ORDER_INFO,\n SET_ORDER_PANEL_COUNT,\n SET_ORDER_ROOF_INFO,\n SET_ORDER_ROOF_TYPE,\n SET_PANEL_TYPE,\n SET_ROOF_INFORMATION,\n SET_SFNumber,\n SET_ORDER,\n SET_ENOVE,\n SET_PARTNER_ID,\n} from \"./types\";\n\nexport const setOrderPanelCount = (panelCount) => {\n return {\n type: SET_ORDER_PANEL_COUNT,\n panelCount,\n };\n};\n\nexport const setOrderRoofInfo = (roofOrderInfo) => {\n return {\n type: SET_ORDER_ROOF_INFO,\n roofOrderInfo,\n };\n};\n\nexport const setCustomerInfo = (customerInfo) => {\n return {\n type: SET_CUSTOMER_INFO,\n customerInfo,\n };\n};\n\nexport const setOrderRoofType = (orderRoofType) => {\n return {\n type: SET_ORDER_ROOF_TYPE,\n orderRoofType,\n };\n};\n\nexport const setPanelType = (panelType) => {\n return {\n type: SET_PANEL_TYPE,\n panelType,\n };\n};\n\nexport const setOrderInfo = (orderInfo) => {\n return {\n type: SET_ORDER_INFO,\n orderInfo,\n };\n};\n\nexport const setRoofInformation = (roofInformation) => {\n return {\n type: SET_ROOF_INFORMATION,\n roofInformation,\n };\n};\n\nexport const setOrder = (order) => {\n return {\n type: SET_ORDER,\n order,\n };\n};\n\nexport const setSFNumber = (SFNumber) => {\n return {\n type: SET_SFNumber,\n SFNumber,\n };\n};\n\nexport const setUserComment = (comment) => {\n return {\n type: SET_COMMENT,\n comment,\n };\n};\n\nexport const setEnova = (enovaSupport) => {\n return {\n type: SET_ENOVE,\n enovaSupport,\n };\n};\n\nexport const setPartnerId = (partnerId) => {\n return {\n type: SET_PARTNER_ID,\n partnerId,\n };\n};\n\nexport const sendOrderData = (orderData) => {\n return (dispatch) => {\n let newObj = {\n id: 0,\n partnerId: Number(orderData.partnerId),\n customer: {\n firstName: orderData.customerInfo.name,\n lastName: orderData.customerInfo.surname,\n companyName: \"\",\n email: orderData.customerInfo.email,\n phone: orderData.customerInfo.phone,\n },\n plantId: \"\",\n panelTypeId: orderData.roofInformation.produkttype,\n panelCount: orderData.panelCount,\n roofTypeId: orderData.roofInformation.typetak,\n roofSlope: orderData.roofInformation.Helning.toFixed(1),\n eaveHeight: orderData.roofInformation.eaveHeight.toFixed(1),\n\n snowLoad: orderData.order.anleggsInformasjon.snolast,\n windLoad: orderData.order.anleggsInformasjon.vindlast,\n\n installationSize: \"\",\n options: orderData.comment,\n description: \"\",\n\n kWhYear: orderData.orderInfo.produksjon[12].kWh,\n budgetedTime:\n orderData.orderInfo.dagergjeldene * 8 +\n orderData.orderInfo.timergjeldene,\n\n location: {\n address: orderData.customerInfo.address,\n city: orderData.customerInfo.by,\n postalCode: orderData.customerInfo.postalCode,\n baseId: orderData.order.ruteplanlegger.baseId,\n\n travelDistance: orderData.order.ruteplanlegger.distansemeter,\n travelTime: orderData.order.ruteplanlegger.distansetid,\n longitude: orderData.roofInformation.lng,\n latitude: orderData.roofInformation.lat,\n },\n price: {\n materialPrice: orderData.orderInfo.materiell * 1.25,\n installationPrice: orderData.orderInfo.montasje * 1.25,\n electricianPrice: orderData.orderInfo.elektriker * 1.25,\n enovaSubsidy: orderData.enovaSupport,\n },\n baseId: orderData.order.ruteplanlegger.baseId,\n dagergjeldene: orderData.orderInfo.dagergjeldene,\n timergjeldene: orderData.orderInfo.timergjeldene,\n partnerPrice: orderData.orderInfo.partnerPris,\n voucherCode: orderData.orderInfo.voucherCode,\n discount: orderData.orderInfo.discount * 1.25,\n financingRequired:orderData.orderInfo.financingRequired\n };\n\n axios\n .post(`${process.env.REACT_APP_SUNFLOW_API_URL}/projects`, newObj)\n .then(() => {\n dispatch(setShow(\"step4\"));\n })\n .catch((error) => {\n console.error(error);\n });\n };\n};\n","export const GET_ROOF_TYPES = \"get_roof_types\";\nexport const SET_ROOF_TYPES = \"set_roof_types\";\nexport const GET_ROOF_INFO = \"get_roof_info\";\nexport const SET_ROOF_INFO = \"set_roof_info\";\nexport const SET_ROOF_INTEGRATED = \"set_roof_integrated\";\n","import axios from \"axios\";\nimport { setOrder } from \"../Order/action\";\nimport { SET_ROOF_INFO, SET_ROOF_INTEGRATED, SET_ROOF_TYPES } from \"./types\";\n\nexport const setRoofTypes = (roofTypes) => {\n return {\n type: SET_ROOF_TYPES,\n roofTypes,\n };\n};\n\nexport const getRoofTypes = () => {\n return (dispatch) => {\n axios\n .get(`${process.env.REACT_APP_OFFER_API_URL}/roofTypes`)\n .then((res) => {\n dispatch(setRoofTypes(res.data));\n });\n };\n};\n\nexport const setRoofIntegrated = (roofIntegrated) => {\n return {\n type: SET_ROOF_INTEGRATED,\n roofIntegrated,\n };\n};\n\nexport const setRoofInfo = (roofInfo) => {\n return {\n type: SET_ROOF_INFO,\n roofInfo,\n };\n};\n\nexport const getRoofInfo = (checkedAddress) => {\n const newObj = Object.fromEntries(\n Object.entries(checkedAddress).map(([k, v]) => [k.toLowerCase(), v])\n );\n\n let replacedGeometri = newObj.geometri.replace(\n String.fromCharCode(92),\n String.fromCharCode(92, 92)\n );\n let getNoLimits = sessionStorage.getItem(\"noLimits\");\n let offerUrl;\n if (getNoLimits === \"true\") {\n offerUrl = `${process.env.REACT_APP_OFFER_API_URL}/offer/?nolimits=1`;\n } else {\n offerUrl = `${process.env.REACT_APP_OFFER_API_URL}/offer/`;\n }\n\n const offerObj = {\n lat: newObj.lat,\n lng: newObj.lng,\n helning: newObj.helning,\n retning: newObj.retning,\n lengde: newObj.lengde,\n bredde: newObj.bredde,\n areal2d: newObj.areal2d,\n areal3d: newObj.areal3d,\n eaveheight: newObj.eaveheight,\n typetak: newObj.typetak,\n produkttype: newObj.produkttype,\n partnerId: newObj.partnerid,\n kalkulertrinn: 1,\n voucherCode: newObj.vouchercode,\n geometri: JSON.parse(replacedGeometri),\n };\n\n return (dispatch) => {\n axios\n .post(offerUrl, offerObj)\n .then((res) => {\n if (res.data.paneler.length > 0) {\n dispatch(setRoofInfo(res.data));\n let newData = { ...res.data };\n delete newData.paneler;\n dispatch(setOrder(newData));\n } else {\n dispatch(setRoofInfo({ message: \"Error\" }));\n }\n })\n .catch((error) => {\n dispatch(setRoofInfo(error));\n });\n };\n};\n","import \"./Search.scss\";\nimport { useState } from \"react\";\nimport { Searchicon } from \"../../components/icons/Searchicon\";\nimport { useDispatch } from \"react-redux\";\nimport { setAddress } from \"../../store/Address/action\";\nimport { config } from \"../../api/config\";\nimport { useLocation, useNavigate } from \"react-router\";\nimport { setRoofInfo } from \"../../store/Roof/action\";\nimport { setOrderPanelCount } from \"../../store/Order/action\";\n\nconst Search = () => {\n const location = useLocation();\n const navigate = useNavigate();\n\n const [placeholderText, setPlaceholderText] = useState(\n \"Søk pÃ¥ stedsnavn eller adresse\"\n );\n const [shows, setShows] = useState(false);\n const [searchResult, setSearchResult] = useState([]);\n const [finalResult, setFinalResult] = useState({});\n const [finalText, setFinalText] = useState(\"\");\n\n const dispatch = useDispatch();\n\n async function searchAddress(searchText) {\n if (searchText !== null && searchText !== \"\") {\n const query = `https:${config.WAAPIsearchUrl}/suggest/kommunecustom?Query=${searchText}&Size=5&Targets=gateadresse`;\n\n const apiResult = await fetch(query, {\n headers: {\n Accept: \"application/json\",\n \"X-WAAPI-TOKEN\": `${config.apikey}`,\n },\n method: \"GET\",\n });\n\n if (apiResult.status === 200) {\n await searchResultToAdress(apiResult);\n }\n } else {\n setSearchResult([]);\n setShows(false);\n }\n }\n\n async function searchResultToAdress(apiResult) {\n const suggestions = [];\n const json = await apiResult.json();\n\n if (json.Options.length > 0) {\n json.Options.forEach((suggestion) => {\n setShows(true);\n if (\n suggestion?.PayLoad?.Posisjon?.X &&\n suggestion?.PayLoad?.Posisjon?.Y &&\n suggestion?.PayLoad?.AdresseMatrikkelNummer\n ) {\n suggestions.push({\n id: suggestion.Id,\n matrikkelId: suggestion.PayLoad.AdresseMatrikkelNummer,\n text: suggestion.Text,\n latlng: {\n lat: suggestion.PayLoad.Posisjon.Y,\n lng: suggestion.PayLoad.Posisjon.X,\n },\n });\n } else if (\n suggestion?.PayLoad?.Posisjon?.X &&\n suggestion?.PayLoad?.Posisjon?.Y &&\n suggestion?.PayLoad?.MatrikkelNummer\n ) {\n suggestions.push({\n id: suggestion.Id,\n matrikkelId: suggestion.PayLoad.MatrikkelNummer,\n text: suggestion.Text,\n latlng: {\n lat: suggestion.PayLoad.Posisjon.Y,\n lng: suggestion.PayLoad.Posisjon.X,\n },\n });\n }\n\n setSearchResult(suggestions);\n });\n } else {\n setSearchResult([]);\n setShows(false);\n }\n }\n\n const sendData = () => {\n window.sessionStorage.setItem(\"roofID\", 0);\n window.sessionStorage.setItem(\"roofName\", null);\n if (location.pathname !== \"/search\") {\n navigate(\"/search\");\n }\n dispatch(setOrderPanelCount(\"\"));\n dispatch(setRoofInfo(\"\"));\n dispatch(setAddress(finalResult));\n };\n\n const searchData = (text) => {\n window.sessionStorage.setItem(\"roofID\", 0);\n window.sessionStorage.setItem(\"roofName\", null);\n if (location.pathname !== \"/search\") {\n navigate(\"/search\");\n }\n setFinalResult(text);\n setShows(false);\n setFinalText(text.text);\n dispatch(setOrderPanelCount(\"\"));\n dispatch(setRoofInfo(\"\"));\n dispatch(setAddress(text));\n };\n\n return (\n <div className=\"search-section\">\n <div className=\"search-container\">\n <div className=\"search-input\">\n <Searchicon />\n <input\n type=\"text\"\n placeholder={placeholderText}\n onBlur={() => setPlaceholderText(\"Søk pÃ¥ stedsnavn eller adresse\")}\n onClick={() => setPlaceholderText(\"Søker...\")}\n onChange={(e) => {\n searchAddress(e.target.value);\n setFinalText(e.target.value);\n }}\n value={finalText}\n />\n <div\n className=\"show-results\"\n style={shows ? { display: \"block\" } : { display: \"none\" }}\n >\n <ul>\n {searchResult.map((text) => {\n return (\n <li\n key={text.id}\n onClick={() => {\n searchData(text);\n }}\n >\n {text.text}\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n <button type=\"submit\" className=\"search-button\" onClick={sendData}>\n Søk\n </button>\n </div>\n </div>\n );\n};\n\nexport default Search;\n","import Search from \"../../components/Search/Search\";\nimport \"./Home.scss\";\nimport homeImage from \"../../assets/images/HomePage1.png\";\nimport { motion } from \"framer-motion\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst Home = () => {\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"home-page-section\">\n <div className=\"home-page-container\">\n <Search />\n <div className=\"home-page-description\">\n <h1 className=\"home-page-description-title\">\n Med et solcelleanlegg pÃ¥ taket, kan du lage din egen strøm fra kun{\" \"}\n <span>\n 25 øre/kWh* fast de neste 30 Ã¥rene! Sjekk ditt tak nÃ¥!\n </span>\n </h1>\n <div className=\"home-page-description-section\">\n <div className=\"home-page-description-text\">\n <p>\n <strong>\n Endelig er solkart.no kommer til Norge. Solcellespesialisten\n har basert pÃ¥ erfaringer fra vÃ¥re kunder og data fra PVGIS\n databasen kartlagt alle takene i hele Norge slik at du lett\n kan se hvor mye solstrøm du kan lage pÃ¥ ditt eget tak. Du\n vil ogsÃ¥ fÃ¥ et pristilbud pÃ¥ hva det vil koste Ã¥ fÃ¥ et\n solcelleanlegg pÃ¥ ditt tak. Enten om du vil installere det\n selv eller om du vil benytte en av vÃ¥re lokale\n installatører.\n </strong>\n </p>\n <p>\n Solcellespesialisten har over 10 Ã¥rs erfaring med solceller i\n Norge, og er det selskapet som har installert flest\n nettilkoblede solcelleanlegg. VÃ¥re løsninger er tilpasset og\n testet for Norske forhold og byggestandarder.\n Solcellespesialisten har lager og hovedkontor i Fredrikstad,\n samt et salgskontor i Trondheim. Vi installerer solcelleanlegg\n i hele landet.\n </p>\n <h2>Hva viser vi pÃ¥ solkart.no?</h2>\n <ul>\n <li>\n <strong>\n Hvilken takflate passer best til solcelleanlegg\n </strong>\n <br />\n Basert pÃ¥ takvinkelen og retningen sÃ¥ har vi fargelagt alle\n tak i Norge basert pÃ¥ hvor mye solenergi den aktuelle flaten\n kan fange opp av sola pÃ¥ Ã¥rsbasis. PÃ¥ fargeleggingen har vi\n ikke tatt hensyn til lokale skyggeforhold.\n </li>\n <li>\n <strong>\n Hvor stort anlegg kan jeg fÃ¥ plass til og hva kan det\n produsere pr Ã¥r\n </strong>\n <br />\n NÃ¥r du klikker pÃ¥ et tak sÃ¥ gjør vi en analyse av hvor stort\n solcelleanlegg som systemet tror du fÃ¥r plass til. Og basert\n pÃ¥ dette sÃ¥ forespør systemet PVGIS databasen om hva\n akkuratt ditt tak kan produsere. Her tar vi høyde for\n skygger fra fjell, din takvinkel og takretning, og til slutt\n sÃ¥ korrigerer vi produksjonen i forhold til de faktiske\n mÃ¥lingene vi har gjort pÃ¥ andre hus i ditt omrÃ¥de. Du fÃ¥r\n ogsÃ¥ opp en forventet produksjonsgraf over Ã¥ret, samt en\n oversikt over din horisont og hvordan sola beveger seg over\n denne pÃ¥ sommer og vinter solverv.\n </li>\n <li>\n <strong>\n Hva tilsvarer kWh for strømmen et anlegg produserer over\n sin levetid\n <br />\n </strong>\n Da forventet tilbakebetalingstid tvinger oss til Ã¥ gjøre en\n antagelse over hvordan strøm og nettleie vil utvikle seg,\n samt gjøre antagelser pÃ¥ hvor stort eget forbruk du har. Har\n vi istedet valg Ã¥ gi deg et sammenligningsgrunnlag der det\n ikke er mye usikkerhet:\n <br />\n <strong>\n (Hva koster solcelleanlegget deg i dag) / (Hvor mye det\n vil produsere over levetiden) = Kostnad pr kWh over\n levetiden.\n <br />\n </strong>\n Siden solcelleanlegg reduserer seg med ca 0,5% i Ã¥ret, har\n vi satt at snitt produksjonen over 30 Ã¥r blir 92,75% av 1.\n Ã¥rs produksjon. De fleste paneler leveres med 25 Ã¥rs\n effektgaranti, men mange er ogsÃ¥ testet for levetider opp\n mot 70 Ã¥r. SÃ¥ vi har satt at levetiden er den samme som\n levetiden for et tak som er 30 Ã¥r. Vi har ikke hensyntatt\n renten pÃ¥ investert beløp.\n </li>\n </ul>\n <p>\n * Prisen pr kWh er regnet ved Ã¥ ta prisen pÃ¥ et 3.1 kWp\n solcelleanlegg i Fredrikstad etter Enovastøtte og delt dette\n pÃ¥ forventet produksjon de neste 30 Ã¥rene. Vi har antatt at\n anlegget vil svekkes over 30 Ã¥rs perioden, slik at snitt\n produksjon pr Ã¥r vil være 92,5% av 1 Ã¥rs produksjon.\n </p>\n </div>\n <div className=\"home-page-description-image\">\n <img\n className=\"home-page-image\"\n src={homeImage}\n alt=\"solcellespesialisten-team-installerer-solcelle.png\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default Home;\n","export const Arrowicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"22\"\n viewBox=\"0 0 20 22\"\n fill=\"none\"\n >\n <path\n d=\"M9.84766 20.8281C10.1406 21.1211 10.5508 21.1211 10.8438 20.8281L19.5156 12.2148C19.8086 11.9805 19.8086 11.5117 19.5156 11.2188L18.3438 10.1055C18.1094 9.8125 17.6406 9.8125 17.3477 10.1055L10.375 17.0195L3.34375 10.1055C3.05078 9.8125 2.64062 9.8125 2.34766 10.1055L1.17578 11.2188C0.882812 11.5117 0.882812 11.9805 1.17578 12.2148L9.84766 20.8281ZM10.8438 11.4531L19.5156 2.83984C19.8086 2.60547 19.8086 2.13672 19.5156 1.84375L18.3438 0.730469C18.1094 0.4375 17.6406 0.4375 17.3477 0.730469L10.375 7.64453L3.34375 0.730469C3.05078 0.4375 2.64062 0.4375 2.34766 0.730469L1.17578 1.84375C0.882812 2.13672 0.882812 2.60547 1.17578 2.83984L9.84766 11.4531C10.1406 11.7461 10.5508 11.7461 10.8438 11.4531Z\"\n fill=\"#FD7B1D\"\n />\n </svg>\n );\n};\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar CrossfadeImage = function (_Component) {\n _inherits(CrossfadeImage, _Component);\n\n function CrossfadeImage(props) {\n _classCallCheck(this, CrossfadeImage);\n\n var _this = _possibleConstructorReturn(this, (CrossfadeImage.__proto__ || Object.getPrototypeOf(CrossfadeImage)).call(this, props));\n\n _this.state = {\n topSrc: props.src,\n bottomOpacity: 0,\n bottomSrc: props.src\n };\n return _this;\n }\n\n _createClass(CrossfadeImage, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(newProps) {\n var _this2 = this;\n\n var oldSrc = this.state.topSrc;\n var newSrc = newProps.src;\n if (newSrc !== oldSrc) {\n // Reset the component everytime we receive new prop, to\n // cancel out any animation that's still going on\n this.setState({ bottomSrc: false, topSrc: false }, function () {\n return _this2.setState(\n // Opacity less than 1 takes precendence in stacking order\n { bottomSrc: oldSrc, topSrc: newSrc, bottomOpacity: 0.99 }, function () {\n // One of the few times setTimeout does wonders, this is for\n // getting fade out transition without css keyframe\n if (!_this2.timeout) clearTimeout(_this2.timeout);\n _this2.timeout = setTimeout(function () {\n return _this2.setState({ bottomOpacity: 0 });\n }, 20);\n });\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _props = this.props,\n containerClass = _props.containerClass,\n duration = _props.duration,\n timingFunction = _props.timingFunction,\n delay = _props.delay,\n style = _props.style,\n alt = _props.alt;\n var _state = this.state,\n topSrc = _state.topSrc,\n bottomOpacity = _state.bottomOpacity,\n bottomSrc = _state.bottomSrc;\n\n return React.createElement(\n \"div\",\n { className: containerClass, style: _extends({}, defaultStyle, { position: \"relative\" }) },\n topSrc && React.createElement(\"img\", {\n style: _extends({}, defaultStyle, style, { position: \"absolute\" }),\n src: topSrc,\n alt: alt\n }),\n bottomSrc && React.createElement(\"img\", {\n style: _extends({}, defaultStyle, style, {\n opacity: bottomOpacity,\n transition: \"opacity \" + duration / 1000 + \"s \" + timingFunction + \" \" + delay / 1000 + \"s\"\n }),\n src: bottomSrc\n })\n );\n }\n }]);\n\n return CrossfadeImage;\n}(Component);\n\nexport default CrossfadeImage;\n\n\nvar defaultStyle = { maxWidth: \"100%\", maxHeight: \"100%\" };\n\nCrossfadeImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string,\n duration: PropTypes.number,\n timingFunction: PropTypes.string,\n delay: PropTypes.number,\n style: PropTypes.object,\n containerClass: PropTypes.string\n};\n\nCrossfadeImage.defaultProps = {\n duration: 500,\n timingFunction: \"ease\",\n delay: 0,\n containerClass: \"CrossfadeImage\"\n};\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n NavigateOptions,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_enhanceManualRouteObjects as enhanceManualRouteObjects,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n Router as RemixRouter,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n invariant,\n joinPaths,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_DataStaticRouterContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_enhanceManualRouteObjects,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || window?.__staticRouterHydrationData,\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || window?.__staticRouterHydrationData,\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let href = useHref(to, { relative });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n onClick={reloadDocument ? onClick : handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} />;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n reloadDocument,\n replace,\n method = defaultMethod,\n action,\n onSubmit,\n fetcherKey,\n routeId,\n relative,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n submit(submitter || event.currentTarget, { method, replace, relative });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={reloadDocument ? onSubmit : submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmitImpl = \"useSubmitImpl\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback<SetURLSearchParams>(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\ntype SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `<form>` to be submitted to the server, a specific\n * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n * arbitrary data to submit.\n *\n * Note: When using a `<button>` its `name` and `value` will also be\n * included in the form data that is submitted.\n */\n target: SubmitTarget,\n\n /**\n * Options that override the `<form>`'s own attributes. Required when\n * submitting arbitrary data without a backing `<form>`.\n */\n options?: SubmitOptions\n ): void;\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmitImpl);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n if (typeof document === \"undefined\") {\n throw new Error(\n \"You are calling submit during the server render. \" +\n \"Try calling submit within a `useEffect` or callback instead.\"\n );\n }\n\n let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n replace: options.replace,\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(\n action?: string,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n let { basename } = React.useContext(NavigationContext);\n let routeContext = React.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let resolvedAction = action ?? \".\";\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = { ...useResolvedPath(resolvedAction, { relative }) };\n\n // Previously we set the default action to \".\". The problem with this is that\n // `useResolvedPath(\".\")` excludes search params and the hash of the resolved\n // URL. This is the intended behavior of when \".\" is specifically provided as\n // the form action, but inconsistent w/ browsers when the action is omitted.\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to these directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n // or hash\n path.search = location.search;\n path.hash = location.hash;\n\n // When grabbing search params from the URL, remove the automatically\n // inserted ?index param so we match the useResolvedPath search behavior\n // which would not include ?index\n if (match.route.index) {\n let params = new URLSearchParams(path.search);\n params.delete(\"index\");\n path.search = params.toString() ? `?${params.toString()}` : \"\";\n }\n }\n\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: (\n target: SubmitTarget,\n // Fetchers cannot replace because they are not navigation events\n options?: Omit<SubmitOptions, \"replace\">\n ) => void;\n load: (href: string) => void;\n};\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>(): FetcherWithComponents<TData> {\n let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => {\n invariant(routeId, `No routeId available for fetcher.Form()`);\n return createFetcherForm(fetcherKey, routeId);\n });\n let [load] = React.useState(() => (href: string) => {\n invariant(router, \"No router available for fetcher.load()\");\n invariant(routeId, \"No routeId available for fetcher.load()\");\n router.fetch(fetcherKey, routeId, href);\n });\n let submit = useSubmitImpl(fetcherKey, routeId);\n\n let fetcher = router.getFetcher<TData>(fetcherKey);\n\n let fetcherWithComponents = React.useMemo(\n () => ({\n Form,\n submit,\n load,\n ...fetcher,\n }),\n [fetcher, Form, submit, load]\n );\n\n React.useEffect(() => {\n // Is this busted when the React team gets real weird and calls effects\n // twice on mount? We really just need to garbage collect here when this\n // fetcher is no longer around.\n return () => {\n if (!router) {\n console.warn(`No fetcher available to clean up from useFetcher()`);\n return;\n }\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n\n return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): Fetcher[] {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return [...state.fetchers.values()];\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n DataRouterStateHook.UseScrollRestoration\n );\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n\n // Save positions on unload\n useBeforeUnload(\n React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches])\n );\n\n // Read in any saved scroll locations\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n\n // Enable scroll restoration in the router\n React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (preventScrollReset === true) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n//#endregion\n","import type { FormEncType, FormMethod } from \"@remix-run/router\";\nimport type { RelativeRoutingType } from \"react-router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `<form method>`.\n * Defaults to \"GET\".\n */\n method?: FormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides `<form action>`.\n * Defaults to the path of the current route.\n *\n * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL used to submit the form. Overrides `<form encType>`.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n}\n\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n\n // <button>/<input type=\"submit\"> may override attributes of <form>\n\n method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>, appending in case the button name\n // matches an existing input name\n if (target.name) {\n formData.append(target.name, target.value);\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or ` +\n `<input type=\"submit|image\">`\n );\n } else {\n method = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\n}\n"," import React from 'react'\nimport { Link } from \"react-router-dom\";\n\nconst ButtonEmail = ({ mailto, label }) => {\n return (\n <Link\n to='#'\n onClick={(e) => {\n window.location.href = mailto;\n e.preventDefault();\n }}\n >\n {label}\n </Link>\n );\n}\n\nexport default ButtonEmail\n\n","import Search from \"../../components/Search/Search\";\nimport \"./About.scss\";\nimport slide1 from \"../../assets/images/slider-1-new.png\";\nimport slide2 from \"../../assets/images/slider-2-new.png\";\nimport slide3 from \"../../assets/images/slider-3-new.png\";\nimport slide4 from \"../../assets/images/slider-4-new.png\";\nimport slide5 from \"../../assets/images/slider-5-new.png\";\nimport flag from \"../../assets/images/flag.png\";\nimport propertie from \"../../assets/images/properties.png\";\nimport cloud from \"../../assets/images/cloud.png\";\nimport panel from \"../../assets/images/panel.png\";\nimport system from \"../../assets/images/system.png\";\nimport { Arrowicon } from \"../../components/icons/Ðrrowicon\";\nimport { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { useEffect } from \"react\";\nimport CrossfadeImage from \"react-crossfade-image\";\nimport ButtonEmail from \"../../components/SendEmail/ButtonEmail\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst About = () => {\n const [texts, setTexts] = useState([\n {\n id: 1,\n text1:\n \"Norkart AS har analysert alle eiendommer i Norge og tilgjengeliggjort de datene som behøves for Ã¥ finne ut hva solpotensialet til et tak er. Dette er primært takvinkel, fysiske mÃ¥l pÃ¥ taket samt himmelretning. Alle detaljerte produksjonsdata er hentet fra PVGIS, som er EU sitt solkartleggingsprogram. Solcellespesialisten har videre hentet inn snø og vindlast kravene til alle kommunene i Norge. Alle disse dataene er videre behandlet av en algoritme som er utviklet av Solcellespesialisten pÃ¥ bakgrunn av de faktiske mÃ¥lingene vi har gjort hos vÃ¥re solcelle kunder de siste 10 Ã¥rene. Alle tallene er Ã¥ anse som estimater og kan være feil. VIKTIG: Tallmaterialet bør ikke være ditt eneste grunnlag for Ã¥ gjøre en solcelleinvestering. Det er ogsÃ¥ viktig Ã¥ fÃ¥ med seg at lokale skyggeforhold ikke er hensyntatt i denne versjonen.\",\n showText: false,\n },\n\n {\n id: 2,\n text2:\n \"Solkart.no benytter PVGIS sin ERA5-database for Ã¥ estimere solinnstrÃ¥ling og energiproduksjon, og arver dermed den høye treffsikkerheten til denne databasen. VÃ¥re mÃ¥linger viser at ERA5 leverer mer stabile resultater for større deler av landet sammenlignet med SARAH-databasen. I tillegg har vi justert dataene fra PVGIS basert pÃ¥ faktiske produksjonsdata fra vÃ¥re kunder, noe som vil bidra til Ã¥ øke treffsikkerheten ytterligere over tid.\",\n showText: false,\n },\n\n {\n id: 3,\n text3:\n \"Alle prisene pÃ¥ Solkart.no er estimater generert av Solcellespesialisten. I tillegg til alle fysiske komponenter og montasjetid, hensynstas dagens valutakurser, reisedistanse og tid fra nærmeste base, evt. kost/losji der der er langt til nærmeste base og lokale snø og vindlastkrav.\",\n showText: false,\n },\n ]);\n\n const [curImg, setCurImg] = useState(0);\n\n const slideImages = [\n {\n url: slide4,\n caption: \"solcellespesialisten-about-solcelle.png\",\n },\n {\n url: slide1,\n caption: \"solcellespesialisten-about-metalltak-metal-roof-solcelle.png\",\n },\n {\n url: slide2,\n caption: \"solcellespesialisten-about-tegltak-tile-roof-solcelle.png\",\n },\n {\n url: slide3,\n caption: \"solcellespesialisten-about-metalltak-metal-roof-solcelle.png\",\n },\n {\n url: slide5,\n caption: \"solcellespesialisten-about-metalltak-metal-roof-solcelle.png\",\n },\n ];\n\n useEffect(() => {\n let interval = null;\n\n interval = setInterval(() => {\n if (curImg < 4) {\n setCurImg((img) => img + 1);\n } else {\n setCurImg(0);\n }\n }, 4000);\n\n return () => clearInterval(interval);\n }, [curImg]);\n\n const readMore = (id) => {\n const cloneTexts = [...texts];\n let txt = cloneTexts.find((el) => el.id === id);\n txt.showText = !txt.showText;\n setTexts(cloneTexts);\n };\n\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"about-page-section\">\n <div className=\"about-page-container\">\n <Search />\n <div className=\"about-page-description\">\n <h1 className=\"title\">Om Solkart.no</h1>\n <div className=\"subtitle\">\n <p className=\"subtitle1\">\n Solkart.no er et hjelpemiddel til deg som\n </p>\n <p className=\"subtitle2\">\n vurderer Ã¥ legge solceller pÃ¥ ditt hus.\n </p>\n </div>\n <div className=\"about-home-pic\">\n <CrossfadeImage\n src={slideImages[curImg].url}\n alt={slideImages[curImg].caption}\n duration={3000}\n timingFunction={\"ease-out\"}\n />\n </div>\n <div className=\"about-flag\">\n <p>\n PÃ¥ Solkart.no sÃ¥ fÃ¥r du se hvilket av dine takflater som egner\n seg best til solceller.\n </p>\n <img alt=\"Home\" src={flag} />\n </div>\n <div className=\"about-main\">\n <p>\n Ved Ã¥ klikke pÃ¥ taket du ønsker Ã¥ installere solceller pÃ¥, fÃ¥r\n du opp alt du trenger Ã¥ vite om dine muligheter. Du fÃ¥r se hvor\n stort anlegg det er plass til, hvor mye du kan forvente Ã¥ fÃ¥\n produsert pr Ã¥r, eller ferdig montert.\n </p>\n <p>\n Solkart.no er laget i et samarbeide med Solcellespesialisten og\n Norkart AS. Hensikten med Solkart.no er fremme utbredelsen av\n solceller i Norge, samt Ã¥ synliggjøre den store ressursen\n energien fra sola ogsÃ¥ utgjør i Norge. MÃ¥let med solkart.no er\n at tjenesten skal være et enkelt og godt verktøy for bÃ¥de smÃ¥ og\n store eiendomseiere i Norge.\n </p>\n </div>\n <div className=\"about-desc-parts\">\n <div className=\"about-image\">\n <img\n alt=\"solcellespesialisten-about-properties-roof-solcelle.png\"\n src={propertie}\n />\n </div>\n <div className=\"about-text\">\n <h1>Hvordan er Solkart.no laget?</h1>\n <p\n className={`${\n texts[0].showText ? \"expanded\" : \"collapsed\"\n } text-transition`}\n >\n {texts[0].showText\n ? texts[0].text1\n : `${texts[0].text1.substring(\n 0,\n texts[0].text1.length / 2\n )}`}\n </p>\n <p>\n {texts[0].showText ? \"Lese mindre\" : \"Les mer\"}\n <button\n className={texts[0].showText ? \"rotate-button\" : \"\"}\n onClick={() => readMore(texts[0].id)}\n >\n <Arrowicon />\n </button>\n </p>\n </div>\n </div>\n <div className=\"about-desc-parts2\">\n <div className=\"about-text\">\n <h1>Hvor eksakt er Solkart.no?</h1>\n <p\n className={`${\n texts[1].showText ? \"expanded1\" : \"collapsed1\"\n } text-transition`}\n >\n {texts[1].showText\n ? texts[1].text2\n : `${texts[1].text2.substring(\n 0,\n texts[1].text2.length / 2\n )}`}\n </p>\n <p>\n {texts[1].showText ? \"Lese mindre\" : \"Les mer\"}\n <button\n className={texts[1].showText ? \"rotate-button\" : \"\"}\n onClick={() => readMore(texts[1].id)}\n >\n <Arrowicon />\n </button>\n </p>\n </div>\n <div className=\"about-image\">\n <img\n alt=\"solcellespesialisten-about-weather-solcelle.png\"\n src={cloud}\n />\n </div>\n </div>\n <div className=\"about-desc-parts\">\n <div className=\"about-image\">\n <img\n alt=\"solcellespesialisten-about-prices-solcelle.png\"\n src={panel}\n />\n </div>\n <div className=\"about-text\">\n <h1>Hva er hensynsstatt i prisene som vises pÃ¥ Solkart.no?</h1>\n <p\n className={`${\n texts[2].showText ? \"expanded2\" : \"collapsed2\"\n } text-transition`}\n >\n {texts[2].showText\n ? texts[2].text3\n : `${texts[2].text3.substring(\n 0,\n texts[2].text3.length / 2\n )}`}\n </p>\n <p>\n {texts[2].showText ? \"Lese mindre\" : \"Les mer\"}\n <button\n className={texts[2].showText ? \"rotate-button\" : \"\"}\n onClick={() => readMore(texts[2].id)}\n >\n <Arrowicon />\n </button>\n </p>\n </div>\n </div>\n <div className=\"about-desc-parts2\">\n <div className=\"about-text last-card\">\n <h1>Ønsker du Ã¥ kjøpe et solcelleanlegg?</h1>\n <p style={{ display: \"unset\" }}>\n Bestill rett pÃ¥ solkart.no, eller ta kontakt med\n Solcellespesialisten pÃ¥ <span>69 10 90 65</span>\n </p>\n <p style={{ display: \"unset\" }}>\n eller \n <ButtonEmail\n label=\"salg.enebolig@solcellespesialisten.no\"\n mailto=\"mailto:salg.enebolig@solcellespesialisten.no\"\n />\n </p>\n </div>\n <div className=\"about-image\">\n <img\n alt=\"solcellespesialisten-about-information-solcelle.png\"\n src={system}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default About;\n","import Search from \"../../components/Search/Search\";\nimport \"./Solutions.scss\";\nimport rec1 from \"../../assets/images/Takstein.png\";\nimport rec2 from \"../../assets/images/Takpapp.png\";\nimport rec3 from \"../../assets/images/Takshingel.png\";\nimport rec4 from \"../../assets/images/Decra.png\";\nimport rec5 from \"../../assets/images/Folietak.png\";\nimport rec6 from \"../../assets/images/Takpanner.png\";\nimport premiumPanel from \"../../assets/images/premiumpanel.png\";\nimport performancePanel from \"../../assets/images/performancepanel.png\";\nimport economyPanel from \"../../assets/images/economypanel.png\";\nimport { motion } from \"framer-motion\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst Solutions = () => {\n const images = [\n {\n id: 1,\n img: rec1,\n label: \"Takstein\",\n caption: \"solcellespesialisten-takstein-solcelle.png\",\n },\n {\n id: 2,\n img: rec2,\n label: \"Takpapp\",\n caption: \"solcellespesialisten-takpapp-solcelle.png\",\n },\n {\n id: 3,\n img: rec3,\n label: \"Takshingel\",\n caption: \"solcellespesialisten-takshingel-solcelle.png\",\n },\n {\n id: 4,\n img: rec4,\n label: \"Decra\",\n caption: \"solcellespesialisten-decra-solcelle.png\",\n },\n {\n id: 5,\n img: rec5,\n label: \"Folietak\",\n caption: \"solcellespesialisten-Folietak-solcelle.png\",\n },\n {\n id: 6,\n img: rec6,\n label: \"Takpanner/trapes/bølgeblikk\",\n caption: \"solcellespesialisten-takpanner-solcelle.png\",\n },\n ];\n\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"solutions-page-section\">\n <div className=\"solutions-page-container\">\n <Search />\n <div className=\"solutions-page-description\">\n <h1 className=\"title\">Løsninger</h1>\n <div className=\"subtitle\">\n <p>\n Her pÃ¥ solkart.no sÃ¥ presenterer vi en rekke solcelleløsninger fra\n noen av verdens beste leverandører. Under ser du litt generell\n informasjon om de ulike løsningene vi tilbyr.\n </p>\n </div>\n <div className=\"assembly-solutions\">\n <h1>Monteringsløsninger</h1>\n <p>\n Solcellespesialisten har i flere Ã¥r testet en rekke løsninger som\n vi pÃ¥ papiret mente burde passet det norske markedet og de norske\n forholdene. Resultatet av dette et stort spekter av festeløsninger\n som gjør at vi kan montere solceller pÃ¥ de aller fleste tak som\n finnes i Norge. Da solceller ofte har aluminiumsrammer, og selve\n rammesystemet er av aluminium er det viktig at alle festekroker og\n skruer som benyttes ikke “spiser opp†aluminiumen. Alle vÃ¥re\n løsninger er laget av metall som tÃ¥ler norske snø-laster og\n samtidig ikke “spiser opp†aluminiumen.\n </p>\n </div>\n <div className=\"external-mounting\">\n <h1>UtenpÃ¥liggende montasje</h1>\n <p>\n Som kjernen i vÃ¥re montasje systemer benyttes IBC Topfix 200 for\n skrÃ¥tak, eller IBC Aerofix eller Van Der Valk Pro for flate tak.\n Vi har løsninger som tÃ¥ler snølaster opp til 5kN/m2, og lagerfører\n takfester for:\n </p>\n </div>\n <div className=\"roof-pics\">\n {images.map((image, index) => {\n return (\n <div key={index}>\n <img src={image.img} alt={image.caption} />\n <label>{image.label}</label>\n </div>\n );\n })}\n </div>\n <div className=\"integrated-solution\">\n <h1>Integrert løsning</h1>\n <p>\n En integrert løsning, betyr at man erstatter et annet\n bygningselement med solceller, mest vanlig er takstein.\n Solcellespesialisten er norsk distributør for den Franske\n produsentene IRFTS og GSE. Disse leverer en meget god og\n kostnadseffektiv løsning for Ã¥ integrere vanlige solceller inn i\n takflaten. Løsningen erstatter da f. eks takstein, og bør vurderes\n ved rehabilitering av tak og nybygg. Selve løsningen tilbyr bedre\n vær og vindbeskyttelse enn vanlig takstein.\n </p>\n </div>\n <div className=\"solar-panels\">\n <h1>Solcellepaneler</h1>\n <p>\n Solcellepanelene er sammen med vekselretteren de delene som gjør\n om solenergien til strøm du kan bruke i bygget ditt. Hvis vi\n generaliserer litt, sÃ¥ kan vi si at hvis du sammenligner ulike\n solcellepaneler med samme effekt, feks. 3700W, sÃ¥ vil alle disse\n produsere det samme i løpet av et Ã¥r. De vanligste solcellene vi\n installerer i Norge i dag er monokrystallinske solceller, som er\n svakt blÃ¥aktige i fargen og klarer Ã¥ gjøre om ca 22% av sollyset\n til strøm.\n </p>\n </div>\n <div className=\"solutions-cards\">\n <div className=\"solution-card\">\n <h1>Premium</h1>\n <p>405Wp helsorte solcellepaneler med half cut technology.</p>\n <div>\n <img src={premiumPanel} alt=\"Premium Panel\" />\n </div>\n </div>\n <div className=\"solution-card\">\n <h1>Performance</h1>\n <p>\n 435Wp helsorte solcellepaneler med half cut eller shingled\n technology.\n </p>\n <div>\n <img src={performancePanel} alt=\"Performance Panel\" />\n </div>\n </div>\n <div className=\"solution-card\">\n <h1>Economy</h1>\n <p>455Wp, Sort ramme med hvit bakplate.</p>\n <div className=\"economy-image\">\n <img src={economyPanel} alt=\"Economy Panel\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default Solutions;\n","export const Phoneicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"27\"\n height=\"27\"\n viewBox=\"0 0 27 27\"\n fill=\"none\"\n >\n <path\n d=\"M23.4375 0.625H2.8125C1.23047 0.625 0 1.91406 0 3.4375V24.0625C0 25.6445 1.23047 26.875 2.8125 26.875H23.4375C24.9609 26.875 26.25 25.6445 26.25 24.0625V3.4375C26.25 1.91406 24.9609 0.625 23.4375 0.625ZM24.375 24.0625C24.375 24.5898 23.9062 25 23.4375 25H2.8125C2.28516 25 1.875 24.5898 1.875 24.0625V3.4375C1.875 2.96875 2.28516 2.5 2.8125 2.5H23.4375C23.9062 2.5 24.375 2.96875 24.375 3.4375V24.0625ZM21.1523 5.25391L17.6953 4.43359C17.5781 4.43359 17.4609 4.43359 17.2852 4.43359C16.582 4.43359 15.9961 4.84375 15.7031 5.42969L14.1211 9.12109C13.8281 9.82422 14.0625 10.7031 14.6484 11.1719L16.0547 12.3438C15 14.1602 13.4766 15.6836 11.6602 16.7383L10.4883 15.332C10.0195 14.7461 9.14062 14.5117 8.4375 14.8047L4.74609 16.3867C3.98438 16.7383 3.57422 17.5586 3.75 18.3789L4.57031 21.8359C4.74609 22.5977 5.44922 23.125 6.26953 23.125C15.2344 23.125 22.5 15.918 22.5 6.89453C22.5 6.13281 21.9141 5.42969 21.1523 5.25391ZM6.32812 21.25L5.625 18.0859L9.08203 16.6211L11.1328 19.082C14.7656 17.3828 16.6406 15.5078 18.3984 11.8164L15.9375 9.76562L17.4023 6.30859L20.5664 7.01172C20.5078 14.8633 14.1797 21.1914 6.32812 21.25Z\"\n fill=\"#5F6368\"\n />\n </svg>\n );\n};\n","export const Envelopeicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"30\"\n height=\"23\"\n viewBox=\"0 0 30 23\"\n fill=\"none\"\n >\n <path\n d=\"M27.1875 0.5H2.8125C1.23047 0.5 0 1.78906 0 3.3125V20.1875C0 21.7695 1.23047 23 2.8125 23H27.1875C28.7109 23 30 21.7695 30 20.1875V3.3125C30 1.78906 28.7109 0.5 27.1875 0.5ZM2.8125 2.375H27.1875C27.6562 2.375 28.125 2.84375 28.125 3.3125V5.77344C26.8359 6.82812 24.9609 8.35156 19.2773 12.8633C18.2812 13.6836 16.3477 15.5586 15 15.5C13.5938 15.5586 11.6602 13.6836 10.6641 12.8633C4.98047 8.35156 3.10547 6.82812 1.875 5.77344V3.3125C1.875 2.84375 2.28516 2.375 2.8125 2.375ZM27.1875 21.125H2.8125C2.28516 21.125 1.875 20.7148 1.875 20.1875V8.17578C3.16406 9.28906 5.27344 10.9883 9.49219 14.3281C10.7227 15.3242 12.832 17.4336 15 17.375C17.1094 17.4336 19.2188 15.3242 20.4492 14.3281C24.668 10.9883 26.7773 9.28906 28.125 8.17578V20.1875C28.125 20.7148 27.6562 21.125 27.1875 21.125Z\"\n fill=\"#5F6368\"\n />\n </svg>\n );\n};\n","export const Globeicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n >\n <path\n d=\"M14.5312 0.21875C6.50391 0.21875 0 6.72266 0 14.75C0 22.7773 6.50391 29.2812 14.5312 29.2812C22.5586 29.2812 29.0625 22.7773 29.0625 14.75C29.0625 6.72266 22.5586 0.21875 14.5312 0.21875ZM25.8398 9.125H20.9766C20.4492 6.54688 19.5703 4.32031 18.457 2.73828C21.6797 3.85156 24.3164 6.13672 25.8398 9.125ZM19.6875 14.75C19.6875 16.0977 19.5703 17.3867 19.3945 18.5H9.60938C9.43359 17.3867 9.375 16.0977 9.375 14.75C9.375 13.4609 9.43359 12.1719 9.60938 11H19.3945C19.5703 12.1719 19.6875 13.4609 19.6875 14.75ZM14.5312 2.09375C16.0547 2.09375 18.1055 4.73047 19.1016 9.125H9.90234C10.8984 4.73047 12.9492 2.09375 14.5312 2.09375ZM10.5469 2.73828C9.43359 4.32031 8.55469 6.54688 8.02734 9.125H3.16406C4.6875 6.13672 7.32422 3.85156 10.5469 2.73828ZM1.875 14.75C1.875 13.4609 2.05078 12.2305 2.40234 11H7.73438C7.55859 12.2305 7.5 13.4609 7.5 14.75C7.5 16.0977 7.55859 17.3281 7.73438 18.5H2.40234C2.05078 17.3281 1.875 16.0977 1.875 14.75ZM3.16406 20.375H8.02734C8.55469 23.0117 9.43359 25.2383 10.5469 26.8203C7.32422 25.707 4.6875 23.4219 3.16406 20.375ZM14.5312 27.4062C12.9492 27.4062 10.8984 24.8281 9.90234 20.375H19.1016C18.1055 24.8281 16.0547 27.4062 14.5312 27.4062ZM18.457 26.8203C19.5703 25.2383 20.4492 23.0117 20.9766 20.375H25.8398C24.3164 23.4219 21.6797 25.707 18.457 26.8203ZM21.2695 18.5C21.4453 17.3281 21.5625 16.0977 21.5625 14.75C21.5625 13.4609 21.4453 12.2305 21.2695 11H26.6016C26.9531 12.2305 27.1875 13.4609 27.1875 14.75C27.1875 16.0977 26.9531 17.3281 26.6016 18.5H21.2695Z\"\n fill=\"#5F6368\"\n />\n </svg>\n );\n};\n","export const Buildingicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"27\"\n height=\"31\"\n viewBox=\"0 0 27 31\"\n fill=\"none\"\n >\n <path\n d=\"M11.25 7.01953C11.25 6.66797 10.8984 6.31641 10.5469 6.31641H8.20312C7.79297 6.31641 7.5 6.66797 7.5 7.01953V9.36328C7.5 9.77344 7.79297 10.0664 8.20312 10.0664H10.5469C10.8984 10.0664 11.25 9.77344 11.25 9.36328V7.01953ZM18.0469 6.31641H15.7031C15.293 6.31641 15 6.66797 15 7.01953V9.36328C15 9.77344 15.293 10.0664 15.7031 10.0664H18.0469C18.3984 10.0664 18.75 9.77344 18.75 9.36328V7.01953C18.75 6.66797 18.3984 6.31641 18.0469 6.31641ZM10.5469 11.9414H8.20312C7.79297 11.9414 7.5 12.293 7.5 12.6445V14.9883C7.5 15.3984 7.79297 15.6914 8.20312 15.6914H10.5469C10.8984 15.6914 11.25 15.3984 11.25 14.9883V12.6445C11.25 12.293 10.8984 11.9414 10.5469 11.9414ZM18.0469 11.9414H15.7031C15.293 11.9414 15 12.293 15 12.6445V14.9883C15 15.3984 15.293 15.6914 15.7031 15.6914H18.0469C18.3984 15.6914 18.75 15.3984 18.75 14.9883V12.6445C18.75 12.293 18.3984 11.9414 18.0469 11.9414ZM10.5469 17.5664H8.20312C7.79297 17.5664 7.5 17.918 7.5 18.2695V20.6133C7.5 21.0234 7.79297 21.3164 8.20312 21.3164H10.5469C10.8984 21.3164 11.25 21.0234 11.25 20.6133V18.2695C11.25 17.918 10.8984 17.5664 10.5469 17.5664ZM18.0469 17.5664H15.7031C15.293 17.5664 15 17.918 15 18.2695V20.6133C15 21.0234 15.293 21.3164 15.7031 21.3164H18.0469C18.3984 21.3164 18.75 21.0234 18.75 20.6133V18.2695C18.75 17.918 18.3984 17.5664 18.0469 17.5664ZM26.25 29.5781C26.25 29.2266 25.8984 28.875 25.5469 28.875H24.375V2.15625C24.375 1.39453 23.7305 0.75 22.9688 0.75H3.28125C2.46094 0.75 1.875 1.39453 1.875 2.15625V28.875H0.703125C0.292969 28.875 0 29.2266 0 29.5781V30.75H26.25V29.5781ZM22.5 28.875H15V23.8945C15 23.543 14.6484 23.1914 14.2969 23.1914H11.9531C11.543 23.1914 11.25 23.543 11.25 23.8945V28.875H3.75V2.625H22.5V28.875Z\"\n fill=\"#5F6368\"\n />\n </svg>\n );\n};\n","import './ContactForm.scss'\nimport { Phoneicon } from \"../../components/icons/Phoneicon\";\nimport { Envelopeicon } from \"../../components/icons/Envelopeicon\";\nimport { Globeicon } from \"../../components/icons/Globeicon\";\nimport { Buildingicon } from \"../../components/icons/Buildingicon\";\nimport ButtonEmail from \"../../components/SendEmail/ButtonEmail\";\nimport { useLocation } from 'react-router';\n\nconst ContactForm = () => {\n \n const location = useLocation();\n\n return (\n <div className=\"contact-us-text-form\">\n <div className=\"contact-us-text-form-row\">\n <Phoneicon />\n <div>\n <p>Ring oss </p>\n <p>69 10 90 65</p>\n </div>\n </div>\n <div className=\"contact-us-text-form-row\">\n <Envelopeicon />\n <div>\n <p>Chat med salg</p>\n <p>\n <ButtonEmail\n label=\" salg.enebolig@solcellespesialisten.no\"\n mailto=\"mailto:salg.enebolig@solcellespesialisten.no\"\n />\n </p>\n </div>\n </div>\n <div className=\"contact-us-text-form-row\" style={location.pathname === '/contact' ? {display : \"none\" } : {display : \"flex\" }}>\n <Buildingicon />\n <div>\n <p>Besøk oss</p>\n <p>Solcellespesialisten</p>\n <p> AS Stabburveien 1A </p>\n <p>1617 FREDRIKSTAD</p>\n </div>\n </div>\n <div className=\"contact-us-text-form-row\">\n <a\n href=\"https://www.facebook.com/Solcellespesialisten\"\n target=\"_blank\"\n >\n <Globeicon />\n </a>\n\n <div className=\"facebook-info\">\n <a\n href=\"https://www.facebook.com/Solcellespesialisten\"\n target=\"_blank\"\n >\n <p>Facebook</p>\n <p>Facebook.com/Solcellespesialisten </p>\n </a>\n </div>\n </div>\n </div>\n )\n}\n\nexport default ContactForm","import Search from \"../../components/Search/Search\";\nimport \"./Contact.scss\";\nimport { motion } from \"framer-motion\";\nimport ContactForm from \"../../components/ContactForm/ContactForm\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst Contact = () => {\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"contact-page-section\">\n <div className=\"contact-page-container\">\n <Search />\n <div className=\"contact-page-description\">\n <div className=\"contact-us-text\">\n <h1>Kontakt oss</h1>\n <p className=\"subtitle\">\n Solkart.no drives av selskapet Solcellespesialisten AS. Du kan\n kontakte oss pÃ¥ følgende mÃ¥ter:\n </p>\n <ContactForm />\n </div>\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default Contact;\n","import \"./SubmissionView.scss\";\nimport Search from \"../../components/Search/Search\";\nimport { motion } from \"framer-motion\";\nimport ContactForm from \"../../components/ContactForm/ContactForm\";\nimport contactViewImage from \"../../assets/images/contactview.png\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst SubmissionView = () => {\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"contact-view-page-section\">\n <div className=\"contact-view-page-container\">\n <Search />\n <div className=\"contact-view-page-description\">\n <div className=\"contact-view-us-text\">\n <h1>Takk for meldingen</h1>\n <p className=\"subtitle\">\n En av vÃ¥re representanter vil komme tilbake til deg sÃ¥ snart som\n mulig.\n </p>\n <p className=\"subtitle2\">\n Solkart.no drives av selskapet Solcellespesialisten AS.\n <br /> Du kan kontakte oss pÃ¥ følgende mÃ¥ter:\n </p>\n </div>\n <div className=\"contact-view-info\">\n <ContactForm />\n <div className=\"contact-view-image\">\n <img\n src={contactViewImage}\n alt=\"solcellespesialisten-contact-us-view-solcelle.png\"\n ></img>\n </div>\n </div>\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default SubmissionView;\n","import { createContext, useContext } from 'react';\nexport const CONTEXT_VERSION = 1;\nexport function createLeafletContext(map) {\n return Object.freeze({\n __version: CONTEXT_VERSION,\n map\n });\n}\nexport function extendContext(source, extra) {\n return Object.freeze({\n ...source,\n ...extra\n });\n}\nexport const LeafletContext = createContext(null);\nexport const LeafletProvider = LeafletContext.Provider;\nexport function useLeafletContext() {\n const context = useContext(LeafletContext);\n if (context == null) {\n throw new Error('No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>');\n }\n return context;\n}\n","import { useLeafletContext } from '@react-leaflet/core';\nimport { useEffect } from 'react';\nexport function useMap() {\n return useLeafletContext().map;\n}\nexport function useMapEvent(type, handler) {\n const map = useMap();\n useEffect(function addMapEventHandler() {\n // @ts-ignore event type\n map.on(type, handler);\n return function removeMapEventHandler() {\n // @ts-ignore event type\n map.off(type, handler);\n };\n }, [\n map,\n type,\n handler\n ]);\n return map;\n}\nexport function useMapEvents(handlers) {\n const map = useMap();\n useEffect(function addMapEventHandlers() {\n map.on(handlers);\n return function removeMapEventHandlers() {\n map.off(handlers);\n };\n }, [\n map,\n handlers\n ]);\n return map;\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","function _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { LeafletProvider, createLeafletContext } from '@react-leaflet/core';\nimport { Map as LeafletMap } from 'leaflet';\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState } from 'react';\nfunction MapContainerComponent({ bounds , boundsOptions , center , children , className , id , placeholder , style , whenReady , zoom , ...options }, forwardedRef) {\n const [props] = useState({\n className,\n id,\n style\n });\n const [context, setContext] = useState(null);\n useImperativeHandle(forwardedRef, ()=>context?.map ?? null, [\n context\n ]);\n const mapRef = useCallback((node)=>{\n if (node !== null && context === null) {\n const map = new LeafletMap(node, options);\n if (center != null && zoom != null) {\n map.setView(center, zoom);\n } else if (bounds != null) {\n map.fitBounds(bounds, boundsOptions);\n }\n if (whenReady != null) {\n map.whenReady(whenReady);\n }\n setContext(createLeafletContext(map));\n }\n }, []);\n useEffect(()=>{\n return ()=>{\n context?.map.remove();\n };\n }, [\n context\n ]);\n const contents = context ? /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, children) : placeholder ?? null;\n return /*#__PURE__*/ React.createElement(\"div\", _extends({}, props, {\n ref: mapRef\n }), contents);\n}\nexport const MapContainer = /*#__PURE__*/ forwardRef(MapContainerComponent);\n","import { useEffect, useRef } from 'react';\nexport function createElementObject(instance, context, container) {\n return Object.freeze({\n instance,\n context,\n container\n });\n}\nexport function createElementHook(createElement, updateElement) {\n if (updateElement == null) {\n return function useImmutableLeafletElement(props, context) {\n const elementRef = useRef();\n if (!elementRef.current) elementRef.current = createElement(props, context);\n return elementRef;\n };\n }\n return function useMutableLeafletElement(props, context) {\n const elementRef = useRef();\n if (!elementRef.current) elementRef.current = createElement(props, context);\n const propsRef = useRef(props);\n const { instance } = elementRef.current;\n useEffect(function updateElementProps() {\n if (propsRef.current !== props) {\n updateElement(instance, props, propsRef.current);\n propsRef.current = props;\n }\n }, [\n instance,\n props,\n context\n ]);\n return elementRef;\n };\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LeafletProvider } from './context.js';\nexport function createContainerComponent(useElement) {\n function ContainerComponent(props, forwardedRef) {\n const { instance , context } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, props.children);\n }\n return /*#__PURE__*/ forwardRef(ContainerComponent);\n}\nexport function createDivOverlayComponent(useElement) {\n function OverlayComponent(props, forwardedRef) {\n const [isOpen, setOpen] = useState(false);\n const { instance } = useElement(props, setOpen).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n useEffect(function updateOverlay() {\n if (isOpen) {\n instance.update();\n }\n }, [\n instance,\n isOpen,\n props.children\n ]);\n // @ts-ignore _contentNode missing in type definition\n const contentNode = instance._contentNode;\n return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;\n }\n return /*#__PURE__*/ forwardRef(OverlayComponent);\n}\nexport function createLeafComponent(useElement) {\n function LeafComponent(props, forwardedRef) {\n const { instance } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return null;\n }\n return /*#__PURE__*/ forwardRef(LeafComponent);\n}\n","import { useEffect, useRef } from 'react';\nimport { useLeafletContext } from './context.js';\nexport function createControlHook(useElement) {\n return function useLeafletControl(props) {\n const context = useLeafletContext();\n const elementRef = useElement(props, context);\n const { instance } = elementRef.current;\n const positionRef = useRef(props.position);\n const { position } = props;\n useEffect(function addControl() {\n instance.addTo(context.map);\n return function removeControl() {\n instance.remove();\n };\n }, [\n context.map,\n instance\n ]);\n useEffect(function updateControl() {\n if (position != null && position !== positionRef.current) {\n instance.setPosition(position);\n positionRef.current = position;\n }\n }, [\n instance,\n position\n ]);\n return elementRef;\n };\n}\n","import { LeafletProvider, createContainerComponent, createControlHook, createElementHook, createElementObject, extendContext, useLeafletContext } from '@react-leaflet/core';\nimport { Control } from 'leaflet';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nexport const useLayersControlElement = createElementHook(function createLayersControl({ children: _c , ...options }, ctx) {\n const control = new Control.Layers(undefined, undefined, options);\n return createElementObject(control, extendContext(ctx, {\n layersControl: control\n }));\n}, function updateLayersControl(control, props, prevProps) {\n if (props.collapsed !== prevProps.collapsed) {\n if (props.collapsed === true) {\n control.collapse();\n } else {\n control.expand();\n }\n }\n});\nexport const useLayersControl = createControlHook(useLayersControlElement);\n// @ts-ignore\nexport const LayersControl = createContainerComponent(useLayersControl);\nexport function createControlledLayer(addLayerToControl) {\n return function ControlledLayer(props) {\n const parentContext = useLeafletContext();\n const propsRef = useRef(props);\n const [layer, setLayer] = useState(null);\n const { layersControl , map } = parentContext;\n const addLayer = useCallback((layerToAdd)=>{\n if (layersControl != null) {\n if (propsRef.current.checked) {\n map.addLayer(layerToAdd);\n }\n addLayerToControl(layersControl, layerToAdd, propsRef.current.name);\n setLayer(layerToAdd);\n }\n }, [\n layersControl,\n map\n ]);\n const removeLayer = useCallback((layerToRemove)=>{\n layersControl?.removeLayer(layerToRemove);\n setLayer(null);\n }, [\n layersControl\n ]);\n const context = useMemo(()=>{\n return extendContext(parentContext, {\n layerContainer: {\n addLayer,\n removeLayer\n }\n });\n }, [\n parentContext,\n addLayer,\n removeLayer\n ]);\n useEffect(()=>{\n if (layer !== null && propsRef.current !== props) {\n if (props.checked === true && (propsRef.current.checked == null || propsRef.current.checked === false)) {\n map.addLayer(layer);\n } else if (propsRef.current.checked === true && (props.checked == null || props.checked === false)) {\n map.removeLayer(layer);\n }\n propsRef.current = props;\n }\n });\n return props.children ? /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, props.children) : null;\n };\n}\nLayersControl.BaseLayer = createControlledLayer(function addBaseLayer(layersControl, layer, name) {\n layersControl.addBaseLayer(layer, name);\n});\nLayersControl.Overlay = createControlledLayer(function addOverlay(layersControl, layer, name) {\n layersControl.addOverlay(layer, name);\n});\n","import { useEffect, useRef } from 'react';\nexport function useEventHandlers(element, eventHandlers) {\n const eventHandlersRef = useRef();\n useEffect(function addEventHandlers() {\n if (eventHandlers != null) {\n element.instance.on(eventHandlers);\n }\n eventHandlersRef.current = eventHandlers;\n return function removeEventHandlers() {\n if (eventHandlersRef.current != null) {\n element.instance.off(eventHandlersRef.current);\n }\n eventHandlersRef.current = null;\n };\n }, [\n element,\n eventHandlers\n ]);\n}\n","export function withPane(props, context) {\n const pane = props.pane ?? context.pane;\n return pane ? {\n ...props,\n pane\n } : props;\n}\n","import { useEffect } from 'react';\nimport { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function useLayerLifecycle(element, context) {\n useEffect(function addLayer() {\n const container = context.layerContainer ?? context.map;\n container.addLayer(element.instance);\n return function removeLayer() {\n context.layerContainer?.removeLayer(element.instance);\n context.map.removeLayer(element.instance);\n };\n }, [\n context,\n element\n ]);\n}\nexport function createLayerHook(useElement) {\n return function useLayer(props) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useAttribution(context.map, props.attribution);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLayerLifecycle(elementRef.current, context);\n return elementRef;\n };\n}\n","import { useEffect, useRef } from 'react';\nexport function useAttribution(map, attribution) {\n const attributionRef = useRef(attribution);\n useEffect(function updateAttribution() {\n if (attribution !== attributionRef.current && map.attributionControl != null) {\n if (attributionRef.current != null) {\n map.attributionControl.removeAttribution(attributionRef.current);\n }\n if (attribution != null) {\n map.attributionControl.addAttribution(attribution);\n }\n }\n attributionRef.current = attribution;\n }, [\n map,\n attribution\n ]);\n}\n","import { useEffect, useRef } from 'react';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { useLayerLifecycle } from './layer.js';\nimport { withPane } from './pane.js';\nexport function usePathOptions(element, props) {\n const optionsRef = useRef();\n useEffect(function updatePathOptions() {\n if (props.pathOptions !== optionsRef.current) {\n const options = props.pathOptions ?? {};\n element.instance.setStyle(options);\n optionsRef.current = options;\n }\n }, [\n element,\n props\n ]);\n}\nexport function createPathHook(useElement) {\n return function usePath(props) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLayerLifecycle(elementRef.current, context);\n usePathOptions(elementRef.current, props);\n return elementRef;\n };\n}\n","import { createContainerComponent, createDivOverlayComponent, createLeafComponent } from './component.js';\nimport { createControlHook } from './control.js';\nimport { createElementHook, createElementObject } from './element.js';\nimport { createLayerHook } from './layer.js';\nimport { createDivOverlayHook } from './div-overlay.js';\nimport { createPathHook } from './path.js';\nexport function createControlComponent(createInstance) {\n function createElement(props, context) {\n return createElementObject(createInstance(props), context);\n }\n const useElement = createElementHook(createElement);\n const useControl = createControlHook(useElement);\n return createLeafComponent(useControl);\n}\nexport function createLayerComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const useLayer = createLayerHook(useElement);\n return createContainerComponent(useLayer);\n}\nexport function createOverlayComponent(createElement, useLifecycle) {\n const useElement = createElementHook(createElement);\n const useOverlay = createDivOverlayHook(useElement, useLifecycle);\n return createDivOverlayComponent(useOverlay);\n}\nexport function createPathComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const usePath = createPathHook(useElement);\n return createContainerComponent(usePath);\n}\nexport function createTileLayerComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const useLayer = createLayerHook(useElement);\n return createLeafComponent(useLayer);\n}\n","export function updateGridLayer(layer, props, prevProps) {\n const { opacity , zIndex } = props;\n if (opacity != null && opacity !== prevProps.opacity) {\n layer.setOpacity(opacity);\n }\n if (zIndex != null && zIndex !== prevProps.zIndex) {\n layer.setZIndex(zIndex);\n }\n}\n","import { createElementObject, createTileLayerComponent, updateGridLayer, withPane } from '@react-leaflet/core';\nimport { TileLayer as LeafletTileLayer } from 'leaflet';\nexport const TileLayer = createTileLayerComponent(function createTileLayer({ url , ...options }, context) {\n const layer = new LeafletTileLayer(url, withPane(options, context));\n return createElementObject(layer, context);\n}, updateGridLayer);\n","import { createElementObject, createPathComponent, extendContext } from '@react-leaflet/core';\nimport { Polygon as LeafletPolygon } from 'leaflet';\nexport const Polygon = createPathComponent(function createPolygon({ positions , ...options }, ctx) {\n const polygon = new LeafletPolygon(positions, options);\n return createElementObject(polygon, extendContext(ctx, {\n overlayContainer: polygon\n }));\n}, function updatePolygon(layer, props, prevProps) {\n if (props.positions !== prevProps.positions) {\n layer.setLatLngs(props.positions);\n }\n});\n","import { createElementObject, createTileLayerComponent, updateGridLayer, withPane } from '@react-leaflet/core';\nimport { TileLayer } from 'leaflet';\nexport const WMSTileLayer = createTileLayerComponent(function createWMSTileLayer({ eventHandlers: _eh , params ={} , url , ...options }, context) {\n const layer = new TileLayer.WMS(url, {\n ...params,\n ...withPane(options, context)\n });\n return createElementObject(layer, context);\n}, function updateWMSTileLayer(layer, props, prevProps) {\n updateGridLayer(layer, props, prevProps);\n if (props.params != null && props.params !== prevProps.params) {\n layer.setParams(props.params);\n }\n});\n","import { createElementObject, createLayerComponent, extendContext } from '@react-leaflet/core';\nimport { Marker as LeafletMarker } from 'leaflet';\nexport const Marker = createLayerComponent(function createMarker({ position , ...options }, ctx) {\n const marker = new LeafletMarker(position, options);\n return createElementObject(marker, extendContext(ctx, {\n overlayContainer: marker\n }));\n}, function updateMarker(marker, props, prevProps) {\n if (props.position !== prevProps.position) {\n marker.setLatLng(props.position);\n }\n if (props.icon != null && props.icon !== prevProps.icon) {\n marker.setIcon(props.icon);\n }\n if (props.zIndexOffset != null && props.zIndexOffset !== prevProps.zIndexOffset) {\n marker.setZIndexOffset(props.zIndexOffset);\n }\n if (props.opacity != null && props.opacity !== prevProps.opacity) {\n marker.setOpacity(props.opacity);\n }\n if (marker.dragging != null && props.draggable !== prevProps.draggable) {\n if (props.draggable === true) {\n marker.dragging.enable();\n } else {\n marker.dragging.disable();\n }\n }\n});\n","import { config } from \"./config\";\n\nexport async function getMapCoordinates(latlngs) {\n const query = `https:${config.WAAPItakflaterPunktUrl}?X=${latlngs.lng}&Y=${latlngs.lat}&api_key=${config.apikey}&GeometryTextFormat=GeoJson`;\n\n const apiResult = await fetch(query, {\n headers: {\n Accept: \"application/json\",\n },\n method: \"GET\",\n });\n\n if (apiResult.status === 200) {\n return await getResponse(apiResult);\n }\n\n return null;\n}\n\nasync function getResponse(apiResult) {\n const json = await apiResult.json();\n\n let teig = json[0];\n\n let eave;\n let eaveHeight;\n let newGeometri;\n\n if (teig === null) {\n return null;\n } else {\n let geometri = JSON.parse(teig.Geometri);\n let coordinates = geometri.coordinates[0];\n eave = getRoofEave(coordinates);\n newGeometri = getNewGeometri(coordinates);\n\n let res = await getElevation(eave);\n let masl = res[0].Z;\n let eaveMasl = eave[0].Z;\n eaveHeight = eaveMasl - masl;\n }\n\n return {\n ...teig,\n eaveHeight,\n newGeometri\n };\n}\n\nasync function getElevation(coordinates, success, failure) {\n const newPunkter = JSON.stringify(coordinates).replace(/\"/g, \"\");\n\n const query = `https:${config.WAAPIhoydeUrl}?Punkter=${newPunkter}&api_key=${config.apikey}`;\n\n const apiResult = await fetch(query, {\n headers: {\n Accept: \"application/json\",\n },\n method: \"GET\",\n });\n\n if (apiResult.status === 200) {\n return await getHeight(apiResult);\n }\n\n return null;\n}\n\nasync function getHeight(apiResult) {\n const json = await apiResult.json();\n return json.PunktHoyder;\n}\n\nfunction getRoofEave(coordinates) {\n let height, index;\n for (let i = 0; i < coordinates.length; i++) {\n let newHeight = coordinates[i][2];\n if (!height || newHeight < height) {\n index = i;\n height = newHeight;\n }\n }\n return [\n {\n X: coordinates[index][0],\n Y: coordinates[index][1],\n Z: coordinates[index][2],\n },\n ];\n}\n\nfunction getNewGeometri(coordinates) {\n let newArray = [];\n \n coordinates.map((coordinate) => {\n coordinate.pop();\n [coordinate[0], coordinate[1]] = [coordinate[1], coordinate[0]];\n newArray.push(coordinate);\n });\n\n return newArray;\n}\n","export async function getAddressFromLatLng(latlng) {\n var query = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${latlng.lat}&lon=${latlng.lng}`;\n\n const apiResult = await fetch(query, {\n headers: {\n Accept: \"application/json\",\n },\n method: \"GET\",\n });\n\n if (apiResult.status === 200) {\n return await getResponse(apiResult);\n }\n\n return null;\n}\n\nasync function getResponse(apiResult) {\n const json = await apiResult.json();\n let municipality = json.address.municipality;\n return municipality;\n}\n","import {\n LayersControl,\n MapContainer,\n Marker,\n Polygon,\n TileLayer,\n useMap,\n WMSTileLayer,\n} from \"react-leaflet\";\nimport { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useState } from \"react\";\nimport { config } from \"../../api/config\";\nimport { getMapCoordinates } from \"../../api/getCoordinatesApi\";\nimport {\n // setAddressLatlng,\n setCheckedAddress,\n setMunicipality,\n} from \"../../store/Address/action\";\nimport { useNavigate } from \"react-router\";\nimport { setShow } from \"../../store/Show/action\";\nimport { getAddressFromLatLng } from \"../../api/getAddressFromLatLng\";\n\nconst OrderMap = () => {\n const [latlng, setlatlng] = useState({\n lat: 63.79457628473434,\n lng: 11.486627316328393,\n });\n const [markerLatlng, setMarkerLatlng] = useState({\n lat: \"\",\n lng: \"\",\n });\n const [addressName, setAddressName] = useState(\n \"M B Landstads gate 4, Verdal\"\n );\n const [isDisabled, setIsDisabled] = useState(false);\n const [coordinates, setCoordinates] = useState([]);\n const [purpleOptions, setPurpleOptions] = useState({ color: \"purple\" });\n\n const dispatch = useDispatch();\n let navigate = useNavigate();\n\n let address = useSelector((state) => state.Address.address);\n let getNoLimits = sessionStorage.getItem(\"noLimits\");\n\n useEffect(() => {\n if (Object.keys(address).length > 0) {\n setlatlng(address.latlng);\n setMarkerLatlng(address.latlng);\n setAddressName(address.text);\n }\n }, [address]);\n\n useEffect(() => {\n if (isDisabled) {\n if (getNoLimits === \"true\") {\n navigate(\"/offer/?nolimits=1\");\n } else {\n navigate(\"/offer\");\n }\n }\n }, [isDisabled]);\n\n const props = {\n layers: \"takhelning:takhelning\",\n format: \"image/png\",\n transparent: true,\n maxZoom: 20,\n zoom: 20,\n apitoken: config.apikey,\n attribution: \"Norkart © \",\n };\n\n function SetViewOnClick({ coords }) {\n const map = useMap();\n map.setView(coords, map.getZoom());\n return null;\n }\n\n return (\n <MapContainer\n center={latlng}\n zoomControl={true}\n zoom={20}\n maxZoom={20}\n scrollWheelZoom={true}\n style={{ color: \"red\" }}\n whenReady={(map) => {\n map.target.on(\"click\", async function (e) {\n setlatlng(e.latlng);\n let result = await getMapCoordinates(e.latlng);\n let municipalityByLatlng = await getAddressFromLatLng(e.latlng);\n setCoordinates(result.newGeometri);\n dispatch(setCheckedAddress(result));\n dispatch(setMunicipality(municipalityByLatlng));\n window.sessionStorage.setItem(\n \"checkedAddress\",\n JSON.stringify(result)\n );\n window.sessionStorage.setItem(\"latlng\", JSON.stringify(e.latlng));\n window.sessionStorage.setItem(\"roofID\", 0);\n window.sessionStorage.setItem(\"roofName\", null);\n setTimeout(() => {\n setIsDisabled(true);\n dispatch(setShow(\"step1\"));\n }, \"1000\");\n });\n }}\n >\n <LayersControl position=\"bottomleft\">\n <LayersControl.BaseLayer checked={\"aerial\"}>\n <TileLayer\n url={`https://waapi.webatlas.no/maptiles/tiles/webatlas-orto-newup/wa_grid/{z}/{x}/{y}.jpeg?APITOKEN=${config.apikey}`}\n attribution={`Norkart`}\n zoom={20}\n maxZoom={20}\n />\n <Polygon pathOptions={purpleOptions} positions={coordinates} />\n <WMSTileLayer url={config.WAAPItakflaterUrl} {...props} />\n <Marker position={markerLatlng} />\n <SetViewOnClick coords={latlng} />\n </LayersControl.BaseLayer>\n </LayersControl>\n </MapContainer>\n );\n};\n\nexport default OrderMap;\n","import \"./RoofColor.scss\";\n\nconst RoofColor = () => {\n return (\n <div className=\"roof-color\">\n <div className=\"roof-color-section\">\n <div className=\"roof-color-title\">\n Takflatens egnethet for solenergi\n </div>\n <div className=\"roof-color-container\">\n <div className=\"roof-colors\"></div>\n <div className=\"roof-color-labels\">\n <p>Lite egnet</p>\n <p>Velegnet</p>\n <p>Svært egnet</p>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RoofColor;\n","export const Houseicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"21\"\n viewBox=\"0 0 24 21\"\n fill=\"none\"\n >\n <path\n d=\"M23.2656 9.875L21 7.84375V2.6875C21 2.17969 20.5703 1.75 20.0625 1.75H16.3125C15.7656 1.75 15.375 2.17969 15.375 2.6875V2.80469L13.2656 0.929688C12.9922 0.65625 12.6406 0.5 12.25 0.5C11.8203 0.5 11.4688 0.65625 11.1953 0.929688L1.19531 9.875C1.07812 9.99219 0.960938 10.1875 0.960938 10.3438C0.960938 10.5391 1.03906 10.6562 1.15625 10.7734L1.54688 11.2422C1.66406 11.3594 1.82031 11.4375 2.01562 11.4375C2.17188 11.4375 2.32812 11.3984 2.44531 11.2812L3.46094 10.3438V18.9375C3.46094 19.8359 4.16406 20.5 5.02344 20.5H19.4375C20.2969 20.5 21 19.8359 21 18.9375V10.3438L22.0156 11.2812C22.1328 11.3984 22.2891 11.4375 22.4453 11.4375C22.6406 11.4375 22.7969 11.3594 22.9141 11.2422L23.3438 10.7734C23.4219 10.6562 23.5 10.5391 23.5 10.3438C23.5 10.1875 23.3828 9.99219 23.2656 9.875ZM19.125 18.625H5.375V8.66406L12.25 2.49219L19.125 8.66406V18.625ZM19.125 6.16406L17.25 4.48438V3.625H19.125V6.16406ZM9.75 8.625V12.375C9.75 12.7266 10.0234 13 10.375 13H14.125C14.4375 13 14.75 12.7266 14.75 12.375V8.625C14.75 8.3125 14.4375 8 14.125 8H10.375C10.0234 8 9.75 8.3125 9.75 8.625Z\"\n fill=\"#F67736\"\n />\n </svg>\n );\n};\n","export const Lightbulbicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"11\"\n height=\"16\"\n viewBox=\"0 0 11 16\"\n fill=\"none\"\n >\n <path\n d=\"M5.15625 3.21875C3.60352 3.21875 2.34375 4.50781 2.34375 6.03125C2.34375 6.29492 2.54883 6.5 2.8125 6.5C3.04688 6.5 3.28125 6.29492 3.28125 6.03125C3.28125 5.00586 4.10156 4.15625 5.15625 4.15625C5.39062 4.15625 5.625 3.95117 5.625 3.6875C5.625 3.45312 5.39062 3.21875 5.15625 3.21875ZM2.8125 14.3516C2.8125 14.4395 2.8125 14.5273 2.87109 14.6152L3.60352 15.6699C3.69141 15.8164 3.83789 15.875 3.98438 15.875H6.29883C6.44531 15.875 6.5918 15.8164 6.67969 15.6699L7.41211 14.6152C7.44141 14.5273 7.4707 14.4395 7.4707 14.3516V13.0625H2.8125V14.3516ZM5.15625 0.875C2.13867 0.875 0 3.30664 0 6.03125C0 7.34961 0.46875 8.52148 1.25977 9.42969C1.75781 9.98633 2.51953 11.1582 2.7832 12.125H4.18945C4.18945 12.0078 4.18945 11.8613 4.13086 11.7148C3.98438 11.1875 3.48633 9.83984 2.31445 8.52148C1.72852 7.81836 1.40625 6.93945 1.40625 6.03125C1.37695 3.89258 3.13477 2.28125 5.15625 2.28125C7.20703 2.28125 8.90625 3.98047 8.90625 6.03125C8.90625 6.93945 8.55469 7.81836 7.96875 8.52148C6.82617 9.81055 6.29883 11.1875 6.15234 11.7148C6.09375 11.8613 6.09375 11.9785 6.09375 12.125H7.5C7.76367 11.1582 8.52539 9.98633 9.02344 9.42969C9.81445 8.52148 10.3125 7.34961 10.3125 6.03125C10.3125 3.18945 7.99805 0.875 5.15625 0.875Z\"\n fill=\"#F67736\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\nexport const Buildingorangeicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"21\"\n viewBox=\"0 0 18 21\"\n fill=\"none\"\n >\n <path\n d=\"M5 6.28125C5 6.55469 5.19531 6.75 5.46875 6.75H7.03125C7.26562 6.75 7.5 6.55469 7.5 6.28125V4.71875C7.5 4.48438 7.26562 4.25 7.03125 4.25H5.46875C5.19531 4.25 5 4.48438 5 4.71875V6.28125ZM10.4688 6.75H12.0312C12.2656 6.75 12.5 6.55469 12.5 6.28125V4.71875C12.5 4.48438 12.2656 4.25 12.0312 4.25H10.4688C10.1953 4.25 10 4.48438 10 4.71875V6.28125C10 6.55469 10.1953 6.75 10.4688 6.75ZM5.46875 10.5H7.03125C7.26562 10.5 7.5 10.3047 7.5 10.0312V8.46875C7.5 8.23438 7.26562 8 7.03125 8H5.46875C5.19531 8 5 8.23438 5 8.46875V10.0312C5 10.3047 5.19531 10.5 5.46875 10.5ZM10.4688 10.5H12.0312C12.2656 10.5 12.5 10.3047 12.5 10.0312V8.46875C12.5 8.23438 12.2656 8 12.0312 8H10.4688C10.1953 8 10 8.23438 10 8.46875V10.0312C10 10.3047 10.1953 10.5 10.4688 10.5ZM7.5 13.7812V12.2188C7.5 11.9844 7.26562 11.75 7.03125 11.75H5.46875C5.19531 11.75 5 11.9844 5 12.2188V13.7812C5 14.0547 5.19531 14.25 5.46875 14.25H7.03125C7.26562 14.25 7.5 14.0547 7.5 13.7812ZM10.4688 14.25H12.0312C12.2656 14.25 12.5 14.0547 12.5 13.7812V12.2188C12.5 11.9844 12.2656 11.75 12.0312 11.75H10.4688C10.1953 11.75 10 11.9844 10 12.2188V13.7812C10 14.0547 10.1953 14.25 10.4688 14.25ZM17.5 19.0938C17.5 18.8594 17.2656 18.625 17.0312 18.625H16.25V1.4375C16.25 0.929688 15.8203 0.5 15.3125 0.5H2.14844C1.64062 0.5 1.21094 0.929688 1.21094 1.4375V18.625H0.46875C0.195312 18.625 0 18.8594 0 19.0938V20.5H17.5V19.0938ZM3.08594 18.5859L3.125 2.375L14.375 2.41406V18.5859H10V15.9688C10 15.7344 9.76562 15.5 9.53125 15.5H7.96875C7.69531 15.5 7.5 15.7344 7.5 15.9688V18.5859H3.08594Z\"\n fill=\"#F67736\"\n />\n </svg>\n );\n};\n\n","import \"./RoofDescription.scss\";\nimport { useSelector } from \"react-redux\";\nimport { Houseicon } from \"../../components/icons/Houseicon\";\nimport { Arrowicon } from \"../../components/icons/Ðrrowicon\";\nimport { Lightbulbicon } from \"../../components/icons/Lightbulbicon\";\nimport { useState } from \"react\";\nimport { Buildingorangeicon } from \"../icons/Buildingorangeicon\";\n\nconst RoofDescription = () => {\n let address = useSelector((state) => state.Address.address);\n let checkedAddress = useSelector((state) => state.Address.checkedAddress);\n let [show, setShow] = useState(false);\n\n return Object.keys(address).length || Object.keys(checkedAddress).length ? (\n <div className=\"roof-description\">\n <div className=\"roof-description-section\">\n <div className=\"roof-select\">\n <div className=\"roof-select-title\">\n <h3>Velg Takflate</h3>\n <Buildingorangeicon />\n </div>\n <div className=\"roof-select-desc\">\n <p>Her kan du velge takflaten du ønsker solcellene montert pÃ¥</p>\n </div>\n </div>\n\n <div className=\"roof-address\">\n <div className=\"roof-address-title\">\n <h3>Adressen din</h3>\n <Houseicon />\n </div>\n <div className=\"roof-address-desc\">\n {Object.keys(address).length > 0 ? (\n address.text.split(\",\").map((name, index) => {\n return <p key={index}>{name}</p>;\n })\n ) : (\n <>\n <p>\n {checkedAddress.road} {checkedAddress.house_number}\n </p>\n <p>{checkedAddress.county}</p>\n </>\n )}\n </div>\n </div>\n <div className=\"roof-info\">\n <div className=\"roof-info-title\">\n <h3>Raske tips</h3>\n <button\n className={show ? \"rotate-button\" : \"\"}\n onClick={() => setShow((show = !show))}\n >\n <Arrowicon />\n </button>\n </div>\n <div className={`${show ? \"expanded\" : \"collapsed\"} roof-info-desc`}>\n <div>\n <p>\n <Lightbulbicon />\n </p>\n <p>\n \"Hvor mørkere rødfarge hvor mer egnet er taket ditt for\n solceller. Generelt egner alle tak mot øst, vest eller sør seg\n for solceller.\"\n </p>\n </div>\n <div>\n <p>\n <Lightbulbicon />\n </p>\n <p>\n \"PÃ¥ flate tak legger vi solcellene øst/vest for Ã¥ maksimere\n plass og produksjon.\"\n </p>\n </div>\n <div>\n <p>\n <Lightbulbicon />\n </p>\n <p>\n \"Den vanligste taktypen pÃ¥ skrÃ¥tak i Norge er dobbeltkrum\n takstein\".\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n ) : (\n \"\"\n );\n};\n\nexport default RoofDescription;\n","import OrderMap from \"../../components/OrderMap/OrderMap\";\nimport RoofColor from \"../../components/RoofColor/RoofColor\";\nimport RoofDescription from \"../../components/RoofDescription/RoofDescription\";\nimport Search from \"../../components/Search/Search\";\nimport \"./SearchResults.scss\";\nimport { motion } from \"framer-motion\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst SearchResults = () => {\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <>\n <OrderMap />\n <div className=\"map-section\">\n <Search />\n <RoofDescription />\n <RoofColor />\n </div>\n </>\n // </motion.div>\n );\n};\n\nexport default SearchResults;\n","export const Leftarrowicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"15\"\n height=\"13\"\n viewBox=\"0 0 15 13\"\n fill=\"none\"\n >\n <path\n d=\"M0.78125 6.1875C0.585938 6.38281 0.585938 6.65625 0.78125 6.85156L6.52344 12.6328C6.67969 12.8281 6.99219 12.8281 7.1875 12.6328L7.92969 11.8516C8.125 11.6562 8.125 11.3828 7.92969 11.1875L3.32031 6.5L7.92969 1.85156C8.125 1.65625 8.125 1.34375 7.92969 1.1875L7.1875 0.40625C6.99219 0.210938 6.67969 0.210938 6.52344 0.40625L0.78125 6.1875ZM7.03125 6.85156L12.7734 12.6328C12.9297 12.8281 13.2422 12.8281 13.4375 12.6328L14.1797 11.8516C14.375 11.6562 14.375 11.3828 14.1797 11.1875L9.57031 6.5L14.1797 1.85156C14.375 1.65625 14.375 1.34375 14.1797 1.1875L13.4375 0.40625C13.2422 0.210938 12.9297 0.210938 12.7734 0.40625L7.03125 6.1875C6.83594 6.38281 6.83594 6.65625 7.03125 6.85156Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","export const Closeicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n >\n <path\n d=\"M8.19385 6.5L12.4126 2.32031C12.647 2.08594 12.647 1.65625 12.4126 1.42188L11.436 0.445312C11.2017 0.210938 10.772 0.210938 10.5376 0.445312L6.35791 4.66406L2.13916 0.445312C1.90479 0.210938 1.4751 0.210938 1.24072 0.445312L0.26416 1.42188C0.0297852 1.65625 0.0297852 2.08594 0.26416 2.32031L4.48291 6.5L0.26416 10.7188C0.0297852 10.9531 0.0297852 11.3828 0.26416 11.6172L1.24072 12.5938C1.4751 12.8281 1.90479 12.8281 2.13916 12.5938L6.35791 8.375L10.5376 12.5938C10.772 12.8281 11.2017 12.8281 11.436 12.5938L12.4126 11.6172C12.647 11.3828 12.647 10.9531 12.4126 10.7188L8.19385 6.5Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = function (fn) {\n return NATIVE_BIND ? uncurryThisWithBind(fn) : function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThisRaw = require('../internals/function-uncurry-this-raw');\n\nvar toString = uncurryThisRaw({}.toString);\nvar stringSlice = uncurryThisRaw(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThisRaw = require('../internals/function-uncurry-this-raw');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThisRaw(fn);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.25.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.25.5/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","export default {\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};\n","/**\n * Static methods for react-tooltip\n */\nimport CONSTANT from '../constant';\n\nconst dispatchGlobalEvent = (eventName, opts) => {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n let event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true, opts);\n }\n\n window.dispatchEvent(event);\n};\n\nexport default function(target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, { target });\n };\n\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n target.rebuild = () => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n };\n\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n target.show = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, { target });\n };\n\n target.prototype.globalRebuild = function() {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n this.showTooltip(\n { currentTarget: hasTarget && event.detail.target },\n true\n );\n }\n };\n\n target.prototype.globalHide = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n this.hideTooltip(\n { currentTarget: hasTarget && event.detail.target },\n hasTarget\n );\n }\n };\n}\n","/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nexport const checkStatus = function(dataEventOff, e) {\n const { show } = this.state;\n const { id } = this.props;\n const isCapture = this.isCapture(e.currentTarget);\n const currentItem = e.currentTarget.getAttribute('currentItem');\n\n if (!isCapture) e.stopPropagation();\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nconst setUntargetItems = function(currentTarget, targetArray) {\n for (let i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nconst customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set(target, event, listener) {\n if (this.id in target) {\n const map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: { [event]: listener }\n });\n }\n },\n get(target, event) {\n const map = target[this.id];\n if (map !== undefined) {\n return map[event];\n }\n }\n};\n\nexport default function(target) {\n target.prototype.isCustomEvent = function(ele) {\n const { event } = this.state;\n return event || !!ele.getAttribute('data-event');\n };\n\n /* Bind listener for custom event */\n target.prototype.customBindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = ele.getAttribute('data-event') || event;\n const dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n\n dataEvent.split(' ').forEach(event => {\n ele.removeEventListener(event, customListeners.get(ele, event));\n const customListener = checkStatus.bind(this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(event => {\n ele.removeEventListener(event, this.hideTooltip);\n ele.addEventListener(event, this.hideTooltip, false);\n });\n }\n };\n\n /* Unbind listener for custom event */\n target.prototype.customUnbindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = event || ele.getAttribute('data-event');\n const dataEventOff = eventOff || ele.getAttribute('data-event-off');\n\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n}\n","/**\n * Util method to get effect\n */\nimport { checkStatus } from './customEvent';\n\nconst makeProxy = (e) => {\n const proxy = {};\n for (const key in e) {\n if (typeof e[key] === 'function') {\n proxy[key] = e[key].bind(e);\n } else {\n proxy[key] = e[key];\n }\n }\n return proxy;\n};\n\nconst bodyListener = function (callback, options, e) {\n const { respectEffect = false, customEvent = false } = options;\n const { id } = this.props;\n\n let tip = null;\n let forId;\n let target = e.target;\n let lastTarget;\n // walk up parent chain until tip is found\n // there is no match if parent visible area is matched by mouse position, so some corner cases might not work as expected\n while (tip === null && target !== null) {\n lastTarget = target;\n tip = target.getAttribute('data-tip') || null;\n forId = target.getAttribute('data-for') || null;\n target = target.parentElement;\n }\n\n target = lastTarget || e.target;\n\n if (this.isCustomEvent(target) && !customEvent) {\n return;\n }\n\n const isTargetBelongsToTooltip =\n (id == null && forId == null) || forId === id;\n\n if (\n tip != null &&\n (!respectEffect || this.getEffect(target) === 'float') &&\n isTargetBelongsToTooltip\n ) {\n const proxy = makeProxy(e);\n proxy.currentTarget = target;\n callback(proxy);\n }\n};\n\nconst findCustomEvents = (targetArray, dataAttribute) => {\n const events = {};\n targetArray.forEach((target) => {\n const event = target.getAttribute(dataAttribute);\n if (event) event.split(' ').forEach((event) => (events[event] = true));\n });\n\n return events;\n};\n\nconst getBody = () => document.getElementsByTagName('body')[0];\n\nexport default function (target) {\n target.prototype.isBodyMode = function () {\n return !!this.props.bodyMode;\n };\n\n target.prototype.bindBodyListener = function (targetArray) {\n const { event, eventOff, possibleCustomEvents, possibleCustomEventsOff } =\n this.state;\n const body = getBody();\n\n const customEvents = findCustomEvents(targetArray, 'data-event');\n const customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n\n if (event != null) customEvents[event] = true;\n if (eventOff != null) customEventsOff[eventOff] = true;\n possibleCustomEvents\n .split(' ')\n .forEach((event) => (customEvents[event] = true));\n possibleCustomEventsOff\n .split(' ')\n .forEach((event) => (customEventsOff[event] = true));\n\n this.unbindBodyListener(body);\n\n const listeners = (this.bodyModeListeners = {});\n if (event == null) {\n listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n respectEffect: true\n });\n listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n }\n\n for (const event in customEvents) {\n listeners[event] = bodyListener.bind(\n this,\n (e) => {\n const targetEventOff =\n e.currentTarget.getAttribute('data-event-off') || eventOff;\n checkStatus.call(this, targetEventOff, e);\n },\n { customEvent: true }\n );\n }\n for (const event in customEventsOff) {\n listeners[event] = bodyListener.bind(this, this.hideTooltip, {\n customEvent: true\n });\n }\n for (const event in listeners) {\n body.addEventListener(event, listeners[event]);\n }\n };\n\n target.prototype.unbindBodyListener = function (body) {\n body = body || getBody();\n\n const listeners = this.bodyModeListeners;\n for (const event in listeners) {\n body.removeEventListener(event, listeners[event]);\n }\n };\n}\n","/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nexport default function (e, target, node, place, desiredPlace, effect, offset) {\n const { width: tipWidth, height: tipHeight } = getDimensions(node);\n\n const { width: targetWidth, height: targetHeight } = getDimensions(target);\n\n const { mouseX, mouseY } = getCurrentOffset(e, target, effect);\n const defaultOffset = getDefaultPosition(\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n );\n const { extraOffsetX, extraOffsetY } = calculateOffset(offset);\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const { parentTop, parentLeft } = getParent(node);\n\n // Get the edge offset of the tooltip\n const getTipOffsetLeft = (place) => {\n const offsetX = defaultOffset[place].l;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetRight = (place) => {\n const offsetX = defaultOffset[place].r;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetTop = (place) => {\n const offsetY = defaultOffset[place].t;\n return mouseY + offsetY + extraOffsetY;\n };\n const getTipOffsetBottom = (place) => {\n const offsetY = defaultOffset[place].b;\n return mouseY + offsetY + extraOffsetY;\n };\n\n //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n const outsideLeft = (p) => getTipOffsetLeft(p) < 0;\n const outsideRight = (p) => getTipOffsetRight(p) > windowWidth;\n const outsideTop = (p) => getTipOffsetTop(p) < 0;\n const outsideBottom = (p) => getTipOffsetBottom(p) > windowHeight;\n\n // Check whether the tooltip with orientation p is completely inside the client window\n const outside = (p) =>\n outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n const inside = (p) => !outside(p);\n\n const placeIsInside = {\n top: inside('top'),\n bottom: inside('bottom'),\n left: inside('left'),\n right: inside('right')\n };\n\n function choose() {\n const allPlaces = desiredPlace\n .split(',')\n .concat(place, ['top', 'bottom', 'left', 'right']);\n for (const d of allPlaces) {\n if (placeIsInside[d]) return d;\n }\n // if nothing is inside, just use the old place.\n return place;\n }\n\n const chosen = choose();\n\n let isNewState = false;\n let newPlace;\n if (chosen && chosen !== place) {\n isNewState = true;\n newPlace = chosen;\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: { place: newPlace }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n}\n\nconst getDimensions = (node) => {\n const { height, width } = node.getBoundingClientRect();\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n};\n\n// Get current mouse offset\nconst getCurrentOffset = (e, currentTarget, effect) => {\n const boundingClientRect = currentTarget.getBoundingClientRect();\n const targetTop = boundingClientRect.top;\n const targetLeft = boundingClientRect.left;\n const { width: targetWidth, height: targetHeight } =\n getDimensions(currentTarget);\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nconst getDefaultPosition = (\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n) => {\n let top;\n let right;\n let bottom;\n let left;\n const disToMouse = 3;\n const triangleHeight = 2;\n const cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return { top, bottom, left, right };\n};\n\n// Consider additional offset into position calculation\nconst calculateOffset = (offset) => {\n let extraOffsetX = 0;\n let extraOffsetY = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n }\n for (const key in offset) {\n if (key === 'top') {\n extraOffsetY -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffsetY += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffsetX -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffsetX += parseInt(offset[key], 10);\n }\n }\n\n return { extraOffsetX, extraOffsetY };\n};\n\n// Get the offset of the parent elements\nconst getParent = (currentTarget) => {\n let currentParent = currentTarget;\n while (currentParent) {\n const computedStyle = window.getComputedStyle(currentParent);\n // transform and will-change: transform change the containing block\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_Block\n if (\n computedStyle.getPropertyValue('transform') !== 'none' ||\n computedStyle.getPropertyValue('will-change') === 'transform'\n )\n break;\n currentParent = currentParent.parentElement;\n }\n\n const parentTop =\n (currentParent && currentParent.getBoundingClientRect().top) || 0;\n const parentLeft =\n (currentParent && currentParent.getBoundingClientRect().left) || 0;\n\n return { parentTop, parentLeft };\n};\n","/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nimport React from 'react';\n\nexport default function TipContent(tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n const regexp = /<br\\s*\\/?>/;\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n }\n\n // Multiline tooltip content\n return tip.split(regexp).map((d, i) => {\n return (\n <span key={i} className=\"multi-line\">\n {d}\n </span>\n );\n });\n}\n","/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nexport function parseAria(props) {\n const ariaObj = {};\n Object.keys(props)\n .filter(prop => {\n // aria-xxx and role is acceptable\n return /(^aria-\\w+$|^role$)/.test(prop);\n })\n .forEach(prop => {\n ariaObj[prop] = props[prop];\n });\n\n return ariaObj;\n}\n","/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\n\nexport default function(nodeList) {\n const length = nodeList.length;\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n return new Array(length).fill().map(index => nodeList[index]);\n}\n","/**\n * Default pop-up style values (text color, background color).\n */\nconst defaultColors = {\n dark: {\n text: '#fff',\n background: '#222',\n border: 'transparent',\n arrow: '#222'\n },\n success: {\n text: '#fff',\n background: '#8DC572',\n border: 'transparent',\n arrow: '#8DC572'\n },\n warning: {\n text: '#fff',\n background: '#F0AD4E',\n border: 'transparent',\n arrow: '#F0AD4E'\n },\n error: {\n text: '#fff',\n background: '#BE6464',\n border: 'transparent',\n arrow: '#BE6464'\n },\n info: {\n text: '#fff',\n background: '#337AB7',\n border: 'transparent',\n arrow: '#337AB7'\n },\n light: {\n text: '#222',\n background: '#fff',\n border: 'transparent',\n arrow: '#fff'\n }\n};\n\nexport function getDefaultPopupColors(type) {\n return defaultColors[type] ? { ...defaultColors[type] } : undefined;\n}\n\nexport const DEFAULT_PADDING = '8px 21px';\n\nexport const DEFAULT_RADIUS = {\n tooltip: 3,\n arrow: 0\n};\n","import {\n getDefaultPopupColors,\n DEFAULT_PADDING,\n DEFAULT_RADIUS\n} from './defaultStyles';\n\n/**\n * Generates the specific tooltip style for use on render.\n */\nexport function generateTooltipStyle(\n uuid,\n customColors,\n type,\n hasBorder,\n padding,\n radius\n) {\n return generateStyle(\n uuid,\n getPopupColors(customColors, type, hasBorder),\n padding,\n radius\n );\n}\n\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\nfunction generateStyle(\n uuid,\n colors,\n padding = DEFAULT_PADDING,\n radius = DEFAULT_RADIUS\n) {\n const textColor = colors.text;\n const backgroundColor = colors.background;\n const borderColor = colors.border;\n const arrowColor = colors.arrow;\n const arrowRadius = radius.arrow;\n const tooltipRadius = radius.tooltip;\n\n return `\n \t.${uuid} {\n\t color: ${textColor};\n\t background: ${backgroundColor};\n\t border: 1px solid ${borderColor};\n\t border-radius: ${tooltipRadius}px;\n\t padding: ${padding};\n \t}\n\n \t.${uuid}.place-top {\n margin-top: -10px;\n }\n .${uuid}.place-top::before {\n content: \"\";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 18px;\n height: 10px;\n }\n .${uuid}.place-top::after {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ${arrowRadius}px;\n border: 1px solid ${borderColor};\n background-color: ${arrowColor};\n z-index: -2;\n bottom: -6px;\n left: 50%;\n margin-left: -8px;\n transform: rotate(135deg);\n }\n\n .${uuid}.place-bottom {\n margin-top: 10px;\n }\n .${uuid}.place-bottom::before {\n content: \"\";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 18px;\n height: 10px;\n }\n .${uuid}.place-bottom::after {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ${arrowRadius}px;\n border: 1px solid ${borderColor};\n background-color: ${arrowColor};\n z-index: -2;\n top: -6px;\n left: 50%;\n margin-left: -8px;\n transform: rotate(45deg);\n }\n\n .${uuid}.place-left {\n margin-left: -10px;\n }\n .${uuid}.place-left::before {\n content: \"\";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 10px;\n height: 18px;\n }\n .${uuid}.place-left::after {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ${arrowRadius}px;\n border: 1px solid ${borderColor};\n background-color: ${arrowColor};\n z-index: -2;\n right: -6px;\n top: 50%;\n margin-top: -6px;\n transform: rotate(45deg);\n }\n\n .${uuid}.place-right {\n margin-left: 10px;\n }\n .${uuid}.place-right::before {\n content: \"\";\n background-color: inherit;\n position: absolute;\n z-index: -1;\n width: 10px;\n height: 18px;\n }\n .${uuid}.place-right::after {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 10px;\n border-top-right-radius: ${arrowRadius}px;\n border: 1px solid ${borderColor};\n background-color: ${arrowColor};\n z-index: -2;\n left: -6px;\n top: 50%;\n margin-top: -6px;\n transform: rotate(-135deg);\n }\n `;\n}\n\nfunction getPopupColors(customColors, type, hasBorder) {\n const textColor = customColors.text;\n const backgroundColor = customColors.background;\n const borderColor = customColors.border;\n const arrowColor = customColors.arrow\n ? customColors.arrow\n : customColors.background;\n\n const colors = getDefaultPopupColors(type);\n\n if (textColor) {\n colors.text = textColor;\n }\n\n if (backgroundColor) {\n colors.background = backgroundColor;\n }\n\n if (hasBorder) {\n if (borderColor) {\n colors.border = borderColor;\n } else {\n colors.border = type === 'light' ? 'black' : 'white';\n }\n }\n\n if (arrowColor) {\n colors.arrow = arrowColor;\n }\n\n return colors;\n}\n","/* eslint-disable no-unused-vars, dot-notation */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n/* Decorators */\nimport staticMethods from './decorators/staticMethods';\nimport windowListener from './decorators/windowListener';\nimport customEvent from './decorators/customEvent';\nimport isCapture from './decorators/isCapture';\nimport getEffect from './decorators/getEffect';\nimport bodyMode from './decorators/bodyMode';\nimport trackRemoval from './decorators/trackRemoval';\n\n/* Utils */\nimport getPosition from './utils/getPosition';\nimport getTipContent from './utils/getTipContent';\nimport { parseAria } from './utils/aria';\nimport nodeListToArray from './utils/nodeListToArray';\nimport { generateUUID } from './utils/uuid';\n\n/* CSS */\nimport baseCss from './index.scss';\nimport { generateTooltipStyle } from './decorators/styler';\n\n/* Polyfill */\nimport 'core-js/modules/es.array.find';\n\n@staticMethods\n@windowListener\n@customEvent\n@isCapture\n@getEffect\n@bodyMode\n@trackRemoval\nclass ReactTooltip extends React.Component {\n static get propTypes() {\n return {\n uuid: PropTypes.string,\n children: PropTypes.any,\n place: PropTypes.string,\n type: PropTypes.string,\n effect: PropTypes.string,\n offset: PropTypes.object,\n padding: PropTypes.string,\n multiline: PropTypes.bool,\n border: PropTypes.bool,\n borderClass: PropTypes.string,\n textColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n arrowColor: PropTypes.string,\n arrowRadius: PropTypes.string,\n tooltipRadius: PropTypes.string,\n insecure: PropTypes.bool,\n class: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string,\n html: PropTypes.bool,\n delayHide: PropTypes.number,\n delayUpdate: PropTypes.number,\n delayShow: PropTypes.number,\n event: PropTypes.string,\n eventOff: PropTypes.string,\n isCapture: PropTypes.bool,\n globalEventOff: PropTypes.string,\n getContent: PropTypes.any,\n afterShow: PropTypes.func,\n afterHide: PropTypes.func,\n overridePosition: PropTypes.func,\n disable: PropTypes.bool,\n scrollHide: PropTypes.bool,\n resizeHide: PropTypes.bool,\n wrapper: PropTypes.string,\n bodyMode: PropTypes.bool,\n possibleCustomEvents: PropTypes.string,\n possibleCustomEventsOff: PropTypes.string,\n clickable: PropTypes.bool,\n disableInternalStyle: PropTypes.bool\n };\n }\n\n static defaultProps = {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n };\n\n static supportedWrappers = ['div', 'span'];\n\n static displayName = 'ReactTooltip';\n\n constructor(props) {\n super(props);\n\n this.state = {\n uuid: props.uuid || generateUUID(),\n place: props.place || 'top', // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: props.type || 'dark', // Color theme of tooltip\n effect: props.effect || 'float', // float or fixed\n show: false,\n border: false,\n borderClass: 'border',\n customColors: {},\n customRadius: {},\n offset: {},\n padding: props.padding,\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null, // Current mouse event\n currentTarget: null, // Current target of mouse event\n ariaProps: parseAria(props), // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n possibleCustomEvents: props.possibleCustomEvents || '',\n possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n originTooltip: null,\n isMultiline: false\n };\n\n this.bind([\n 'showTooltip',\n 'updateTooltip',\n 'hideTooltip',\n 'hideTooltipOnScroll',\n 'getTooltipContent',\n 'globalRebuild',\n 'globalShow',\n 'globalHide',\n 'onWindowResize',\n 'mouseOnToolTip'\n ]);\n\n this.mount = true;\n this.delayShowLoop = null;\n this.delayHideLoop = null;\n this.delayReshow = null;\n this.intervalUpdateContent = null;\n }\n\n /**\n * For unify the bind and unbind listener\n */\n bind(methodArray) {\n methodArray.forEach((method) => {\n this[method] = this[method].bind(this);\n });\n }\n\n componentDidMount() {\n const { insecure, resizeHide, disableInternalStyle } = this.props;\n this.mount = true;\n\n this.bindListener(); // Bind listener for tooltip\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n\n if (!disableInternalStyle) {\n this.injectStyles(); // Inject styles for each DOM root having tooltip.\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { ariaProps } = prevState;\n const newAriaProps = parseAria(nextProps);\n const isChanged = Object.keys(newAriaProps).some((props) => {\n return newAriaProps[props] !== ariaProps[props];\n });\n if (!isChanged) {\n return null;\n }\n return {\n ...prevState,\n ariaProps: newAriaProps\n };\n }\n\n componentWillUnmount() {\n this.mount = false;\n\n this.clearTimer();\n\n this.unbindListener();\n this.removeScrollListener(this.state.currentTarget);\n this.unbindWindowEvents();\n }\n\n /* Look for the closest DOM root having tooltip and inject styles. */\n injectStyles() {\n const { tooltipRef } = this;\n if (!tooltipRef) {\n return;\n }\n\n let parentNode = tooltipRef.parentNode;\n while (parentNode.parentNode) {\n parentNode = parentNode.parentNode;\n }\n\n let domRoot;\n\n switch (parentNode.constructor.name) {\n case 'Document':\n case 'HTMLDocument':\n case undefined:\n domRoot = parentNode.head;\n break;\n case 'ShadowRoot':\n default:\n domRoot = parentNode;\n break;\n }\n\n // Prevent styles duplication.\n if (!domRoot.querySelector('style[data-react-tooltip]')) {\n const style = document.createElement('style');\n style.textContent = baseCss;\n style.setAttribute('data-react-tooltip', 'true');\n\n domRoot.appendChild(style);\n }\n }\n\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n mouseOnToolTip() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n return this.tooltipRef.matches(':hover');\n }\n return false;\n }\n\n /**\n * Pick out corresponded target elements\n */\n getTargetArray(id) {\n let targetArray = [];\n let selector;\n if (!id) {\n selector = '[data-tip]:not([data-for])';\n } else {\n const escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n selector = `[data-tip][data-for=\"${escaped}\"]`;\n }\n\n // Scan document for shadow DOM elements\n nodeListToArray(document.getElementsByTagName('*'))\n .filter((element) => element.shadowRoot)\n .forEach((element) => {\n targetArray = targetArray.concat(\n nodeListToArray(element.shadowRoot.querySelectorAll(selector))\n );\n });\n return targetArray.concat(\n nodeListToArray(document.querySelectorAll(selector))\n );\n }\n\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n bindListener() {\n const { id, globalEventOff, isCapture } = this.props;\n const targetArray = this.getTargetArray(id);\n\n targetArray.forEach((target) => {\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) {\n this.customUnbindListener(target);\n }\n });\n\n if (this.isBodyMode()) {\n this.bindBodyListener(targetArray);\n } else {\n targetArray.forEach((target) => {\n const isCaptureMode = this.isCapture(target);\n const effect = this.getEffect(target);\n if (this.isCustomEvent(target)) {\n this.customBindListener(target);\n return;\n }\n\n target.addEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.addEventListener('focus', this.showTooltip, isCaptureMode);\n if (effect === 'float') {\n target.addEventListener(\n 'mousemove',\n this.updateTooltip,\n isCaptureMode\n );\n }\n target.addEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n target.addEventListener('blur', this.hideTooltip, isCaptureMode);\n });\n }\n\n // Global event to hide tooltip\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n }\n\n // Track removal of targetArray elements from DOM\n this.bindRemovalTracker();\n }\n\n /**\n * Unbind listeners on target elements\n */\n unbindListener() {\n const { id, globalEventOff } = this.props;\n if (this.isBodyMode()) {\n this.unbindBodyListener();\n } else {\n const targetArray = this.getTargetArray(id);\n targetArray.forEach((target) => {\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) this.customUnbindListener(target);\n });\n }\n\n if (globalEventOff)\n window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n unbindBasicListener(target) {\n const isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n\n getTooltipContent() {\n const { getContent, children } = this.props;\n\n // Generate tooltip content\n let content;\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return getTipContent(\n this.state.originTooltip,\n children,\n content,\n this.state.isMultiline\n );\n }\n\n isEmptyTip(placeholder) {\n return (\n (typeof placeholder === 'string' && placeholder === '') ||\n placeholder === null\n );\n }\n\n /**\n * When mouse enter, show the tooltip\n */\n showTooltip(e, isGlobalCall) {\n if (!this.tooltipRef) {\n return;\n }\n\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some((ele) => ele === e.currentTarget);\n if (!isMyElement) return;\n }\n // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n const { multiline, getContent } = this.props;\n const originTooltip = e.currentTarget.getAttribute('data-tip');\n const isMultiline =\n e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n const switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n // if it needs to skip adding hide listener to scroll\n let scrollHide = true;\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n }\n\n // adding aria-describedby to target to make tooltips read by screen readers\n if (e && e.currentTarget && e.currentTarget.setAttribute) {\n e.currentTarget.setAttribute(\n 'aria-describedby',\n this.props.id || this.state.uuid\n );\n }\n\n // Make sure the correct place is set\n const desiredPlace =\n e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n const effect =\n (switchToSolid && 'solid') || this.getEffect(e.currentTarget);\n const offset =\n e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n const result = getPosition(\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace.split(',')[0],\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n }\n\n const place = result.isNewState\n ? result.newState.place\n : desiredPlace.split(',')[0];\n\n // To prevent previously created timers from triggering\n this.clearTimer();\n\n const target = e.currentTarget;\n\n const reshowDelay = this.state.show\n ? target.getAttribute('data-delay-update') || this.props.delayUpdate\n : 0;\n\n const self = this;\n\n const updateState = function updateState() {\n self.setState(\n {\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n customColors: {\n text:\n target.getAttribute('data-text-color') ||\n self.props.textColor ||\n null,\n background:\n target.getAttribute('data-background-color') ||\n self.props.backgroundColor ||\n null,\n border:\n target.getAttribute('data-border-color') ||\n self.props.borderColor ||\n null,\n arrow:\n target.getAttribute('data-arrow-color') ||\n self.props.arrowColor ||\n null\n },\n customRadius: {\n tooltip:\n target.getAttribute('data-tooltip-radius') ||\n self.props.tooltipRadius ||\n '3',\n arrow:\n target.getAttribute('data-arrow-radius') ||\n self.props.arrowRadius ||\n '0'\n },\n effect: effect,\n offset: offset,\n padding: target.getAttribute('data-padding') || self.props.padding,\n html:\n (target.getAttribute('data-html')\n ? target.getAttribute('data-html') === 'true'\n : self.props.html) || false,\n delayShow:\n target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide:\n target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate:\n target.getAttribute('data-delay-update') ||\n self.props.delayUpdate ||\n 0,\n border:\n (target.getAttribute('data-border')\n ? target.getAttribute('data-border') === 'true'\n : self.props.border) || false,\n borderClass:\n target.getAttribute('data-border-class') ||\n self.props.borderClass ||\n 'border',\n extraClass:\n target.getAttribute('data-class') ||\n self.props.class ||\n self.props.className ||\n '',\n disable:\n (target.getAttribute('data-tip-disable')\n ? target.getAttribute('data-tip-disable') === 'true'\n : self.props.disable) || false,\n currentTarget: target\n },\n () => {\n if (scrollHide) {\n self.addScrollListener(self.state.currentTarget);\n }\n\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(() => {\n if (self.mount) {\n const { getContent } = self.props;\n const placeholder = getTipContent(\n originTooltip,\n '',\n getContent[0](),\n isMultiline\n );\n const isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({ isEmptyTip });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n }\n );\n };\n\n // If there is no delay call immediately, don't allow events to get in first.\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n\n /**\n * When mouse hover, update tool tip\n */\n updateTooltip(e) {\n const { delayShow, disable } = this.state;\n const { afterShow, disable: disableProp } = this.props;\n const placeholder = this.getTooltipContent();\n const eventTarget = e.currentTarget || e.target;\n\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n return;\n }\n\n // if the tooltip is empty, disable the tooltip\n if (this.isEmptyTip(placeholder) || disable || disableProp) {\n return;\n }\n\n const delayTime = !this.state.show ? parseInt(delayShow, 10) : 0;\n\n const updateState = () => {\n if (\n (Array.isArray(placeholder) && placeholder.length > 0) ||\n placeholder\n ) {\n const isInvisible = !this.state.show;\n this.setState(\n {\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n },\n () => {\n this.updatePosition(() => {\n if (isInvisible && afterShow) {\n afterShow(e);\n }\n });\n }\n );\n }\n };\n\n if (this.delayShowLoop) {\n clearTimeout(this.delayShowLoop);\n }\n if (delayTime) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n this.delayShowLoop = null;\n updateState();\n }\n }\n\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n listenForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n removeListenerForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n /**\n * When mouse leave, hide tooltip\n */\n hideTooltip(e, hasTarget, options = { isScroll: false }) {\n const { disable } = this.state;\n const { isScroll } = options;\n const delayHide = isScroll ? 0 : this.state.delayHide;\n const { afterHide, disable: disableProp } = this.props;\n const placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable || disableProp) return; // if the tooltip is empty, disable the tooltip\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some((ele) => ele === e.currentTarget);\n if (!isMyElement || !this.state.show) return;\n }\n\n // clean up aria-describedby when hiding tooltip\n if (e && e.currentTarget && e.currentTarget.removeAttribute) {\n e.currentTarget.removeAttribute('aria-describedby');\n }\n\n const resetState = () => {\n const isVisible = this.state.show;\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n this.listenForTooltipExit();\n return;\n }\n\n this.removeListenerForTooltipExit();\n\n this.setState({ show: false }, () => {\n this.removeScrollListener(this.state.currentTarget);\n if (isVisible && afterHide) {\n afterHide(e);\n }\n });\n };\n\n this.clearTimer();\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n\n /**\n * When scroll, hide tooltip\n */\n hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, { isScroll: true });\n }\n\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n addScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n\n removeScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.removeEventListener(\n 'scroll',\n this.hideTooltipOnScroll,\n isCaptureMode\n );\n }\n\n // Calculation the position\n updatePosition(callbackAfter) {\n const { currentEvent, currentTarget, place, desiredPlace, effect, offset } =\n this.state;\n const node = this.tooltipRef;\n const result = getPosition(\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, () => {\n this.updatePosition(callbackAfter);\n });\n }\n\n if (callbackAfter && typeof callbackAfter === 'function') {\n callbackAfter();\n }\n\n // Set tooltip position\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n\n /**\n * CLear all kinds of timeout of interval\n */\n clearTimer() {\n if (this.delayShowLoop) {\n clearTimeout(this.delayShowLoop);\n this.delayShowLoop = null;\n }\n if (this.delayHideLoop) {\n clearTimeout(this.delayHideLoop);\n this.delayHideLoop = null;\n }\n if (this.delayReshow) {\n clearTimeout(this.delayReshow);\n this.delayReshow = null;\n }\n if (this.intervalUpdateContent) {\n clearInterval(this.intervalUpdateContent);\n this.intervalUpdateContent = null;\n }\n }\n\n hasCustomColors() {\n return Boolean(\n Object.keys(this.state.customColors).find(\n (color) => color !== 'border' && this.state.customColors[color]\n ) ||\n (this.state.border && this.state.customColors['border'])\n );\n }\n\n render() {\n const { extraClass, html, ariaProps, disable, uuid } = this.state;\n const content = this.getTooltipContent();\n const isEmptyTip = this.isEmptyTip(content);\n const style = this.props.disableInternalStyle\n ? ''\n : generateTooltipStyle(\n this.state.uuid,\n this.state.customColors,\n this.state.type,\n this.state.border,\n this.state.padding,\n this.state.customRadius\n );\n\n const tooltipClass =\n '__react_component_tooltip' +\n ` ${this.state.uuid}` +\n (this.state.show && !disable && !isEmptyTip ? ' show' : '') +\n (this.state.border ? ' ' + this.state.borderClass : '') +\n ` place-${this.state.place}` + // top, bottom, left, right\n ` type-${this.hasCustomColors() ? 'custom' : this.state.type}` + // dark, success, warning, error, info, light, custom\n (this.props.delayUpdate ? ' allow_hover' : '') +\n (this.props.clickable ? ' allow_click' : '');\n\n let Wrapper = this.props.wrapper;\n\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n const wrapperClassName = [tooltipClass, extraClass]\n .filter(Boolean)\n .join(' ');\n\n if (html) {\n const htmlContent = `${content}${\n style ? `\\n<style aria-hidden=\"true\">${style}</style>` : ''\n }`;\n\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id || uuid}\n ref={(ref) => (this.tooltipRef = ref)}\n {...ariaProps}\n data-id=\"tooltip\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n );\n } else {\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id || uuid}\n {...ariaProps}\n ref={(ref) => (this.tooltipRef = ref)}\n data-id=\"tooltip\"\n >\n {style && (\n <style\n dangerouslySetInnerHTML={{ __html: style }}\n aria-hidden=\"true\"\n />\n )}\n {content}\n </Wrapper>\n );\n }\n }\n}\n\nexport default ReactTooltip;\n","/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nconst getMutationObserverClass = () => {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n );\n};\n\nexport default function(target) {\n target.prototype.bindRemovalTracker = function() {\n const MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n const observer = new MutationObserver(mutations => {\n for (let m1 = 0; m1 < mutations.length; m1++) {\n const mutation = mutations[m1];\n for (let m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n const element = mutation.removedNodes[m2];\n if (element === this.state.currentTarget) {\n this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function() {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n","/**\n * Events that should be bound to the window\n */\nimport CONSTANT from '../constant';\n\nexport default function(target) {\n target.prototype.bindWindowEvents = function(resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false);\n\n // ReactTooltip.rebuild\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false);\n\n // ReactTooltip.show\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false);\n\n // Resize\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function() {\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n\n /**\n * invoked by resize event of window\n */\n target.prototype.onWindowResize = function() {\n if (!this.mount) return;\n this.hideTooltip();\n };\n}\n","/**\n * Util method to judge if it should follow capture model\n */\n\nexport default function(target) {\n target.prototype.isCapture = function(currentTarget) {\n return (\n (currentTarget &&\n currentTarget.getAttribute('data-iscapture') === 'true') ||\n this.props.isCapture ||\n false\n );\n };\n}\n","/**\n * Util method to get effect\n */\n\nexport default function(target) {\n target.prototype.getEffect = function(currentTarget) {\n const dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n}\n","import { v4 as uuid } from 'uuid';\n\nexport function generateUUID() {\n return 't' + uuid();\n}\n","import ReactTooltip from \"react-tooltip\";\nimport \"./TooltipComponent.scss\";\n\nexport const TooltipComponentBack = () => {\n return (\n <ReactTooltip\n id=\"main\"\n place=\"bottom\"\n effect=\"solid\"\n multiline={true}\n className=\"tooltip\"\n />\n );\n};\n\nexport const TooltipComponentClose = () => {\n return (\n <ReactTooltip\n id=\"mains\"\n place=\"bottom\"\n effect=\"solid\"\n multiline={true}\n className=\"tooltip\"\n />\n );\n};\n\nexport const TooltipComponentForward = () => {\n return (\n <ReactTooltip\n id=\"go-to-step2\"\n place=\"bottom\"\n effect=\"solid\"\n multiline={true}\n className=\"tooltip\"\n />\n );\n};\n","import \"./RoofTypes.scss\";\nimport { Leftarrowicon } from \"../../components/icons/Leftarrowicon\";\nimport { Closeicon } from \"../../components/icons/Closeicon\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setShow } from \"../../store/Show/action\";\nimport {\n getRoofInfo,\n getRoofTypes,\n setRoofInfo,\n} from \"../../store/Roof/action\";\nimport { useNavigate } from \"react-router\";\nimport {\n TooltipComponentBack,\n TooltipComponentForward,\n} from \"../TooltipComponent/TooltipComponent\";\nimport { TooltipComponentClose } from \"../TooltipComponent/TooltipComponent\";\nimport { setFinalAddress } from \"../../store/Address/action\";\nimport { setOrderRoofType, setRoofInformation } from \"../../store/Order/action\";\nimport { useState } from \"react\";\nimport { useEffect } from \"react\";\n\nconst RoofTypes = () => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const roofTypes = useSelector((state) => state.Roof.roofTypes);\n const checkedAddress = useSelector((state) => state.Address.checkedAddress);\n const partnerId = useSelector((state) => state.Order.partnerId);\n const [newRoofTypes, setNewRoofTypes] = useState();\n const [roofId, setRoofId] = useState(0);\n const [checkeAddress, setCheckeAddress] = useState({});\n const [newLatlng, setNewLatlng] = useState({});\n const roofName = window.sessionStorage.getItem(\"roofName\");\n const roofid = JSON.parse(window.sessionStorage.getItem(\"roofID\"));\n const latlng = JSON.parse(window.sessionStorage.getItem(\"latlng\"));\n useEffect(() => {\n dispatch(getRoofTypes());\n const chAddress = JSON.parse(\n window.sessionStorage.getItem(\"checkedAddress\")\n );\n if (roofid !== null) {\n setRoofId(roofid);\n }\n if (chAddress !== null) {\n setCheckeAddress(chAddress);\n }\n if (latlng !== null) {\n setNewLatlng(latlng);\n }\n }, []);\n\n useEffect(() => {\n let newTypes;\n if (roofTypes.length > 0) {\n if (checkeAddress !== undefined && checkeAddress.Helning > 10) {\n newTypes = roofTypes.filter((e) => e.id !== 2 && e.id !== 9);\n let oneType = newTypes[0];\n newTypes[0] = newTypes[1];\n newTypes[1] = newTypes[2];\n newTypes[2] = oneType;\n setNewRoofTypes(newTypes);\n setCheckeAddress(checkeAddress);\n } else if (checkedAddress !== undefined && checkedAddress.Helning > 10) {\n newTypes = roofTypes.filter((e) => e.id !== 2 && e.id !== 9);\n let oneType = newTypes[0];\n newTypes[0] = newTypes[1];\n newTypes[1] = newTypes[2];\n newTypes[2] = oneType;\n setNewRoofTypes(newTypes);\n setCheckeAddress(checkedAddress);\n } else {\n newTypes = roofTypes.filter((e) => e.id === 2 || e.id === 9);\n setNewRoofTypes(newTypes);\n }\n }\n }, [roofTypes]);\n\n const sendRoofInfo = (id, name) => {\n dispatch(setOrderRoofType(name));\n dispatch(setShow(\"step2\"));\n let newAdress = {\n ...checkeAddress,\n typetak: id,\n lat: newLatlng.lat,\n lng: newLatlng.lng,\n partnerId: partnerId,\n };\n\n if (id !== 2 && id !== 9) {\n if (checkeAddress.Helning < 10) {\n let newAdress1 = {\n ...newAdress,\n produkttype: 84,\n };\n setCheckeAddress(newAdress1);\n dispatch(getRoofInfo(newAdress1));\n dispatch(setRoofInformation(newAdress1));\n } else if (checkeAddress.Helning >= 10) {\n let newAdress2 = { ...newAdress, produkttype: 82 };\n setCheckeAddress(newAdress2);\n dispatch(getRoofInfo(newAdress2));\n dispatch(setRoofInformation(newAdress2));\n }\n } else {\n let newAdress3 = {\n ...newAdress,\n produkttype: 83,\n };\n setCheckeAddress(newAdress3);\n dispatch(getRoofInfo(newAdress3));\n dispatch(setRoofInformation(newAdress3));\n }\n\n dispatch(setFinalAddress(newAdress));\n };\n\n return (\n <div className=\"roof-types-section\">\n <div className=\"roof-types-header\">\n <div>\n <button\n data-for=\"main\"\n data-tip=\"Hvilket taktek ke har du?\"\n onClick={() => {\n dispatch(setShow(\"step1\"));\n dispatch(setRoofInfo(\"\"));\n navigate(\"/search\");\n }}>\n <Leftarrowicon />\n </button>\n <span>Hvilket taktekke har du?</span>\n <TooltipComponentBack />\n </div>\n <div>\n <span>Trinn 1 av 3</span>\n </div>\n\n <div>\n {roofName !== \"null\" ? (\n <button\n className=\"rigth-arrow\"\n data-for=\"go-to-step2\"\n data-tip=\"GÃ¥ til trinn 2\"\n onClick={() => {\n let id = window.sessionStorage.getItem(\"roofID\");\n sendRoofInfo(id, roofName);\n }}>\n <Leftarrowicon />\n </button>\n ) : null}\n <TooltipComponentForward />\n <button\n data-for=\"mains\"\n data-tip=\"Avbryt\"\n onClick={() => {\n navigate(\"/\");\n dispatch(setShow(\"step1\"));\n dispatch(setRoofInfo(\"\"));\n }}>\n <Closeicon />\n </button>\n <span>Avbryt</span>\n <TooltipComponentClose />\n </div>\n </div>\n <div className=\"roof-types-container\">\n {newRoofTypes !== undefined\n ? newRoofTypes.map((roof, index) => {\n return (\n <div\n key={roof.id}\n className={\n \"each-roof-type \" + (roofId === roof.id ? \"grey-roof\" : \"\")\n }>\n <img\n className={roofId === roof.id ? \"img-grey\" : \"\"}\n src={roof.imgsrc}\n alt={roof.name}\n onClick={() => {\n sendRoofInfo(roof.id, roof.name);\n setRoofId(roof.id);\n window.sessionStorage.setItem(\"roofID\", roof.id);\n window.sessionStorage.setItem(\"roofName\", roof.name);\n }}\n />\n <h3>{roof.name}</h3>\n </div>\n );\n })\n : \"\"}\n </div>\n </div>\n );\n};\n\nexport default RoofTypes;\n","export const Arrowdownicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"19\"\n height=\"11\"\n viewBox=\"0 0 19 11\"\n fill=\"none\"\n >\n <path\n d=\"M1.81641 0C0.761719 0 0.234375 1.28906 0.996094 2.05078L8.49609 9.55078C8.96484 10.0195 9.72656 10.0195 10.1953 9.55078L17.6953 2.05078C18.457 1.28906 17.9297 0 16.875 0H1.81641Z\"\n fill=\"#5F6368\"\n />\n </svg>\n );\n};\n","export function getRoofCalculation(finalRoof) {\n const baseSupport = 7500;\n let kwpCount = finalRoof?.kwp / 1000;\n let kwpSupport = kwpCount > 20 ? 40000 : kwpCount * 1250; //per kwp enova support\n let enova = baseSupport + kwpSupport;\n if (enova > 32500) { //original calculations: finalRoof.pris * 1.25 * 0.35, capping enova support at 35% of sale price\n enova = 32500;\n }\n let netP = finalRoof?.pris * 1.25 - enova;\n let lcoeC = netP / (finalRoof?.kwtAar * 30 * 0.925);\n\n return {\n lcoeC,\n enova,\n netP, \n };\n}\n","import _isObject from \"lodash/isObject\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isValidElement } from 'react';\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nvar SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style', 'target', 'type', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'points', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture']; // Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\nexport var filterProps = function filterProps(props, includeEvents, isSvg) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n // viewBox only exist in <svg />\n if (SVGElementPropKeys.includes(key) || isSvg && SVGContainerPropKeys.includes(key) || includeEvents && EventKeys.includes(key)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\n\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!_isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, true), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n version: \"1.1\"\n }), /*#__PURE__*/React.createElement(\"title\", null, props.title), /*#__PURE__*/React.createElement(\"desc\", null, props.desc), children);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n var layerClass = classNames('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true), {\n ref: ref\n }), children);\n});","export default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n requestAnimationFrame(shouldUpdate);\n }\n };\n\n requestAnimationFrame(shouldUpdate);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n\n var handleChange = function handleChange() {\n return null;\n };\n\n var shouldStop = false;\n\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n\n var styles = _style;\n\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n\n if (typeof _style === 'function') {\n _style();\n }\n };\n\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n/*\n * @description: convert camel case to dash case\n * string => string\n */\n\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\n\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, value);\n }\n\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n};\n/*\n * @description: log the value of a varible\n * string => any => any\n */\n\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\n\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\n\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\n/*\n * @description: add compatible prefix to style\n * object => object\n */\n\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\n\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\n\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\n\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\n\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n}; // calculate cubic-bezier using Newton's method\n\n\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n default:\n {\n var easing = args[0].split('(');\n\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + 'oneOf \\'linear\\', \\'ease\\', \\'ease-in\\', \\'ease-out\\', ' + '\\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', instead received %s', args);\n }\n }\n }\n }\n\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n } else if (value < 0) {\n return 0;\n }\n\n return value;\n };\n\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n\n x = rangeValue(x - evalT / derVal);\n }\n\n return curveY(x);\n };\n\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n\n return [newX, newV];\n };\n\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var easing = args[0];\n\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n\n case 'spring':\n return configSpring();\n\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n\n warn(false, '[configEasing]: first argument should be one of \\'ease\\', \\'ease-in\\', ' + '\\'ease-out\\', \\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', \\'linear\\' and \\'spring\\', instead received %s', args);\n }\n }\n\n if (typeof easing === 'function') {\n return easing;\n }\n\n warn(false, '[configEasing]: first argument type should be function or ' + 'string, instead received %s', args);\n return null;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getIntersectionKeys, mapObject } from './util';\n\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\n\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\n\n\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n\n return val;\n }, preVals);\n\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n\n return val;\n }, preVals);\n }\n\n return calStepperVals(easing, nextStepVals, steps - 1);\n}; // configure update function\n\n\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n\n var update = function update() {\n return null;\n };\n\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n }; // stepper timing function like spring\n\n\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n\n if (!shouldStopAnimation()) {\n cafId = requestAnimationFrame(update);\n }\n }; // t => val timing function like cubic-bezier\n\n\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n\n if (t < 1) {\n cafId = requestAnimationFrame(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n\n update = easing.isStepper ? stepperUpdate : timingUpdate; // return start animation method\n\n return function () {\n requestAnimationFrame(update); // return stop animation method\n\n return function () {\n cancelAnimationFrame(cafId);\n };\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\n\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n\n var _super = _createSuper(Animate);\n\n function Animate(props, context) {\n var _this;\n\n _classCallCheck(this, Animate);\n\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n\n if (!isActive) {\n _this.state = {\n style: {}\n }; // if children is a function and animation is not active, set style to 'to'\n\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n\n return _possibleConstructorReturn(_this);\n }\n\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n\n return _this;\n }\n\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n\n if (!isActive || !canBegin) {\n return;\n }\n\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate;\n\n if (!canBegin) {\n return;\n }\n\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, this.props.to) : this.props.to\n };\n\n if (this.state && this.state.style) {\n if (attributeName && this.state.style[attributeName] !== this.props.to || !attributeName && this.state.style !== this.props.to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n return;\n }\n\n if (deepEqual(prevProps.to, this.props.to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n\n if (this.manager) {\n this.manager.stop();\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n\n var from = isTriggered || shouldReAnimate ? this.props.from : prevProps.to;\n\n if (this.state && this.state.style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n\n if (attributeName && this.state.style[attributeName] !== from || !attributeName && this.state.style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n\n var transition = getTransitionVal(properties, duration, easing);\n\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"]);\n\n var count = Children.count(children);\n var stateStyle = translateStyle(this.state.style);\n\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n\n if (!isActive || count === 0) {\n return children;\n }\n\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n\n return Animate;\n}(PureComponent);\n\nAnimate.displayName = 'Animate';\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nexport default Animate;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\n\nif (Number.isFinite === undefined) {\n Number.isFinite = function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n}\n\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n\n if (Number.isFinite(duration)) {\n return duration;\n }\n\n return 0;\n};\n\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n\n var _super = _createSuper(AnimateGroupChild);\n\n function AnimateGroupChild() {\n var _this;\n\n _classCallCheck(this, AnimateGroupChild);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n isActive: false\n };\n\n _this.handleEnter = function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n };\n\n _this.handleExit = function () {\n _this.handleStyleActive(_this.props.leaveOptions);\n };\n\n return _this;\n }\n\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n\n return AnimateGroupChild;\n}(Component);\n\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\n\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n\n }, child);\n }));\n}\n\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue Total value\n * @param {NUmber} defaultValue The value returned when percent is undefined or invalid\n * @param {Boolean} validate If set to be true, the result will be validated\n * @return {Number} value\n */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n\n var value;\n\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (_isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n });\n}\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter(value) {\n return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\n\nexport var DefaultTooltipContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultTooltipContent, _PureComponent);\n\n var _super = _createSuper(DefaultTooltipContent);\n\n function DefaultTooltipContent() {\n _classCallCheck(this, DefaultTooltipContent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DefaultTooltipContent, [{\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n payload = _this$props.payload,\n separator = _this$props.separator,\n formatter = _this$props.formatter,\n itemStyle = _this$props.itemStyle,\n itemSorter = _this$props.itemSorter;\n\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value,\n name = entry.name;\n\n if (finalFormatter && value != null && name != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n\n if (Array.isArray(formatted)) {\n var _ref = formatted;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n value = _ref2[0];\n name = _ref2[1];\n } else {\n value = formatted;\n }\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, name) : null, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, value), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n wrapperClassName = _this$props2.wrapperClassName,\n contentStyle = _this$props2.contentStyle,\n labelClassName = _this$props2.labelClassName,\n labelStyle = _this$props2.labelStyle,\n label = _this$props2.label,\n labelFormatter = _this$props2.labelFormatter,\n payload = _this$props2.payload;\n\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n\n var hasLabel = !_isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n var labelCN = classNames('recharts-tooltip-label', labelClassName);\n\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperCN,\n style: finalStyle\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), this.renderContent());\n }\n }]);\n\n return DefaultTooltipContent;\n}(PureComponent);\nDefaultTooltipContent.displayName = 'DefaultTooltipContent';\nDefaultTooltipContent.defaultProps = {\n separator: ' : ',\n contentStyle: {},\n itemStyle: {},\n labelStyle: {}\n};","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\n\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { Global } from '../util/Global';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\n\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\n\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n\n var _super = _createSuper(Tooltip);\n\n function Tooltip() {\n var _this;\n\n _classCallCheck(this, Tooltip);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n boxWidth: -1,\n boxHeight: -1,\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n }\n };\n _this.wrapperNode = void 0;\n\n _this.getTranslate = function (_ref) {\n var key = _ref.key,\n tooltipDimension = _ref.tooltipDimension,\n viewBoxDimension = _ref.viewBoxDimension;\n var _this$props = _this.props,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n coordinate = _this$props.coordinate,\n offset = _this$props.offset,\n position = _this$props.position,\n viewBox = _this$props.viewBox;\n\n if (position && isNumber(position[key])) {\n return position[key];\n }\n\n var restricted = coordinate[key] - tooltipDimension - offset;\n var unrestricted = coordinate[key] + offset;\n\n if (allowEscapeViewBox[key]) {\n return unrestricted;\n }\n\n var tooltipBoundary = coordinate[key] + tooltipDimension + offset;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(restricted, viewBox[key]);\n }\n\n return Math.max(unrestricted, viewBox[key]);\n };\n\n return _this;\n }\n\n _createClass(Tooltip, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight,\n dismissed = _this$state.dismissed;\n\n if (dismissed) {\n this.wrapperNode.blur();\n\n if (this.props.coordinate.x !== this.state.dismissedAtCoordinate.x || this.props.coordinate.y !== this.state.dismissedAtCoordinate.y) {\n this.setState({\n dismissed: false\n });\n }\n } else {\n this.wrapperNode.focus({\n preventScroll: true\n });\n }\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: box.width,\n boxHeight: box.height\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _this2 = this;\n\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n isAnimationActive = _this$props2.isAnimationActive,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n filterNull = _this$props2.filterNull,\n payloadUniqBy = _this$props2.payloadUniqBy;\n var finalPayload = getUniqPayload(payloadUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n return !_isNil(entry.value);\n }) : payload);\n var hasPayload = finalPayload && finalPayload.length;\n var _this$props3 = this.props,\n content = _this$props3.content,\n viewBox = _this$props3.viewBox,\n coordinate = _this$props3.coordinate,\n position = _this$props3.position,\n active = _this$props3.active,\n wrapperStyle = _this$props3.wrapperStyle;\n\n var outerStyle = _objectSpread({\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n\n var translateX, translateY;\n\n if (position && isNumber(position.x) && isNumber(position.y)) {\n translateX = position.x;\n translateY = position.y;\n } else {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n\n if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n translateX = this.getTranslate({\n key: 'x',\n tooltipDimension: boxWidth,\n viewBoxDimension: viewBox.width\n });\n translateY = this.getTranslate({\n key: 'y',\n tooltipDimension: boxHeight,\n viewBoxDimension: viewBox.height\n });\n } else {\n outerStyle.visibility = 'hidden';\n }\n }\n\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transform: this.props.useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n })), outerStyle);\n\n if (isAnimationActive && active) {\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n })), outerStyle);\n }\n\n var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n return (\n /*#__PURE__*/\n // ESLint is disabled to allow listening to the `Escape` key. Refer to\n // https://github.com/recharts/recharts/pull/2925\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n React.createElement(\"div\", {\n tabIndex: -1,\n role: \"dialog\",\n onKeyDown: function onKeyDown(event) {\n if (event.key === 'Escape') {\n _this2.setState({\n dismissed: true,\n dismissedAtCoordinate: _objectSpread(_objectSpread({}, _this2.state.dismissedAtCoordinate), {}, {\n x: _this2.props.coordinate.x,\n y: _this2.props.coordinate.y\n })\n });\n }\n },\n className: cls,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })))\n );\n }\n }]);\n\n return Tooltip;\n}(PureComponent);\nTooltip.displayName = 'Tooltip';\nTooltip.defaultProps = {\n active: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n offset: 10,\n viewBox: {\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 0\n },\n coordinate: {\n x: 0,\n y: 0\n },\n cursorStyle: {},\n separator: ' : ',\n wrapperStyle: {},\n contentStyle: {},\n itemStyle: {},\n labelStyle: {},\n cursor: true,\n trigger: 'hover',\n isAnimationActive: !Global.isSsr,\n animationEasing: 'ease',\n animationDuration: 400,\n filterNull: true,\n useTranslate3d: false\n};","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _upperFirst from \"lodash/upperFirst\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(_upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n\n case 'square':\n return size * size;\n\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n default:\n return Math.PI * size * size / 4;\n }\n};\n\nexport var Symbols = /*#__PURE__*/function (_PureComponent) {\n _inherits(Symbols, _PureComponent);\n\n var _super = _createSuper(Symbols);\n\n function Symbols() {\n _classCallCheck(this, Symbols);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Symbols, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n size = _this$props.size,\n sizeType = _this$props.sizeType,\n type = _this$props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n size = _this$props2.size;\n\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: this.getPath()\n }));\n }\n\n return null;\n }\n }]);\n\n return Symbols;\n}(PureComponent);\nSymbols.defaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\n\nSymbols.registerSymbol = function (key, factory) {\n symbolFactories[\"symbol\".concat(_upperFirst(key))] = factory;\n};","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function(type, size) {\n var context = null;\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n\n var _super = _createSuper(DefaultLegendContent);\n\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n if (entry.type === 'none') {\n return null;\n }\n\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n\n return DefaultLegendContent;\n}(PureComponent);\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, [\"ref\"]);\n\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\n\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n\n var _super = _createSuper(Legend);\n\n function Legend() {\n var _this;\n\n _classCallCheck(this, Legend);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.wrapperNode = void 0;\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n return _this;\n }\n\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n return this.wrapperNode.getBoundingClientRect();\n }\n\n return null;\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box = this.getBBoxSnapshot() || {\n width: 0\n };\n\n hPos = {\n left: ((chartWidth || 0) - _box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box2 = this.getBBoxSnapshot() || {\n height: 0\n };\n\n vPos = {\n top: ((chartHeight || 0) - _box2.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box3 = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: _box3.width,\n boxHeight: _box3.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(_box3);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payloadUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n\n return null;\n }\n }]);\n\n return Legend;\n}(PureComponent);\nLegend.displayName = 'Legend';\nLegend.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n};","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isArray from \"lodash/isArray\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n return p.x;\n};\n\nvar getY = function getY(p) {\n return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n\n var name = \"curve\".concat(_upperFirst(type));\n\n if (name === 'curveMonotone' && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\nexport var Curve = /*#__PURE__*/function (_PureComponent) {\n _inherits(Curve, _PureComponent);\n\n var _super = _createSuper(Curve);\n\n function Curve() {\n _classCallCheck(this, Curve);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Curve, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n type = _this$props.type,\n points = _this$props.points,\n baseLine = _this$props.baseLine,\n layout = _this$props.layout,\n connectNulls = _this$props.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n points = _this$props2.points,\n path = _this$props2.path,\n pathRef = _this$props2.pathRef;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n var realPath = points && points.length ? this.getPath() : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n }\n }]);\n\n return Curve;\n}(PureComponent);\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cross\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\nexport var Cross = /*#__PURE__*/function (_PureComponent) {\n _inherits(Cross, _PureComponent);\n\n var _super = _createSuper(Cross);\n\n function Cross() {\n _classCallCheck(this, Cross);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Cross, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n top = _this$props.top,\n left = _this$props.left,\n className = _this$props.className;\n\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-cross', className),\n d: Cross.getPath(x, y, width, height, top, left)\n }));\n }\n }], [{\n key: \"getPath\",\n value: function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n }\n }]);\n\n return Cross;\n}(PureComponent);\nCross.defaultProps = {\n x: 0,\n y: 0,\n top: 0,\n left: 0,\n width: 0,\n height: 0\n};","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n\n if (_isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n\n var _range2 = _slicedToArray(_range, 2);\n\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n\n var formatAngle = angle;\n var inRange;\n\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n\n return null;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Sector\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\n\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle); // The coordinate of point which is tangent to the circle\n\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle); // The coordinate of point which is tangent to the radius line\n\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\n\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle); // When the angle of sector equals to 360, star point and end point coincide\n\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n\n return path;\n};\n\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n\n return path;\n};\n\nexport var Sector = /*#__PURE__*/function (_PureComponent) {\n _inherits(Sector, _PureComponent);\n\n var _super = _createSuper(Sector);\n\n function Sector() {\n _classCallCheck(this, Sector);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Sector, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n innerRadius = _this$props.innerRadius,\n outerRadius = _this$props.outerRadius,\n cornerRadius = _this$props.cornerRadius,\n forceCornerRadius = _this$props.forceCornerRadius,\n cornerIsExternal = _this$props.cornerIsExternal,\n startAngle = _this$props.startAngle,\n endAngle = _this$props.endAngle,\n className = _this$props.className;\n\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n\n var layerClass = classNames('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: path\n }));\n }\n }]);\n\n return Sector;\n}(PureComponent);\nSector.defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nexport var Dot = /*#__PURE__*/function (_PureComponent) {\n _inherits(Dot, _PureComponent);\n\n var _super = _createSuper(Dot);\n\n function Dot() {\n _classCallCheck(this, Dot);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n r = _this$props.r,\n className = _this$props.className;\n var layerClass = classNames('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n\n return null;\n }\n }]);\n\n return Dot;\n}(PureComponent);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/types';\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n\n return path;\n};\n\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n\n return false;\n};\nexport var Rectangle = /*#__PURE__*/function (_PureComponent) {\n _inherits(Rectangle, _PureComponent);\n\n var _super = _createSuper(Rectangle);\n\n function Rectangle() {\n var _this;\n\n _classCallCheck(this, Rectangle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n totalLength: -1\n };\n _this.node = void 0;\n return _this;\n }\n\n _createClass(Rectangle, [{\n key: \"componentDidMount\",\n value:\n /* eslint-disable react/no-did-mount-set-state */\n function componentDidMount() {\n if (this.node && this.node.getTotalLength) {\n try {\n var totalLength = this.node.getTotalLength();\n\n if (totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n } catch (err) {// calculate total length error\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n radius = _this$props.radius,\n className = _this$props.className;\n var totalLength = this.state.totalLength;\n var _this$props2 = this.props,\n animationEasing = _this$props2.animationEasing,\n animationDuration = _this$props2.animationDuration,\n animationBegin = _this$props2.animationBegin,\n isAnimationActive = _this$props2.isAnimationActive,\n isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-rectangle', className);\n\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(_this2.props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: function ref(node) {\n _this2.node = node;\n }\n })));\n });\n }\n }]);\n\n return Rectangle;\n}(PureComponent);\nRectangle.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n\n return true;\n}","import _isString from \"lodash/isString\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { Children } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n\n if (!Comp) {\n return '';\n }\n\n return Comp.displayName || Comp.name || 'Component';\n}; // `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\n\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && _isArray(lastResult)) {\n return lastResult;\n }\n\n var result = [];\n Children.forEach(children, function (child) {\n if (_isNil(child)) return;\n\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n var result = [];\n var types = [];\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(function (child) {\n var childType = _get(child, 'type.displayName') || _get(child, 'type.name');\n\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n toArray(children).forEach(function (child) {\n var displayName = _get(child, 'type.displayName');\n\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n var count = Children.count(nextChildren);\n\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n\n if (count === 0) {\n return true;\n }\n\n if (count === 1) {\n // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n } // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n if (nextChildren && prevChildren) {\n // eslint-disable-next-line no-use-before-define\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n } // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n\n\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), style);\n\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n }; // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/types';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n try {\n var words = [];\n\n if (!_isNil(props.children)) {\n if (props.breakAll) {\n words = props.children.toString().split('');\n } else {\n words = props.children.toString().split(BREAKING_SPACES);\n }\n }\n\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, props.style).width\n };\n });\n var spaceWidth = props.breakAll ? 0 : getStringSize(\"\\xA0\", props.style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\n\nvar calculateWordsByLines = function calculateWordsByLines(props, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var shouldLimitLines = isNumber(props.maxLines);\n var text = props.children;\n\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref) {\n var word = _ref.word,\n width = _ref.width;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n };\n\n var originalResult = calculate(initialWordsWithComputedWith);\n\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n\n if (!shouldLimitLines) {\n return originalResult;\n }\n\n var suffix = '…';\n\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths(_objectSpread(_objectSpread({}, props), {}, {\n children: tempText + suffix\n })).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > props.maxLines || findLongestLine(result).width > lineWidth;\n return [doesOverflow, result];\n };\n\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n\n iterations++;\n } // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n\n\n return trimmedResult || originalResult;\n};\n\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !_isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\n\nvar getWordsByLines = function getWordsByLines(props, needCalculate) {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((props.width || props.scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n\n if (needCalculate) {\n var wordWidths = calculateWordWidths(props);\n\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(props.children);\n }\n\n return calculateWordsByLines(props, wordsWithComputedWidth, spaceWidth, props.width, props.scaleToFit);\n }\n }\n\n return getWordsWithoutCalculate(props.children);\n};\n\nexport var Text = /*#__PURE__*/function (_Component) {\n _inherits(Text, _Component);\n\n var _super = _createSuper(Text);\n\n function Text() {\n var _this;\n\n _classCallCheck(this, Text);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {};\n return _this;\n }\n\n _createClass(Text, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n dx = _this$props.dx,\n dy = _this$props.dy,\n textAnchor = _this$props.textAnchor,\n verticalAnchor = _this$props.verticalAnchor,\n scaleToFit = _this$props.scaleToFit,\n angle = _this$props.angle,\n lineHeight = _this$props.lineHeight,\n capHeight = _this$props.capHeight,\n className = _this$props.className,\n breakAll = _this$props.breakAll,\n textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\", \"breakAll\"]);\n\n var wordsByLines = this.state.wordsByLines;\n\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n\n var transforms = [];\n\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = this.props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(breakAll ? '' : ' '))\n );\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.width !== prevState.prevWidth || nextProps.scaleToFit !== prevState.prevScaleToFit || nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll) {\n var needCalculate = nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll;\n return {\n prevWidth: nextProps.width,\n prevScaleToFit: nextProps.scaleToFit,\n prevChildren: nextProps.children,\n prevStyle: nextProps.style,\n wordsByLines: getWordsByLines(nextProps, needCalculate)\n };\n }\n\n return null;\n }\n }]);\n\n return Text;\n}(Component);\nText.defaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Text } from './Text';\nimport { findAllByType } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/types';\n\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n var r = (innerRadius + outerRadius) / 2;\n\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height; // Define vertical offsets and position inverts based on the value being positive or negative\n\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end'; // Define horizontal offsets and position inverts based on the value being positive or negative\n\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\n\nvar isPolar = function isPolar(viewBox) {\n return isNumber(viewBox.cx);\n};\n\nexport function Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n\n if (!viewBox || _isNil(value) && _isNil(children) && ! /*#__PURE__*/isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n\n var label;\n\n if (_isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n offset: 5\n};\n\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n\n if (labelViewBox) {\n return labelViewBox;\n }\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n key: \"label-\".concat(index)\n });\n });\n\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _get from \"lodash/get\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Global } from '../util/Global';\nimport { isNumber, mathSign } from '../util/DataUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n _inherits(CartesianAxis, _Component);\n\n var _super = _createSuper(CartesianAxis);\n\n function CartesianAxis(props) {\n var _this;\n\n _classCallCheck(this, CartesianAxis);\n\n _this = _super.call(this, props);\n _this.layerReference = void 0;\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n } // todo Array<Tick>\n\n\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, [\"viewBox\"]);\n\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, [\"viewBox\"]);\n\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props)), filterProps(axisLine)), {}, {\n fill: 'none'\n });\n\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: classNames('recharts-cartesian-axis-line', _get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = CartesianAxis.getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props);\n var customTickProps = filterProps(tick);\n\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine));\n\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: classNames('recharts-cartesian-axis-tick-line', _get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n\n if (hide) {\n return null;\n }\n\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, [\"ticks\"]);\n\n var finalTicks = ticks;\n\n if (_isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"getTicks\",\n value: function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit;\n\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n\n if (isNumber(interval) || Global.isSsr) {\n return CartesianAxis.getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n\n if (interval === 'preserveStartEnd') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }, true);\n }\n\n if (interval === 'preserveStart') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n });\n }\n\n return CartesianAxis.getTicksEnd({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit,\n fontSize: fontSize,\n letterSpacing: letterSpacing\n });\n }\n }, {\n key: \"getNumberIntervalTicks\",\n value: function getNumberIntervalTicks(ticks, interval) {\n return ticks.filter(function (entry, i) {\n return i % (interval + 1) === 0;\n });\n }\n }, {\n key: \"getTicksStart\",\n value: function getTicksStart(_ref3, preserveEnd) {\n var ticks = _ref3.ticks,\n tickFormatter = _ref3.tickFormatter,\n viewBox = _ref3.viewBox,\n orientation = _ref3.orientation,\n minTickGap = _ref3.minTickGap,\n unit = _ref3.unit,\n fontSize = _ref3.fontSize,\n letterSpacing = _ref3.letterSpacing;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var result = (ticks || []).slice(); // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey] : 0;\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value, len - 1) : tail.value;\n var tailSize = getStringSize(tailContent, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey] + unitSize;\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n\n var count = preserveEnd ? len - 1 : len;\n\n for (var i = 0; i < count; i++) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value;\n var size = getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey] + unitSize;\n\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * size / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n start = entry.tickCoord + sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"getTicksEnd\",\n value: function getTicksEnd(_ref4) {\n var ticks = _ref4.ticks,\n tickFormatter = _ref4.tickFormatter,\n viewBox = _ref4.viewBox,\n orientation = _ref4.orientation,\n minTickGap = _ref4.minTickGap,\n unit = _ref4.unit,\n fontSize = _ref4.fontSize,\n letterSpacing = _ref4.letterSpacing;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height'; // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey] : 0;\n var result = (ticks || []).slice();\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n for (var i = len - 1; i >= 0; i--) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, len - i - 1) : entry.value;\n var size = getStringSize(content, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey] + unitSize;\n\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * size / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n end = entry.tickCoord - sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return CartesianAxis;\n}(Component);\nCartesianAxis.displayName = 'CartesianAxis';\nCartesianAxis.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n};","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的è¿ç®—方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获å–数值的ä½æ•°\n * å…¶ä¸ç»å¯¹å€¼å±žäºŽåŒºé—´[0.1, 1), 得到的值为0\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.01, 0.1),得到的ä½æ•°ä¸º -1\n * ç»å¯¹å€¼å±žäºŽåŒºé—´[0.001, 0.01),得到的ä½æ•°ä¸º -2\n *\n * @param {Number} value 数值\n * @return {Integer} ä½æ•°\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的æ¥é•¿èŽ·å–[start, end)这个区间的数æ®\n * 并且需è¦å¤„ç†js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,ä¸åŒ…å«è¯¥å€¼\n * @param {Decimal} step æ¥é•¿\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性æ’值\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} t [0, 1]内的æŸä¸ªå€¼\n * @return {Number} 定义域内的æŸä¸ªå€¼\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性æ’值的逆è¿ç®—\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性æ’值的逆è¿ç®—,并且有截æ–çš„æ“作\n *\n * @param {Number} a 定义域的æžç‚¹\n * @param {Number} b 定义域的æžç‚¹\n * @param {Number} x å¯ä»¥è®¤ä¸ºæ˜¯æ’值åŽçš„一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当xä¸åœ¨ a ~ b这个区间时,会截æ–到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value†part that can be\n // grouped, and fractional or exponential “suffix†part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport { Legend } from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils'; // TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { filterProps } from './types';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (_isNil(obj) || _isNil(dataKey)) {\n return defaultValue;\n }\n\n if (isNumOrStr(dataKey)) {\n return _get(obj, dataKey, defaultValue);\n }\n\n if (_isFunction(dataKey)) {\n return dataKey(obj);\n }\n\n return defaultValue;\n}\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\n\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData; // 支æŒDate类型的xè½´\n\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n if (len > 1) {\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range; // ticks are distributed in a circle\n\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n\n default:\n result = fill;\n break;\n }\n\n return result;\n};\nexport var getLegendProps = function getLegendProps(_ref2) {\n var children = _ref2.children,\n formattedGraphicalItems = _ref2.formattedGraphicalItems,\n legendWidth = _ref2.legendWidth,\n legendContent = _ref2.legendContent;\n var legendItem = findChildByType(children, Legend.displayName);\n\n if (!legendItem) {\n return null;\n }\n\n var legendData;\n\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref4) {\n var item = _ref4.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\n\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n var globalSize = _ref5.barSize,\n _ref5$stackGroups = _ref5.stackGroups,\n stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref6) {\n var barGap = _ref6.barGap,\n barCategoryGap = _ref6.barCategoryGap,\n bandSize = _ref6.bandSize,\n _ref6$sizeList = _ref6.sizeList,\n sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n maxBarSize = _ref6.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result; // whether or not is barSize setted by user\n\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n\n return newRes;\n }, []);\n }\n\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0); // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\n\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (_isNil(axisType)) {\n return true;\n }\n\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n\n return true;\n};\n\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, 'ErrorBar').filter(function (errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {}; // Get the union set of category axis\n\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n\n\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {Function} The scale function\n */\n\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (_isString(scale)) {\n var name = \"scale\".concat(_upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n } // reversing items to affect render order (for layering)\n\n\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, {});\n};\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === 'number') {\n return [_min(ticks), _max(ticks)];\n }\n\n return ticks;\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n\n if (!domain.length) {\n return null;\n }\n\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain(calculateDomainOfTicks(tickValues, type));\n return {\n niceTicks: tickValues\n };\n }\n\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n return {\n niceTicks: _tickValues\n };\n }\n\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index,\n dataKey = _ref7.dataKey;\n\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n var axis = _ref8.axis,\n ticks = _ref8.ticks,\n offset = _ref8.offset,\n bandSize = _ref8.bandSize,\n entry = _ref8.entry,\n index = _ref8.index;\n\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n var numericAxis = _ref9.numericAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (_isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n /* eslint-disable prefer-destructuring */\n\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n domain[1] = dataDomain[1] + _value;\n } else if (_isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n\n return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n var bandWidth = axis.scale.bandwidth();\n\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\n\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis element\n * @returns {Array} domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType,\n chartType = _graphicalItem$props.chartType;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType\n });\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _range from \"lodash/range\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport classNames from 'classnames';\nimport { scalePoint } from 'd3-scale';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/types';\n\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n\n if (!data || !data.length) {\n return {};\n }\n\n var len = data.length;\n var scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\n\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\n\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n _inherits(Brush, _PureComponent);\n\n var _super = _createSuper(Brush);\n\n function Brush(props) {\n var _this;\n\n _classCallCheck(this, Brush);\n\n _this = _super.call(this, props);\n _this.leaveTimer = void 0;\n _this.travellerDragStartHandlers = void 0;\n\n _this.handleDrag = function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n };\n\n _this.handleDragEnd = function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n });\n\n _this.detachDragEndListener();\n };\n\n _this.handleLeaveWrapper = function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n };\n\n _this.handleEnterSlideOrTraveller = function () {\n _this.setState({\n isTextActive: true\n });\n };\n\n _this.handleLeaveSlideOrTraveller = function () {\n _this.setState({\n isTextActive: false\n });\n };\n\n _this.handleSlideDragStart = function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n\n _this.attachDragEndListener();\n };\n\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = {};\n return _this;\n }\n\n _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props = this.props,\n gap = _this$props.gap,\n data = _this$props.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props2 = this.props,\n data = _this$props2.data,\n tickFormatter = _this$props2.tickFormatter,\n dataKey = _this$props2.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return _isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props3 = this.props,\n x = _this$props3.x,\n width = _this$props3.width,\n travellerWidth = _this$props3.travellerWidth,\n startIndex = _this$props3.startIndex,\n endIndex = _this$props3.endIndex,\n onChange = _this$props3.onChange;\n var delta = e.pageX - slideMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$setState;\n\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n onChange = _this$props4.onChange,\n gap = _this$props4.gap,\n data = _this$props4.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n\n return false;\n };\n\n this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n fill = _this$props5.fill,\n stroke = _this$props5.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n data = _this$props6.data,\n children = _this$props6.children,\n padding = _this$props6.padding;\n var chartElement = Children.only(children);\n\n if (!chartElement) {\n return null;\n }\n\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _this$props7 = this.props,\n y = _this$props7.y,\n travellerWidth = _this$props7.travellerWidth,\n height = _this$props7.height,\n traveller = _this$props7.traveller;\n var x = Math.max(travellerX, this.props.x);\n\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props8 = this.props,\n y = _this$props8.y,\n height = _this$props8.height,\n stroke = _this$props8.stroke,\n travellerWidth = _this$props8.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props9 = this.props,\n startIndex = _this$props9.startIndex,\n endIndex = _this$props9.endIndex,\n y = _this$props9.y,\n height = _this$props9.height,\n travellerWidth = _this$props9.travellerWidth,\n stroke = _this$props9.stroke;\n var _this$state3 = this.state,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n className = _this$props10.className,\n children = _this$props10.children,\n x = _this$props10.x,\n y = _this$props10.y,\n width = _this$props10.width,\n height = _this$props10.height,\n alwaysShowText = _this$props10.alwaysShowText;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX,\n isTextActive = _this$state4.isTextActive,\n isSlideMoving = _this$state4.isSlideMoving,\n isTravellerMoving = _this$state4.isTravellerMoving;\n\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseMove: this.handleDrag,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(range, x) {\n var len = range.length;\n var start = 0;\n var end = len - 1;\n\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n\n if (range[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n\n return x >= range[end] ? end : start;\n }\n }]);\n\n return Brush;\n}(PureComponent);\nBrush.displayName = 'Brush';\nBrush.defaultProps = {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n};","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, 'Bar');\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n\n if (axis.padding === 'no-gap') {\n var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n\n this.scale = void 0;\n this.scale = scale;\n }\n\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n\n if (value === undefined) {\n return undefined;\n }\n\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n return this.scale(value) + _offset;\n }\n\n default:\n {\n return this.scale(value);\n }\n }\n }\n\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n return this.scale(value) + _offset2;\n }\n\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n\n return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n\n return _mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return _every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n\n return result;\n};\n\nexport function ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n if (!isX || !isY) {\n return null;\n }\n\n var coordinate = getCoordinate(props);\n\n if (!coordinate) {\n return null;\n }\n\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\n\nReferenceDot.renderDot = function (option, props) {\n var dot;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n\n return dot;\n};","import _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar renderLine = function renderLine(option, props) {\n var line;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n\n return line;\n}; // TODO: ScaleHelper\n\n\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, props) {\n var _props$viewBox = props.viewBox,\n x = _props$viewBox.x,\n y = _props$viewBox.y,\n width = _props$viewBox.width,\n height = _props$viewBox.height,\n position = props.position;\n\n if (isFixedY) {\n var yCoord = props.y,\n orientation = props.yAxis.orientation;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return orientation === 'left' ? points.reverse() : points;\n }\n\n if (isFixedX) {\n var xCoord = props.x,\n _orientation = props.xAxis.orientation;\n\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return _orientation === 'top' ? _points.reverse() : _points;\n }\n\n if (isSegment) {\n var segment = props.segment;\n\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n\n if (ifOverflowMatches(props, 'discard') && _some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n\n return _points2;\n }\n\n return null;\n};\n\nexport function ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, props);\n\n if (!endPoints) {\n return null;\n }\n\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/types';\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n\n return rectWithPoints(p1, p2);\n};\n\nexport function ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n\n if (!rect && !shape) {\n return null;\n }\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\n\nReferenceArea.renderRect = function (option, props) {\n var rect;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n\n return rect;\n};","import { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine.displayName);\n var dots = findAllByType(children, ReferenceDot.displayName);\n var elements = lines.concat(dots);\n var areas = findAllByType(children, ReferenceArea.displayName);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\n\nif (eventCenter.setMaxListeners) {\n eventCenter.setMaxListeners(10);\n}\n\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents'; // eslint-disable-next-line no-redeclare","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _sortBy from \"lodash/sortBy\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _isNil from \"lodash/isNil\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { Sector } from '../shape/Sector';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle, Rectangle } from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType } from '../util/ReactUtils';\nimport { CartesianAxis } from '../cartesian/CartesianAxis';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, isCategoricalAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis, getTooltipItem } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { filterProps, adaptEventHandlers } from '../util/types';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n}; // use legacy isFinite only if there is a problem (aka IE)\n// eslint-disable-next-line no-restricted-globals\n\nvar isFinit = Number.isFinite ? Number.isFinite : isFinite;\nvar defer = // eslint-disable-next-line no-nested-ternary\ntypeof requestAnimationFrame === 'function' ? requestAnimationFrame : typeof setImmediate === 'function' ? setImmediate : setTimeout;\nvar deferClear = // eslint-disable-next-line no-nested-ternary\ntypeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : typeof clearImmediate === 'function' ? clearImmediate : clearTimeout;\n\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n\n return rangeObj.radius;\n};\n\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n\n return originCoordinate;\n};\n\nvar getDisplayedData = function getDisplayedData(data, _ref, item) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n\n return result;\n }, []);\n\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\n};\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\n\n\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n } // get data by activeIndex when the axis don't allow duplicated category\n\n\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n\n if (hide) {\n return result;\n }\n\n var data = child.props.data;\n var payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\n\n\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n\n return null;\n};\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType); // Eliminate duplicated axes\n\n var axisMap = axes.reduce(function (result, child) {\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks;\n var axisId = child.props[axisIdKey];\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n\n if (!result[axisId]) {\n var domain, duplicateDomain, categoricalDomain;\n\n if (dataKey) {\n // has dataKey in <Axis />\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is catrgorical axis\n var duplicate = hasDuplicate(domain);\n\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), dataKey, axisType, layout);\n\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), type, layout, true);\n }\n\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n\n if (child.props.domain) {\n domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && child.props.domain) {\n var axisDomain = child.props.domain;\n var isDomainValidate = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n\n if (isDomainValidate) {\n domain = axisDomain;\n }\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: child.props.domain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n};\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1; // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n\n if (!result[axisId]) {\n index++;\n var domain;\n\n if (isCategorical) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: Axis.defaultProps.domain,\n isCategorical: isCategorical,\n layout: layout // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n};\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n\n return axisMap;\n};\n\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\n\n\nvar createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush.displayName);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n};\n\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\n\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * graphicalItems The instances of item\n * xAxisMap The configuration of x-axis\n * yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox the boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\n\n\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush.displayName);\n var legendItem = findChildByType(children, Legend.displayName);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n }\n\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n\n var brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n\n if (legendItem && prevLegendBBox) {\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n};\n\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _class, _temp;\n\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread6;\n\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, (_objectSpread6 = {}, _defineProperty(_objectSpread6, entry.axisType, axis), _defineProperty(_objectSpread6, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread6));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n\n // 如果是bar,计算barçš„ä½ç½®\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n\n var composedFn = item && item.type && item.type.getComposedData;\n\n if (composedFn) {\n var _objectSpread7;\n\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, (_objectSpread7 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread7, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread7, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread7, \"animationId\", updateId), _objectSpread7)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n\n\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n\n var _super = _createSuper(CategoricalChartWrapper);\n\n // todo join specific chart propTypes\n function CategoricalChartWrapper(_props) {\n var _this;\n\n _classCallCheck(this, CategoricalChartWrapper);\n\n _this = _super.call(this, _props);\n _this.uniqueChartId = void 0;\n _this.clipPathId = void 0;\n _this.legendInstance = void 0;\n _this.deferId = void 0;\n _this.container = void 0;\n\n _this.clearDeferId = function () {\n if (!_isNil(_this.deferId) && deferClear) {\n deferClear(_this.deferId);\n }\n\n _this.deferId = null;\n };\n\n _this.handleLegendBBoxUpdate = function (box) {\n if (box) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n };\n\n _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n var syncId = _this.props.syncId;\n\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n _this.clearDeferId();\n\n _this.deferId = defer && defer(_this.applySyncEvent.bind(_assertThisInitialized(_this), data));\n }\n };\n\n _this.handleBrushChange = function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n };\n\n _this.handleMouseEnter = function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(_nextState);\n\n _this.triggerSyncEvent(_nextState);\n\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n };\n\n _this.triggeredAfterMouseMove = function (e) {\n var onMouseMove = _this.props.onMouseMove;\n\n var mouse = _this.getMouseInfo(e);\n\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n };\n\n _this.handleItemMouseEnter = function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n };\n\n _this.handleItemMouseLeave = function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n };\n\n _this.handleMouseMove = function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n\n _this.triggeredAfterMouseMove(e);\n };\n\n _this.handleMouseLeave = function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n\n _this.cancelThrottledTriggerAfterMouseMove();\n };\n\n _this.handleOuterEvent = function (e) {\n var eventName = getReactEventByType(e);\n\n var event = _get(_this.props, \"\".concat(eventName));\n\n if (eventName && _isFunction(event)) {\n var mouse;\n\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n\n var handler = event;\n handler(mouse, e);\n }\n };\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(_nextState2);\n\n _this.triggerSyncEvent(_nextState2);\n\n if (_isFunction(onClick)) {\n onClick(_nextState2, e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n var onMouseDown = _this.props.onMouseDown;\n\n if (_isFunction(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n\n onMouseDown(_nextState3, e);\n }\n };\n\n _this.handleMouseUp = function (e) {\n var onMouseUp = _this.props.onMouseUp;\n\n if (_isFunction(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n\n onMouseUp(_nextState4, e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchStart = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchEnd = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n _this.verticalCoordinatesGenerator = function (_ref10) {\n var xAxis = _ref10.xAxis,\n width = _ref10.width,\n height = _ref10.height,\n offset = _ref10.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), xAxis), {}, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n };\n\n _this.horizontalCoordinatesGenerator = function (_ref11) {\n var yAxis = _ref11.yAxis,\n width = _ref11.width,\n height = _ref11.height,\n offset = _ref11.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), yAxis), {}, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n };\n\n _this.axesTicksGenerator = function (axis) {\n return getTicksOfAxis(axis, true);\n };\n\n _this.renderCursor = function (element) {\n var _this$state2 = _this.state,\n isTooltipActive = _this$state2.isTooltipActive,\n activeCoordinate = _this$state2.activeCoordinate,\n activePayload = _this$state2.activePayload,\n offset = _this$state2.offset,\n activeTooltipIndex = _this$state2.activeTooltipIndex;\n\n var tooltipEventType = _this.getTooltipEventType();\n\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n\n var key = element.key || '_recharts-cursor';\n\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n };\n\n _this.renderPolarAxis = function (element, displayName, index) {\n var axisType = _get(element, 'type.axisType');\n\n var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n\n var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n };\n\n _this.renderXAxis = function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderYAxis = function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderGrid = function (element) {\n var _this$state3 = _this.state,\n xAxisMap = _this$state3.xAxisMap,\n yAxisMap = _this$state3.yAxisMap,\n offset = _this$state3.offset;\n var _this$props = _this.props,\n width = _this$props.width,\n height = _this$props.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, isFinit);\n });\n\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || 'grid',\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n };\n\n _this.renderPolarGrid = function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: _isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: _isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n };\n\n _this.renderLegend = function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n\n if (!props) {\n return null;\n }\n\n var item = props.item,\n otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this.legendInstance = legend;\n },\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n };\n\n _this.renderTooltip = function () {\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n\n if (!tooltipItem) {\n return null;\n }\n\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n };\n\n _this.renderBrush = function (element) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n data = _this$props3.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId; // TODO: update brush when children update\n\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n };\n\n _this.renderReferenceElement = function (element, displayName, index) {\n if (!element) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n };\n\n _this.renderActivePoints = function (_ref12) {\n var item = _ref12.item,\n activePoint = _ref12.activePoint,\n basePoint = _ref12.basePoint,\n childIndex = _ref12.childIndex,\n isRange = _ref12.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot)), adaptEventHandlers(activeDot));\n\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n };\n\n _this.renderGraphicChild = function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n\n if (!item) {\n return null;\n }\n\n var tooltipEventType = _this.getTooltipEventType();\n\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n var itemEvents = {};\n\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onCLick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, null, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onMouseEnter)\n };\n }\n\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n\n if (hasActive) {\n var activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n _this.renderCustomized = function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n };\n\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n\n _this.state = {};\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // add syncId\n if (_isNil(prevProps.syncId) && !_isNil(this.props.syncId)) {\n this.addListener();\n } // remove syncId\n\n\n if (!_isNil(prevProps.syncId) && _isNil(this.props.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDeferId();\n\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n\n this.cancelThrottledTriggerAfterMouseMove();\n }\n }, {\n key: \"cancelThrottledTriggerAfterMouseMove\",\n value: function cancelThrottledTriggerAfterMouseMove() {\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip.displayName);\n\n if (tooltipItem && _isBoolean(tooltipItem.props.shared)) {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n\n return defaultTooltipEventType;\n }\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n\n if (!rangeObj) {\n return null;\n }\n\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n\n return null;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state10 = this.state,\n activeCoordinate = _this$state10.activeCoordinate,\n offset = _this$state10.offset,\n tooltipAxisBandSize = _this$state10.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state11 = this.state,\n activeCoordinate = _this$state11.activeCoordinate,\n offset = _this$state11.offset;\n var x1, y1, x2, y2;\n\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n\n var _this$state12 = this.state,\n angleAxisMap = _this$state12.angleAxisMap,\n radiusAxisMap = _this$state12.radiusAxisMap;\n\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var tooltipEvents = {};\n\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n /* eslint-disable no-underscore-dangle */\n\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"applySyncEvent\",\n value: function applySyncEvent(data) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n syncMethod = _this$props4.syncMethod;\n var updateId = this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, this.state)));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state13 = this.state,\n offset = _this$state13.offset,\n tooltipTicks = _this$state13.tooltipTicks;\n\n if (!offset) {\n return;\n }\n\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }); // When a categotical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n\n\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n this.setState(data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n\n return null;\n }\n }, {\n key: \"renderAxis\",\n value:\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n function renderAxis(axisOptions, element, displayName, index) {\n var _this$props5 = this.props,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }));\n }\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap, _this$state$xAxisMap$;\n\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 ? void 0 : (_this$state$xAxisMap$ = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap$ === void 0 ? void 0 : _this$state$xAxisMap$.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap, _this$state$yAxisMap$;\n\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 ? void 0 : (_this$state$yAxisMap$ = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap$ === void 0 ? void 0 : _this$state$yAxisMap$.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n title = _this$props6.title,\n desc = _this$props6.desc,\n others = _objectWithoutProperties(_this$props6, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"]);\n\n var attrs = filterProps(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n if (compact) {\n return /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }]);\n\n return CategoricalChartWrapper;\n }(Component), _class.displayName = chartName, _class.defaultProps = _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps), _class.getDerivedStateFromProps = function (nextProps, prevState) {\n var data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n\n if (_isNil(prevState.updateId)) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps); // Fixes https://github.com/recharts/recharts/issues/2143\n\n\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n // update configuration in chilren\n var hasGlobalData = !_isNil(data);\n var newUpdateId = hasGlobalData ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId\n }), prevState)), {}, {\n prevChildren: children\n });\n }\n\n return null;\n }, _class.renderActiveDot = function (option, props) {\n var dot;\n\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }, _temp;\n};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { cloneElement } from 'react';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\nexport function LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n textBreakAll = props.textBreakAll,\n others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"]);\n\n if (!data || !data.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n index: index,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(label) || _isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n\n return null;\n}\n\nfunction renderCallByParent(parentProps, data) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var explicitChilren = findAllByType(children, LabelList.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n key: \"labelList-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n}\n\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/types';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n var svgProps = filterProps(others);\n var errorBars = data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n\n if (!errorVal) {\n return null;\n }\n\n var lineCoordinates = [];\n var lowBound, highBound;\n\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound); // the right line of |--|\n\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n }); // the middle line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n }); // the left line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n\n var _xMin = xMid - width;\n\n var _xMax = xMid + width;\n\n var _yMin = _scale(value - lowBound);\n\n var _yMax = _scale(value + highBound); // the top line\n\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n }); // the middle line\n\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n }); // the bottom line\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, svgProps), lineCoordinates.map(function (coordinates, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(index)\n }))\n );\n }))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _classCallCheck(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.mainCurve = void 0;\n _this.state = {\n isAnimationFinished: true,\n totalLength: 0\n };\n\n _this.getStrokeDasharray = function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n\n for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n };\n\n _this.id = uniqueId('recharts-line-');\n\n _this.pathRef = function (node) {\n _this.mainCurve = node;\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n };\n\n return _this;\n }\n\n _createClass(Line, [{\n key: \"componentDidMount\",\n value:\n /* eslint-disable react/no-did-mount-set-state */\n function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return /*#__PURE__*/React.cloneElement(item, {\n // eslint-disable-next-line react/no-array-index-key\n key: \"bar-\".concat(i),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, [\"type\", \"layout\", \"connectNulls\", \"ref\"]);\n\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n } // magic number of faking previous x and y location\n\n\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n }\n\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-line', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClip ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(), (hasSinglePoint || dot) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = classNames('recharts-line-dot', option ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n\n return dotItem;\n }\n }]);\n\n return Line;\n}(PureComponent);\nLine.displayName = 'Line';\nLine.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false\n};\n\nLine.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n dataKey = _ref2.dataKey,\n bandSize = _ref2.bandSize,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n};","/**\n * @fileOverview X Axis\n */\n\n/** Define of XAxis props */\nexport var XAxis = function XAxis() {\n return null;\n};\nXAxis.displayName = 'XAxis';\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n domain: [0, 'auto'],\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};","/**\n * @fileOverview Y Axis\n */\nexport var YAxis = function YAxis() {\n return null;\n};\nYAxis.displayName = 'YAxis';\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n domain: [0, 'auto'],\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cartesian Grid\n */\nimport React, { PureComponent } from 'react';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\nexport var CartesianGrid = /*#__PURE__*/function (_PureComponent) {\n _inherits(CartesianGrid, _PureComponent);\n\n var _super = _createSuper(CartesianGrid);\n\n function CartesianGrid() {\n _classCallCheck(this, CartesianGrid);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(CartesianGrid, [{\n key: \"renderHorizontal\",\n value:\n /**\n * Draw the horizontal grid lines\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal lines\n */\n function renderHorizontal(horizontalPoints) {\n var _this = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n width = _this$props.width,\n horizontal = _this$props.horizontal;\n\n if (!horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n\n var items = horizontalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this.props), {}, {\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: \"line-\".concat(i),\n index: i\n });\n\n return CartesianGrid.renderLineItem(horizontal, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-horizontal\"\n }, items);\n }\n /**\n * Draw vertical grid lines\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical lines\n */\n\n }, {\n key: \"renderVertical\",\n value: function renderVertical(verticalPoints) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n y = _this$props2.y,\n height = _this$props2.height,\n vertical = _this$props2.vertical;\n\n if (!verticalPoints || !verticalPoints.length) {\n return null;\n }\n\n var items = verticalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this2.props), {}, {\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: \"line-\".concat(i),\n index: i\n });\n\n return CartesianGrid.renderLineItem(vertical, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-vertical\"\n }, items);\n }\n /**\n * Draw vertical grid stripes filled by colors\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical stripes\n */\n\n }, {\n key: \"renderVerticalStripes\",\n value: function renderVerticalStripes(verticalPoints) {\n var verticalFill = this.props.verticalFill;\n\n if (!verticalFill || !verticalFill.length) {\n return null;\n }\n\n var _this$props3 = this.props,\n fillOpacity = _this$props3.fillOpacity,\n x = _this$props3.x,\n y = _this$props3.y,\n width = _this$props3.width,\n height = _this$props3.height;\n var verticalPointsUpdated = verticalPoints.slice().sort(function (a, b) {\n return a - b;\n });\n\n if (x !== verticalPointsUpdated[0]) {\n verticalPointsUpdated.unshift(0);\n }\n\n var items = verticalPointsUpdated.map(function (entry, i) {\n var lineWidth = verticalPointsUpdated[i + 1] ? verticalPointsUpdated[i + 1] - entry : x + width - entry;\n\n if (lineWidth <= 0) {\n return null;\n }\n\n var colorIndex = i % verticalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n x: Math.round(entry + x - x),\n y: y,\n width: lineWidth,\n height: height,\n stroke: \"none\",\n fill: verticalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-vertical\"\n }, items);\n }\n /**\n * Draw horizontal grid stripes filled by colors\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal stripes\n */\n\n }, {\n key: \"renderHorizontalStripes\",\n value: function renderHorizontalStripes(horizontalPoints) {\n var horizontalFill = this.props.horizontalFill;\n\n if (!horizontalFill || !horizontalFill.length) {\n return null;\n }\n\n var _this$props4 = this.props,\n fillOpacity = _this$props4.fillOpacity,\n x = _this$props4.x,\n y = _this$props4.y,\n width = _this$props4.width,\n height = _this$props4.height;\n var horizontalPointsUpdated = horizontalPoints.slice().sort(function (a, b) {\n return a - b;\n });\n\n if (y !== horizontalPointsUpdated[0]) {\n horizontalPointsUpdated.unshift(0);\n }\n\n var items = horizontalPointsUpdated.map(function (entry, i) {\n var lineHeight = horizontalPointsUpdated[i + 1] ? horizontalPointsUpdated[i + 1] - entry : y + height - entry;\n\n if (lineHeight <= 0) {\n return null;\n }\n\n var colorIndex = i % horizontalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n y: Math.round(entry + y - y),\n x: x,\n height: lineHeight,\n width: width,\n stroke: \"none\",\n fill: horizontalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-horizontal\"\n }, items);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var fill = this.props.fill;\n\n if (!fill || fill === 'none') {\n return null;\n }\n\n var _this$props5 = this.props,\n fillOpacity = _this$props5.fillOpacity,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n stroke: \"none\",\n fill: fill,\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n horizontal = _this$props6.horizontal,\n vertical = _this$props6.vertical,\n horizontalCoordinatesGenerator = _this$props6.horizontalCoordinatesGenerator,\n verticalCoordinatesGenerator = _this$props6.verticalCoordinatesGenerator,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n offset = _this$props6.offset,\n chartWidth = _this$props6.chartWidth,\n chartHeight = _this$props6.chartHeight;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0 || !isNumber(x) || x !== +x || !isNumber(y) || y !== +y) {\n return null;\n }\n\n var _this$props7 = this.props,\n horizontalPoints = _this$props7.horizontalPoints,\n verticalPoints = _this$props7.verticalPoints; // No horizontal points are specified\n\n if ((!horizontalPoints || !horizontalPoints.length) && _isFunction(horizontalCoordinatesGenerator)) {\n horizontalPoints = horizontalCoordinatesGenerator({\n yAxis: yAxis,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n });\n } // No vertical points are specified\n\n\n if ((!verticalPoints || !verticalPoints.length) && _isFunction(verticalCoordinatesGenerator)) {\n verticalPoints = verticalCoordinatesGenerator({\n xAxis: xAxis,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n });\n }\n\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid\"\n }, this.renderBackground(), horizontal && this.renderHorizontal(horizontalPoints), vertical && this.renderVertical(verticalPoints), horizontal && this.renderHorizontalStripes(horizontalPoints), vertical && this.renderVerticalStripes(verticalPoints));\n }\n }], [{\n key: \"renderLineItem\",\n value: function renderLineItem(option, props) {\n var lineItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n lineItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n lineItem = option(props);\n } else {\n var x1 = props.x1,\n y1 = props.y1,\n x2 = props.x2,\n y2 = props.y2,\n key = props.key,\n others = _objectWithoutProperties(props, [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"]);\n\n lineItem = /*#__PURE__*/React.createElement(\"line\", _extends({}, filterProps(others), {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n fill: \"none\",\n key: key\n }));\n }\n\n return lineItem;\n }\n }]);\n\n return CartesianGrid;\n}(PureComponent);\nCartesianGrid.displayName = 'CartesianGrid';\nCartesianGrid.defaultProps = {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n stroke: '#ccc',\n fill: 'none',\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: []\n};","import \"./ProductionChart.scss\";\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport { useSelector } from \"react-redux\";\n\nconst ProductionChart = () => {\n const roofInfo = useSelector((state) => state.Roof.roofInfo);\n let panelCount = useSelector((state) => state.Order.panelCount);\n let orderInfo = useSelector((state) => state.Order);\n let data;\n let months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ];\n\n if (Object.keys(roofInfo).length > 0 && !roofInfo.message) {\n for (const key in roofInfo.paneler) {\n if (roofInfo.paneler[key].antallPaneler === +panelCount) {\n data = roofInfo.paneler[key].produksjon.filter(\n (item) => item.month !== \"sum\"\n );\n }\n }\n }\n\n for (const key in data) {\n data[key].month = months[key];\n }\n\n return (\n <LineChart\n width={390}\n height={240}\n data={data}\n margin={{\n top: 35,\n right: 30,\n bottom: 0,\n left: 0,\n }}\n >\n <CartesianGrid strokeDasharray=\"0\" vertical={false} />\n <XAxis\n dataKey=\"month\"\n interval={0}\n angle={-30}\n tickLine={false}\n fontSize={14}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n label={{ value: \"kWh pr. mnd.\", angle: -90, position: \"insideLeft\" }}\n />\n <Tooltip />\n <Legend />\n <Line\n type=\"monotone\"\n dataKey=\"kWhsnittmnd\"\n stroke=\"#da3b21\"\n activeDot={{ r: 8 }}\n dot={false}\n name=\"Produksjon\"\n strokeWidth={4}\n />\n {orderInfo.partnerId === 10005 ? (\n \"\"\n ) : (\n <Line\n type=\"monotone\"\n dataKey=\"kWhm2snittmnd\"\n stroke=\"#3669c9\"\n dot={false}\n name=\"Solinnstraling/m²\"\n strokeWidth={4}\n />\n )}\n <text\n x=\"180\"\n y=\"0\"\n dominantBaseline=\"hanging\"\n fontSize=\"16\"\n fontWeight=\"bold\"\n >\n Estimert produksjon og solinnstrÃ¥ling\n </text>\n </LineChart>\n );\n};\n\nexport default ProductionChart;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","/**\n * Get the Window object of browser\n * @param node The DOM element\n * @returns The Window object of browser\n */\nexport default function getWindow(node) {\n if (node === (node === null || node === void 0 ? void 0 : node.window)) {\n return node;\n }\n\n return (node === null || node === void 0 ? void 0 : node.nodeType) === 9 ? (node === null || node === void 0 ? void 0 : node.defaultView) || (node === null || node === void 0 ? void 0 : node.parentWindow) : null;\n}","/**\n * Checks if the current environment is in the browser and can access and modify the DOM.\n */\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default canUseDOM;","import canUseDOM from './canUseDOM';\n\nvar fallback = function fallback(context, node) {\n if (!node) return false;\n\n do {\n if (node === context) {\n return true;\n }\n } while (node.parentNode && (node = node.parentNode));\n\n return false;\n};\n/**\n * Checks if an element contains another given element.\n *\n * @param context The context element\n * @param node The element to check\n * @returns `true` if the given element is contained, `false` otherwise\n */\n\n\nvar contains = function contains(context, node) {\n if (!node) return false;\n\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n }\n\n return fallback(context, node);\n};\n\nexport default (function () {\n return canUseDOM ? contains : fallback;\n})();","import ownerDocument from './ownerDocument';\nimport getWindow from './getWindow';\nimport contains from './contains';\n\n/**\n * Get the offset of a DOM element\n * @param node The DOM element\n * @returns The offset of the DOM element\n */\nexport default function getOffset(node) {\n var doc = ownerDocument(node);\n var win = getWindow(doc);\n var docElem = doc && doc.documentElement;\n var box = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n };\n\n if (!doc) {\n return null;\n } // Make sure it's not a disconnected DOM node\n\n\n if (!contains(docElem, node)) {\n return box;\n }\n\n if ((node === null || node === void 0 ? void 0 : node.getBoundingClientRect) !== undefined) {\n box = node.getBoundingClientRect();\n }\n\n if ((box.width || box.height) && docElem && win) {\n box = {\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0),\n width: (box.width === null ? node.offsetWidth : box.width) || 0,\n height: (box.height === null ? node.offsetHeight : box.height) || 0\n };\n }\n\n return box;\n}","/**\n * Returns the top-level document object of the node.\n * @param node The DOM element\n * @returns The top-level document object of the node\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import getWindow from './getWindow';\nimport getOffset from './getOffset';\n/**\n * Get the width of a DOM element\n * @param node The DOM element\n * @param client Whether to get the client width\n * @returns The width of the DOM element\n */\n\nexport default function getWidth(node, client) {\n var win = getWindow(node);\n\n if (win) {\n return win.innerWidth;\n }\n\n if (client) {\n return node.clientWidth;\n }\n\n var offset = getOffset(node);\n return offset ? offset.width : 0;\n}","import classNames from 'classnames';\nimport curry from 'lodash/curry';\nexport var globalKey = 'rs-';\nexport var getClassNamePrefix = function getClassNamePrefix() {\n // TODO: A prefix that can be replaced at runtime.\n return globalKey;\n};\nexport var defaultClassPrefix = function defaultClassPrefix(name) {\n return \"\" + getClassNamePrefix() + name;\n};\nexport function prefix(pre, className) {\n if (!pre || !className) {\n return '';\n }\n\n if (Array.isArray(className)) {\n return classNames(className.filter(function (name) {\n return !!name;\n }).map(function (name) {\n return pre + \"-\" + name;\n }));\n } // TODO Compatible with V4\n\n\n if (pre[pre.length - 1] === '-') {\n return \"\" + pre + className;\n }\n\n return pre + \"-\" + className;\n}\nexport default curry(prefix);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useEffect } from 'react';\nimport { getClassNamePrefix, prefix } from '../utils/prefix';\nimport { addClass, removeClass, canUseDOM } from '../DOMHelper';\nimport ToastContainer, { toastPlacements } from '../toaster/ToastContainer';\nimport { usePortal } from '../utils';\nvar CustomContext = /*#__PURE__*/React.createContext({});\nvar themes = ['light', 'dark', 'high-contrast'];\n\nvar CustomProvider = function CustomProvider(props) {\n var children = props.children,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? getClassNamePrefix() : _props$classPrefix,\n theme = props.theme,\n container = props.toastContainer,\n rest = _objectWithoutPropertiesLoose(props, [\"children\", \"classPrefix\", \"theme\", \"toastContainer\"]);\n\n var toasters = React.useRef(new Map());\n\n var _usePortal = usePortal({\n container: container,\n waitMount: true\n }),\n Portal = _usePortal.Portal;\n\n var value = React.useMemo(function () {\n return _extends({\n classPrefix: classPrefix,\n theme: theme,\n toasters: toasters\n }, rest);\n }, [classPrefix, theme, rest]);\n useEffect(function () {\n if (canUseDOM && theme) {\n addClass(document.body, prefix(classPrefix, \"theme-\" + theme)); // Remove the className that will cause style conflicts\n\n themes.forEach(function (t) {\n if (t !== theme) {\n removeClass(document.body, prefix(classPrefix, \"theme-\" + t));\n }\n });\n }\n }, [classPrefix, theme]);\n return /*#__PURE__*/React.createElement(CustomContext.Provider, {\n value: value\n }, children, /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rs-toast-provider\"\n }, toastPlacements.map(function (placement) {\n return /*#__PURE__*/React.createElement(ToastContainer, {\n key: placement,\n placement: placement,\n ref: function ref(_ref) {\n toasters.current.set(placement, _ref);\n }\n });\n }))));\n};\n\nexport { CustomContext };\nexport default CustomProvider;","import { useCallback, useContext } from 'react';\nimport classNames from 'classnames';\nimport { prefix as addPrefix } from './prefix';\nimport { CustomContext } from '../CustomProvider/CustomProvider';\n\n/**\n * Add a prefix to all classNames.\n *\n * @param str prefix of className\n * @returns { withClassPrefix, merge, prefix }\n * - withClassPrefix: A function of combining className and adding a prefix to each className.\n * At the same time, the default `classPrefix` is the first className.\n * - merge: A merge className function.\n * - prefix: Add a prefix to className\n * - rootPrefix\n */\nfunction useClassNames(str) {\n var _ref = useContext(CustomContext) || {},\n _ref$classPrefix = _ref.classPrefix,\n classPrefix = _ref$classPrefix === void 0 ? 'rs' : _ref$classPrefix;\n\n var componentName = addPrefix(classPrefix, str);\n /**\n * @example\n *\n * if str = 'button':\n * prefix('red', { active: true }) => 'rs-button-red rs-button-active'\n */\n\n var prefix = useCallback(function () {\n var mergeClasses = arguments.length ? classNames.apply(void 0, arguments).split(' ').map(function (item) {\n return addPrefix(componentName, item);\n }) : [];\n return mergeClasses.filter(function (cls) {\n return cls;\n }).join(' ');\n }, [componentName]);\n /**\n * @example\n *\n * if str = 'button':\n * withClassPrefix('red', { active: true }) => 'rs-button rs-button-red rs-button-active'\n */\n\n var withClassPrefix = useCallback(function () {\n for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {\n classes[_key] = arguments[_key];\n }\n\n var mergeClasses = prefix(classes);\n return mergeClasses ? componentName + \" \" + mergeClasses : componentName;\n }, [componentName, prefix]);\n /**\n * @example\n * rootPrefix('btn') => 'rs-btn'\n * rootPrefix('btn', { active: true }) => 'rs-btn rs-active'\n */\n\n var rootPrefix = function rootPrefix() {\n var mergeClasses = arguments.length ? classNames.apply(void 0, arguments).split(' ').map(function (item) {\n return addPrefix(classPrefix, item);\n }) : [];\n return mergeClasses.filter(function (cls) {\n return cls;\n }).join(' ');\n };\n\n return {\n withClassPrefix: withClassPrefix,\n merge: classNames,\n prefix: prefix,\n rootPrefix: rootPrefix\n };\n}\n\nexport default useClassNames;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useClassNames } from '../utils';\nvar ProgressBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _extends2;\n\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'div' : _props$as,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'slider-progress-bar' : _props$classPrefix,\n vertical = props.vertical,\n rtl = props.rtl,\n _props$end = props.end,\n end = _props$end === void 0 ? 0 : _props$end,\n _props$start = props.start,\n start = _props$start === void 0 ? 0 : _props$start,\n style = props.style,\n className = props.className;\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n withClassPrefix = _useClassNames.withClassPrefix;\n\n var sizeKey = vertical ? 'height' : 'width';\n var dirKey = rtl ? 'right' : 'left';\n var startKey = vertical ? 'bottom' : dirKey;\n\n var styles = _extends({}, style, (_extends2 = {}, _extends2[startKey] = start + \"%\", _extends2[sizeKey] = end - start + \"%\", _extends2));\n\n var classes = merge(className, withClassPrefix());\n return /*#__PURE__*/React.createElement(Component, {\n ref: ref,\n style: styles,\n className: classes\n });\n});\nProgressBar.displayName = 'ProgressBar';\nProgressBar.propTypes = {\n as: PropTypes.elementType,\n classPrefix: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n vertical: PropTypes.bool,\n rtl: PropTypes.bool,\n start: PropTypes.number,\n end: PropTypes.number\n};\nexport default ProgressBar;","/**\n * Bind `target` event `eventName`'s callback `listener`.\n * @param target The DOM element\n * @param eventType The event name\n * @param listener The event listener\n * @param options The event options\n * @returns The event listener\n */\nexport default function on(target, eventType, listener, options) {\n if (options === void 0) {\n options = false;\n }\n\n target.addEventListener(eventType, listener, options);\n return {\n off: function off() {\n target.removeEventListener(eventType, listener, options);\n }\n };\n}","// the only reliable means to get the global object is\n// `Function('return this')()`\n// However, this causes CSP violations in Chrome apps.\n// https://github.com/tc39/proposal-global\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n throw new Error('unable to locate global object');\n}\n\nexport default getGlobal;","import getGlobal from './utils/getGlobal';\nvar g = getGlobal();\n/**\n * @deprecated use `cancelAnimationFrame` instead\n */\n\nvar cancelAnimationFramePolyfill = g.cancelAnimationFrame || g.clearTimeout;\nexport default cancelAnimationFramePolyfill;","var _this = this;\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return _this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nexport default emptyFunction;","import emptyFunction from './utils/emptyFunction';\nimport getGlobal from './utils/getGlobal';\nvar g = getGlobal();\nvar lastTime = 0;\n\nfunction _setTimeout(callback) {\n var currTime = Date.now();\n var timeDelay = Math.max(0, 16 - (currTime - lastTime));\n lastTime = currTime + timeDelay;\n return g.setTimeout(function () {\n callback(Date.now());\n }, timeDelay);\n}\n/**\n * @deprecated Use `requestAnimationFrame` instead.\n */\n\n\nvar requestAnimationFramePolyfill = g.requestAnimationFrame || _setTimeout; // Works around a rare bug in Safari 6 where the first request is never invoked.\n\nrequestAnimationFramePolyfill(emptyFunction);\nexport default requestAnimationFramePolyfill;","/**\n * Source code reference from:\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/dom/DOMMouseMoveTracker.js\n */\nimport on from './on';\nimport cancelAnimationFramePolyfill from './cancelAnimationFramePolyfill';\nimport requestAnimationFramePolyfill from './requestAnimationFramePolyfill';\n/**\n * Mouse drag tracker, get the coordinate value where the mouse moves in time.\n *\n * ```typescript\n * const tracker = new DOMMouseMoveTracker(\n * onMove:(deltaX: number, deltaY: number, moveEvent: Object) => void,\n * onMoveEnd:() => void,\n * container: HTMLElement\n * );\n * ```\n */\n\nvar DOMMouseMoveTracker = /*#__PURE__*/function () {\n /**\n * onMove is the callback that will be called on every mouse move.\n * onMoveEnd is called on mouse up when movement has ended.\n */\n function DOMMouseMoveTracker(onMove, onMoveEnd, domNode) {\n var _this = this;\n\n this.isDraggingStatus = false;\n this.animationFrameID = null;\n this.domNode = void 0;\n this.onMove = null;\n this.onMoveEnd = null;\n this.eventMoveToken = null;\n this.eventUpToken = null;\n this.moveEvent = null;\n this.deltaX = 0;\n this.deltaY = 0;\n this.x = 0;\n this.y = 0;\n\n this.isDragging = function () {\n return _this.isDraggingStatus;\n };\n\n this.onMouseMove = function (event) {\n var x = event.clientX;\n var y = event.clientY;\n _this.deltaX += x - _this.x;\n _this.deltaY += y - _this.y;\n\n if (_this.animationFrameID === null) {\n // The mouse may move faster then the animation frame does.\n // Use `requestAnimationFramePolyfill` to avoid over-updating.\n _this.animationFrameID = requestAnimationFramePolyfill(_this.didMouseMove);\n }\n\n _this.x = x;\n _this.y = y;\n _this.moveEvent = event;\n event.preventDefault();\n };\n\n this.didMouseMove = function () {\n _this.animationFrameID = null;\n\n _this.onMove(_this.deltaX, _this.deltaY, _this.moveEvent);\n\n _this.deltaX = 0;\n _this.deltaY = 0;\n };\n\n this.onMouseUp = function (event) {\n if (_this.animationFrameID) {\n _this.didMouseMove();\n }\n\n _this.onMoveEnd && _this.onMoveEnd(event);\n };\n\n this.domNode = domNode;\n this.onMove = onMove;\n this.onMoveEnd = onMoveEnd;\n }\n /**\n * This is to set up the listeners for listening to mouse move\n * and mouse up signaling the movement has ended. Please note that these\n * listeners are added at the document.body level. It takes in an event\n * in order to grab inital state.\n */\n\n\n var _proto = DOMMouseMoveTracker.prototype;\n\n _proto.captureMouseMoves = function captureMouseMoves(event) {\n if (!this.eventMoveToken && !this.eventUpToken) {\n this.eventMoveToken = on(this.domNode, 'mousemove', this.onMouseMove);\n this.eventUpToken = on(this.domNode, 'mouseup', this.onMouseUp);\n }\n\n if (!this.isDraggingStatus) {\n this.deltaX = 0;\n this.deltaY = 0;\n this.isDraggingStatus = true;\n this.x = event.clientX;\n this.y = event.clientY;\n }\n\n event.preventDefault();\n }\n /**\n * These releases all of the listeners on document.body.\n */\n ;\n\n _proto.releaseMouseMoves = function releaseMouseMoves() {\n if (this.eventMoveToken) {\n this.eventMoveToken.off();\n this.eventMoveToken = null;\n }\n\n if (this.eventUpToken) {\n this.eventUpToken.off();\n this.eventUpToken = null;\n }\n\n if (this.animationFrameID !== null) {\n cancelAnimationFramePolyfill(this.animationFrameID);\n this.animationFrameID = null;\n }\n\n if (this.isDraggingStatus) {\n this.isDraggingStatus = false;\n this.x = 0;\n this.y = 0;\n }\n }\n /**\n * Returns whether or not if the mouse movement is being tracked.\n */\n ;\n\n return DOMMouseMoveTracker;\n}();\n\nexport default DOMMouseMoveTracker;","import { hyphenate } from './stringFormatter';\nvar msPattern = /^ms-/;\nexport default (function (string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n});","/* eslint-disable */\n\n/**\n * @example\n * underscoreName('getList');\n * => get_list\n */\nexport function underscore(string) {\n return string.replace(/([A-Z])/g, '_$1').toLowerCase();\n}\n/**\n * @example\n * camelize('font-size');\n * => fontSize\n */\n\nexport function camelize(string) {\n return string.replace(/\\-(\\w)/g, function (_char) {\n return _char.slice(1).toUpperCase();\n });\n}\n/**\n * @example\n * camelize('fontSize');\n * => font-size\n */\n\nexport function hyphenate(string) {\n return string.replace(/([A-Z])/g, '-$1').toLowerCase();\n}\n/**\n * @example\n * merge('{0} - A front-end {1} ','Suite','framework');\n * => Suite - A front-end framework\n */\n\nexport function merge(pattern) {\n var pointer = 0,\n i;\n\n for (i = 1; i < arguments.length; i += 1) {\n pattern = pattern.split(\"{\" + pointer + \"}\").join(arguments[i]);\n pointer += 1;\n }\n\n return pattern;\n}","function _removeStyle(node, key) {\n var _style, _style$removeProperty;\n\n (_style = node.style) === null || _style === void 0 ? void 0 : (_style$removeProperty = _style.removeProperty) === null || _style$removeProperty === void 0 ? void 0 : _style$removeProperty.call(_style, key);\n}\n/**\n * Remove a style property from a DOM element\n * @param node The DOM element\n * @param keys key(s) typeof [string , array]\n */\n\n\nexport default function removeStyle(node, keys) {\n if (typeof keys === 'string') {\n _removeStyle(node, keys);\n } else if (Array.isArray(keys)) {\n keys.forEach(function (key) {\n return _removeStyle(node, key);\n });\n }\n}","import hyphenateStyleName from './utils/hyphenateStyleName';\nimport removeStyle from './removeStyle';\n\nfunction addStyle(node, property, value) {\n var css = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n throw new Error('value is undefined');\n }\n\n (props = {})[property] = value;\n }\n\n if (typeof props === 'object') {\n for (var _key in props) {\n if (Object.prototype.hasOwnProperty.call(props, _key)) {\n if (!props[_key] && props[_key] !== 0) {\n removeStyle(node, hyphenateStyleName(_key));\n } else {\n css += hyphenateStyleName(_key) + \":\" + props[_key] + \";\";\n }\n }\n }\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default addStyle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useClassNames } from '../utils';\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'div' : _props$as,\n className = props.className,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'tooltip' : _props$classPrefix,\n children = props.children,\n style = props.style,\n visible = props.visible,\n _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? true : _props$arrow,\n rest = _objectWithoutPropertiesLoose(props, [\"as\", \"className\", \"classPrefix\", \"children\", \"style\", \"visible\", \"arrow\"]);\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n withClassPrefix = _useClassNames.withClassPrefix;\n\n var classes = merge(className, withClassPrefix({\n arrow: arrow\n }));\n\n var styles = _extends({\n opacity: visible ? 1 : undefined\n }, style);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n role: \"tooltip\"\n }, rest, {\n ref: ref,\n className: classes,\n style: styles\n }), children);\n});\nTooltip.displayName = 'Tooltip';\nTooltip.propTypes = {\n visible: PropTypes.bool,\n classPrefix: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.node,\n arrow: PropTypes.bool\n};\nexport default Tooltip;","import Tooltip from './Tooltip';\nexport default Tooltip;","var toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport default function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (typeof a === 'function') a(value);\n if (typeof b === 'function') b(value);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nvar rangeStyles = {\n position: 'absolute',\n overflow: 'hidden',\n width: '100%',\n height: '100%',\n clip: 'rect(0, 0, 0, 0)'\n};\nvar Input = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var style = props.style,\n rest = _objectWithoutPropertiesLoose(props, [\"style\"]);\n\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"range\",\n readOnly: true,\n ref: ref,\n style: _extends({}, rangeStyles, style)\n }, rest));\n});\nInput.displayName = 'Input';\nexport default Input;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useState, useRef, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport DOMMouseMoveTracker from 'dom-lib/DOMMouseMoveTracker';\nimport addStyle from 'dom-lib/addStyle';\nimport getWidth from 'dom-lib/getWidth';\nimport Tooltip from '../Tooltip';\nimport { useClassNames, mergeRefs } from '../utils';\nimport Input from './Input';\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _extends2;\n\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'div' : _props$as,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,\n className = props.className,\n disabled = props.disabled,\n style = props.style,\n children = props.children,\n position = props.position,\n vertical = props.vertical,\n tooltip = props.tooltip,\n rtl = props.rtl,\n value = props.value,\n role = props.role,\n tabIndex = props.tabIndex,\n renderTooltip = props.renderTooltip,\n onDragStart = props.onDragStart,\n onDragMove = props.onDragMove,\n onDragEnd = props.onDragEnd,\n onKeyDown = props.onKeyDown,\n dataRange = props['data-range'],\n dateKey = props['data-key'],\n rest = _objectWithoutPropertiesLoose(props, [\"as\", \"classPrefix\", \"className\", \"disabled\", \"style\", \"children\", \"position\", \"vertical\", \"tooltip\", \"rtl\", \"value\", \"role\", \"tabIndex\", \"renderTooltip\", \"onDragStart\", \"onDragMove\", \"onDragEnd\", \"onKeyDown\", \"data-range\", \"data-key\"]);\n\n var _useState = useState(false),\n active = _useState[0],\n setActive = _useState[1];\n\n var rootRef = useRef(null);\n var horizontalKey = rtl ? 'right' : 'left';\n var direction = vertical ? 'bottom' : horizontalKey;\n\n var styles = _extends({}, style, (_extends2 = {}, _extends2[direction] = position + \"%\", _extends2));\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n prefix = _useClassNames.prefix;\n\n var handleClasses = merge(className, prefix('handle'), {\n active: active\n });\n var tooltipRef = useRef(null);\n var mouseMoveTracker = useRef();\n var releaseMouseMoves = useCallback(function () {\n var _mouseMoveTracker$cur;\n\n (_mouseMoveTracker$cur = mouseMoveTracker.current) === null || _mouseMoveTracker$cur === void 0 ? void 0 : _mouseMoveTracker$cur.releaseMouseMoves();\n mouseMoveTracker.current = null;\n }, []);\n var setTooltipPosition = useCallback(function () {\n var tooltipElement = tooltipRef.current;\n\n if (tooltip && tooltipElement) {\n var width = getWidth(tooltipElement);\n addStyle(tooltipElement, 'left', \"-\" + width / 2 + \"px\");\n }\n }, [tooltip]);\n var handleDragMove = useCallback(function (_deltaX, _deltaY, event) {\n var _mouseMoveTracker$cur2;\n\n if ((_mouseMoveTracker$cur2 = mouseMoveTracker.current) !== null && _mouseMoveTracker$cur2 !== void 0 && _mouseMoveTracker$cur2.isDragging()) {\n var _rootRef$current;\n\n onDragMove === null || onDragMove === void 0 ? void 0 : onDragMove(event, (_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.dataset);\n setTooltipPosition();\n }\n }, [onDragMove, setTooltipPosition]);\n var handleDragEnd = useCallback(function (event) {\n var _rootRef$current2;\n\n setActive(false);\n releaseMouseMoves();\n onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, (_rootRef$current2 = rootRef.current) === null || _rootRef$current2 === void 0 ? void 0 : _rootRef$current2.dataset);\n }, [onDragEnd, releaseMouseMoves]);\n var getMouseMoveTracker = useCallback(function () {\n return mouseMoveTracker.current || new DOMMouseMoveTracker(handleDragMove, handleDragEnd, document.body);\n }, [handleDragEnd, handleDragMove]);\n var handleMouseDown = useCallback(function (event) {\n var _mouseMoveTracker$cur3, _rootRef$current3;\n\n if (disabled) {\n return;\n }\n\n mouseMoveTracker.current = getMouseMoveTracker();\n (_mouseMoveTracker$cur3 = mouseMoveTracker.current) === null || _mouseMoveTracker$cur3 === void 0 ? void 0 : _mouseMoveTracker$cur3.captureMouseMoves(event);\n (_rootRef$current3 = rootRef.current) === null || _rootRef$current3 === void 0 ? void 0 : _rootRef$current3.focus();\n setActive(true);\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event);\n }, [disabled, getMouseMoveTracker, onDragStart]);\n var handleMouseEnter = useCallback(function () {\n setTooltipPosition();\n }, [setTooltipPosition]);\n useEffect(function () {\n return function () {\n releaseMouseMoves();\n };\n }, [releaseMouseMoves]);\n return /*#__PURE__*/React.createElement(Component, {\n role: role,\n tabIndex: tabIndex,\n ref: mergeRefs(ref, rootRef),\n className: handleClasses,\n onMouseDown: handleMouseDown,\n onMouseEnter: handleMouseEnter,\n onKeyDown: onKeyDown,\n style: styles,\n \"data-range\": dataRange,\n \"data-key\": dateKey\n }, tooltip && /*#__PURE__*/React.createElement(Tooltip, {\n \"aria-hidden\": \"true\",\n ref: tooltipRef,\n className: merge(prefix('tooltip'), 'placement-top')\n }, renderTooltip ? renderTooltip(value) : value), /*#__PURE__*/React.createElement(Input, _extends({\n tabIndex: -1,\n value: value\n }, rest)), children);\n});\nHandle.displayName = 'Handle';\nHandle.propTypes = {\n as: PropTypes.elementType,\n className: PropTypes.string,\n classPrefix: PropTypes.string,\n children: PropTypes.node,\n disabled: PropTypes.bool,\n vertical: PropTypes.bool,\n tooltip: PropTypes.bool,\n rtl: PropTypes.bool,\n position: PropTypes.number,\n value: PropTypes.number,\n renderTooltip: PropTypes.func,\n style: PropTypes.object,\n onDragMove: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func\n};\nexport default Handle;","export var precisionMath = function precisionMath(value) {\n return parseFloat(value.toFixed(10));\n};\n\nfunction checkValue(value, min, max) {\n if (typeof value === 'undefined') {\n return value;\n }\n\n if (value < min) {\n return min;\n }\n\n if (value > max) {\n return max;\n }\n\n return value;\n}\n\nexport { checkValue };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useClassNames } from '../utils';\nvar Mark = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'span' : _props$as,\n mark = props.mark,\n last = props.last,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'slider-mark' : _props$classPrefix,\n className = props.className,\n renderMark = props.renderMark;\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n prefix = _useClassNames.prefix,\n withClassPrefix = _useClassNames.withClassPrefix;\n\n var classes = merge(className, withClassPrefix({\n last: last\n }));\n\n if (renderMark) {\n return /*#__PURE__*/React.createElement(Component, {\n ref: ref,\n className: classes\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: prefix('content')\n }, renderMark(mark)));\n }\n\n return null;\n});\nMark.displayName = 'Mark';\nMark.propTypes = {\n as: PropTypes.elementType,\n classPrefix: PropTypes.string,\n className: PropTypes.string,\n mark: PropTypes.number,\n last: PropTypes.bool,\n renderMark: PropTypes.func\n};\nexport default Mark;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useClassNames } from '../utils';\nimport { precisionMath } from './utils';\nimport Mark from './Mark';\nvar Graduated = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'div' : _props$as,\n step = props.step,\n min = props.min,\n max = props.max,\n count = props.count,\n value = props.value,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,\n className = props.className,\n renderMark = props.renderMark;\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n prefix = _useClassNames.prefix;\n\n var activeIndexs = [];\n var startIndex = 0;\n var endIndex = 0;\n\n if (Array.isArray(value)) {\n var start = value[0],\n end = value[1];\n startIndex = precisionMath(start / step - min / step);\n endIndex = precisionMath(end / step - min / step);\n activeIndexs.push(precisionMath(Math.ceil((start - min) / (max - min) * count)));\n activeIndexs.push(precisionMath(Math.ceil((end - min) / (max - min) * count)));\n } else {\n endIndex = precisionMath(value / step - min / step);\n activeIndexs.push(precisionMath(Math.ceil((value - min) / (max - min) * count)));\n }\n\n var graduatedItems = [];\n\n for (var i = 0; i < count; i += 1) {\n var _classes = prefix({\n pass: i >= startIndex && i <= endIndex,\n active: ~activeIndexs.indexOf(i)\n });\n\n var _mark = precisionMath(i * step + min);\n\n var lastMark = Math.min(max, _mark + step);\n var last = i === count - 1;\n graduatedItems.push( /*#__PURE__*/React.createElement(\"li\", {\n className: _classes,\n key: i\n }, /*#__PURE__*/React.createElement(Mark, {\n mark: _mark,\n renderMark: renderMark\n }), last ? /*#__PURE__*/React.createElement(Mark, {\n mark: lastMark,\n renderMark: renderMark,\n last: last\n }) : null));\n }\n\n var classes = merge(className, prefix('graduator'));\n return /*#__PURE__*/React.createElement(Component, {\n ref: ref,\n className: classes\n }, /*#__PURE__*/React.createElement(\"ol\", null, graduatedItems));\n});\nGraduated.displayName = 'Graduated';\nGraduated.propTypes = {\n step: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n count: PropTypes.number,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n renderMark: PropTypes.func\n};\nexport default Graduated;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","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};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\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\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\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @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\n return valuesArray[index];\n };\n}","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}; // 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.\n\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};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // 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\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\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;","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\n if (!matchResult) {\n return null;\n }\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}\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\n return undefined;\n}\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\n return undefined;\n}","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;","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}","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, d MMMM yyyy',\n long: 'd MMMM yyyy',\n medium: 'd MMM yyyy',\n short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\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;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport enGB from 'date-fns/locale/en-GB';\nvar Calendar = {\n sunday: 'Su',\n monday: 'Mo',\n tuesday: 'Tu',\n wednesday: 'We',\n thursday: 'Th',\n friday: 'Fr',\n saturday: 'Sa',\n ok: 'OK',\n today: 'Today',\n yesterday: 'Yesterday',\n hours: 'Hours',\n minutes: 'Minutes',\n seconds: 'Seconds',\n\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 **/\n formattedMonthPattern: 'MMM yyyy',\n formattedDayPattern: 'dd MMM yyyy',\n dateLocale: enGB\n};\nexport default {\n common: {\n loading: 'Loading...',\n emptyMessage: 'No data found'\n },\n Plaintext: {\n unfilled: 'Unfilled',\n notSelected: 'Not selected',\n notUploaded: 'Not uploaded'\n },\n Pagination: {\n more: 'More',\n prev: 'Previous',\n next: 'Next',\n first: 'First',\n last: 'Last',\n limit: '{0} / page',\n total: 'Total Rows: {0}',\n skip: 'Go to{0}'\n },\n Calendar: Calendar,\n DatePicker: _extends({}, Calendar),\n DateRangePicker: _extends({}, Calendar, {\n last7Days: 'Last 7 Days'\n }),\n Picker: {\n noResultsText: 'No results found',\n placeholder: 'Select',\n searchPlaceholder: 'Search',\n checkAll: 'All'\n },\n InputPicker: {\n newItem: 'New item',\n createOption: 'Create option \"{0}\"'\n },\n Uploader: {\n inited: 'Initial',\n progress: 'Uploading',\n error: 'Error',\n complete: 'Finished',\n emptyFile: 'Empty',\n upload: 'Upload'\n },\n CloseButton: {\n closeLabel: 'Close'\n },\n Breadcrumb: {\n expandText: 'Show path'\n },\n Toggle: {\n on: 'Open',\n off: 'Close'\n }\n};","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United Kingdom).\n * @language English\n * @iso-639-2 eng\n * @author Alex [@glintik]{@link https://github.com/glintik}\n */\n\nvar locale = {\n code: 'en-GB',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\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 */\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\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 */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\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\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\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 */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\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 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 */\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 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 */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","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 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 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\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 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 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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\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\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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}","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\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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\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 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\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}","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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\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 */\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 var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\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\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\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/*\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 */\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\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\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\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(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\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); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\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\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\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\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\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\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\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\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\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\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\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\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\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\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\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\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\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\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\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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\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\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\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\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\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\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\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\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\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\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\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\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\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\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\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\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};\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\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\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\n return formatTimezone(offset, dirtyDelimiter);\n}\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}\n\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\n\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\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\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\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}","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}","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;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","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/**\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\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\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\n\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\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\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\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\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\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n\n return target;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n\n _defineProperty(this, \"subPriority\", 0);\n }\n\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n\n var _super = _createSuper(ValueSetter);\n\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n\n _classCallCheck(this, ValueSetter);\n\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n\n return _this;\n }\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\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n\n function DateToSystemTimezoneSetter() {\n var _this2;\n\n _classCallCheck(this, DateToSystemTimezoneSetter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n\n return _this2;\n }\n\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\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\n return DateToSystemTimezoneSetter;\n}(Setter);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\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\n if (!result) {\n return null;\n }\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\n return Parser;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n\n var _super = _createSuper(EraParser);\n\n function EraParser() {\n var _this;\n\n _classCallCheck(this, EraParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n\n return _this;\n }\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\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\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\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 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 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};","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\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 */\n\nexport var daysInYear = 365.2425;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","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\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\n if (!matchResult) {\n return null;\n }\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\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\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\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n\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\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n\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\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\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; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\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\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(YearParser);\n\n function YearParser() {\n var _this;\n\n _classCallCheck(this, YearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\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\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\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\n return YearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(LocalWeekYearParser);\n\n function LocalWeekYearParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\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\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\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\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\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\n return LocalWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\n\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n\n var _super = _createSuper(ISOWeekYearParser);\n\n function ISOWeekYearParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\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\n return ISOWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n\n var _super = _createSuper(ExtendedYearParser);\n\n function ExtendedYearParser() {\n var _this;\n\n _classCallCheck(this, ExtendedYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\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\n return ExtendedYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n\n var _super = _createSuper(QuarterParser);\n\n function QuarterParser() {\n var _this;\n\n _classCallCheck(this, QuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n return QuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n\n var _super = _createSuper(StandAloneQuarterParser);\n\n function StandAloneQuarterParser() {\n var _this;\n\n _classCallCheck(this, StandAloneQuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\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\n return StandAloneQuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(MonthParser);\n\n function MonthParser() {\n var _this;\n\n _classCallCheck(this, MonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n return _this;\n }\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\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\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\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\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\n return MonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(StandAloneMonthParser);\n\n function StandAloneMonthParser() {\n var _this;\n\n _classCallCheck(this, StandAloneMonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\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\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\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\n return StandAloneMonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n\n var _super = _createSuper(LocalWeekParser);\n\n function LocalWeekParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\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\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\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\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n\n var _super = _createSuper(ISOWeekParser);\n\n function ISOWeekParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\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\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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]; // Day of the month\n\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n\n var _super = _createSuper(DateParser);\n\n function DateParser() {\n var _this;\n\n _classCallCheck(this, DateParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\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\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\n return DateParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(DayOfYearParser);\n\n function DayOfYearParser() {\n var _this;\n\n _classCallCheck(this, DayOfYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\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\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\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\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\n\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n\n var _super = _createSuper(DayParser);\n\n function DayParser() {\n var _this;\n\n _classCallCheck(this, DayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\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\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\n return DayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\n\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n\n var _super = _createSuper(LocalDayParser);\n\n function LocalDayParser() {\n var _this;\n\n _classCallCheck(this, LocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n\n return _this;\n }\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\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\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\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\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\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\n return LocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\n\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n\n var _super = _createSuper(StandAloneLocalDayParser);\n\n function StandAloneLocalDayParser() {\n var _this;\n\n _classCallCheck(this, StandAloneLocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n\n return _this;\n }\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\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\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\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\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\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\n return StandAloneLocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\n\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n\n var _super = _createSuper(ISODayParser);\n\n function ISODayParser() {\n var _this;\n\n _classCallCheck(this, ISODayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n\n return _this;\n }\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\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n\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\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n\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\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\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\n if (day % 7 === 0) {\n day = day - 7;\n }\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}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n\n var _super = _createSuper(AMPMParser);\n\n function AMPMParser() {\n var _this;\n\n _classCallCheck(this, AMPMParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\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\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\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\n return AMPMParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n\n var _super = _createSuper(AMPMMidnightParser);\n\n function AMPMMidnightParser() {\n var _this;\n\n _classCallCheck(this, AMPMMidnightParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\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\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\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\n return AMPMMidnightParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\n\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n\n var _super = _createSuper(DayPeriodParser);\n\n function DayPeriodParser() {\n var _this;\n\n _classCallCheck(this, DayPeriodParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n\n return _this;\n }\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\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\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\n return DayPeriodParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(Hour1to12Parser);\n\n function Hour1to12Parser() {\n var _this;\n\n _classCallCheck(this, Hour1to12Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n\n return _this;\n }\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\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\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\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\n return date;\n }\n }]);\n\n return Hour1to12Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(Hour0to23Parser);\n\n function Hour0to23Parser() {\n var _this;\n\n _classCallCheck(this, Hour0to23Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n\n return _this;\n }\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\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\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\n return Hour0to23Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(Hour0To11Parser);\n\n function Hour0To11Parser() {\n var _this;\n\n _classCallCheck(this, Hour0To11Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n\n return _this;\n }\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\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\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\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour0To11Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(Hour1To24Parser);\n\n function Hour1To24Parser() {\n var _this;\n\n _classCallCheck(this, Hour1To24Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n\n return _this;\n }\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\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\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\n return Hour1To24Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(MinuteParser);\n\n function MinuteParser() {\n var _this;\n\n _classCallCheck(this, MinuteParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\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\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\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\n return MinuteParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\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\n var _super = _createSuper(SecondParser);\n\n function SecondParser() {\n var _this;\n\n _classCallCheck(this, SecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\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\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\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\n return SecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n\n var _super = _createSuper(FractionOfSecondParser);\n\n function FractionOfSecondParser() {\n var _this;\n\n _classCallCheck(this, FractionOfSecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\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\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\n return FractionOfSecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\n\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneWithZParser);\n\n function ISOTimezoneWithZParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneWithZParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n\n return _this;\n }\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\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\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\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneWithZParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\n\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneParser);\n\n function ISOTimezoneParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n\n return _this;\n }\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\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\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\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n\n var _super = _createSuper(TimestampSecondsParser);\n\n function TimestampSecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampSecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\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\n return TimestampSecondsParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n\n var _super = _createSuper(TimestampMillisecondsParser);\n\n function TimestampMillisecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampMillisecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\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\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 */\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};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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 */\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\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\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\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); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n\n try {\n var _loop = function _loop() {\n var token = _step.value;\n\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\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\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\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 } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\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\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n } // Check if the remaining input contains something other than whitespace\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\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\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, subFnOptions); // Result is tuple (date, flags)\n\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return utcDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useContext, useCallback } from 'react';\nimport defaultLocale from '../locales/default';\nimport { CustomContext } from '../CustomProvider/CustomProvider';\nimport { format, parse } from '../utils/dateUtils';\n\nvar mergeObject = function mergeObject(list) {\n return list.reduce(function (a, b) {\n a = _extends({}, a, b);\n return a;\n }, {});\n};\n\nvar getDefaultRTL = function getDefaultRTL() {\n return typeof window !== 'undefined' && (document.body.getAttribute('dir') || document.dir) === 'rtl';\n};\n/**\n * A hook to get custom configuration of `<CustomProvider>`\n * @param keys\n */\n\n\nfunction useCustom(keys, overrideLocale) {\n var _locale$Calendar2, _locale$Calendar4;\n\n var _useContext = useContext(CustomContext),\n _useContext$locale = _useContext.locale,\n locale = _useContext$locale === void 0 ? defaultLocale : _useContext$locale,\n _useContext$rtl = _useContext.rtl,\n rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,\n formatDate = _useContext.formatDate,\n parseDate = _useContext.parseDate,\n toasters = _useContext.toasters;\n\n var componentLocale = _extends({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : typeof keys === 'object' ? mergeObject(keys.map(function (key) {\n return locale === null || locale === void 0 ? void 0 : locale[key];\n })) : {}); // Component custom locale\n\n\n if (overrideLocale) {\n componentLocale = mergeObject([componentLocale, overrideLocale]);\n }\n\n var defaultFormatDate = useCallback(function (date, formatStr) {\n var _locale$Calendar;\n\n return format(date, formatStr, {\n locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar = locale.Calendar) === null || _locale$Calendar === void 0 ? void 0 : _locale$Calendar.dateLocale\n });\n }, [(_locale$Calendar2 = locale.Calendar) === null || _locale$Calendar2 === void 0 ? void 0 : _locale$Calendar2.dateLocale]);\n var defaultParseDate = useCallback(function (dateString, formatString) {\n var _locale$Calendar3;\n\n return parse(dateString, formatString, new Date(), {\n locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar3 = locale.Calendar) === null || _locale$Calendar3 === void 0 ? void 0 : _locale$Calendar3.dateLocale\n });\n }, [(_locale$Calendar4 = locale.Calendar) === null || _locale$Calendar4 === void 0 ? void 0 : _locale$Calendar4.dateLocale]);\n return {\n locale: componentLocale,\n rtl: rtl,\n toasters: toasters,\n formatDate: formatDate || defaultFormatDate,\n parseDate: parseDate || defaultParseDate\n };\n}\n\nexport default useCustom;","import { useRef, useState, useCallback } from 'react';\n\nfunction useControlled(controlledValue, defaultValue) {\n var controlledRef = useRef(false);\n controlledRef.current = controlledValue !== undefined;\n\n var _useState = useState(defaultValue),\n uncontrolledValue = _useState[0],\n setUncontrolledValue = _useState[1]; // If it is controlled, this directly returns the attribute value.\n\n\n var value = controlledRef.current ? controlledValue : uncontrolledValue;\n var setValue = useCallback(function (nextValue) {\n // Only update the value in state when it is not under control.\n if (!controlledRef.current) {\n setUncontrolledValue(nextValue);\n }\n }, [controlledRef]);\n return [value, setValue, controlledRef.current];\n}\n\nexport default useControlled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport { useClassNames, useCustom } from '../utils';\n\n/**\n * Make the component display in plain text, and display default characters when there is no children.\n */\nvar Plaintext = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useCustom = useCustom('Plaintext'),\n locale = _useCustom.locale;\n\n var _props$as = props.as,\n Component = _props$as === void 0 ? 'div' : _props$as,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'plaintext' : _props$classPrefix,\n className = props.className,\n children = props.children,\n _props$localeKey = props.localeKey,\n localeKey = _props$localeKey === void 0 ? '' : _props$localeKey,\n _props$placeholder = props.placeholder,\n placeholder = _props$placeholder === void 0 ? locale[localeKey] : _props$placeholder,\n rest = _objectWithoutPropertiesLoose(props, [\"as\", \"classPrefix\", \"className\", \"children\", \"localeKey\", \"placeholder\"]);\n\n var _useClassNames = useClassNames(classPrefix),\n withClassPrefix = _useClassNames.withClassPrefix,\n merge = _useClassNames.merge;\n\n var classes = merge(className, withClassPrefix({\n empty: !children\n }));\n return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n ref: ref,\n className: classes\n }), children ? children : placeholder);\n});\nPlaintext.displayName = 'Plaintext';\nexport default Plaintext;","import Plaintext from './Plaintext';\nexport default Plaintext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useCallback, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport getWidth from 'dom-lib/getWidth';\nimport getHeight from 'dom-lib/getHeight';\nimport getOffset from 'dom-lib/getOffset';\nimport ProgressBar from './ProgressBar';\nimport Handle from './Handle';\nimport Graduated from './Graduated';\nimport { useClassNames, useControlled, useCustom } from '../utils';\nimport { precisionMath, checkValue } from './utils';\nimport Plaintext from '../Plaintext';\nexport var sliderPropTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n className: PropTypes.string,\n classPrefix: PropTypes.string,\n handleClassName: PropTypes.string,\n handleTitle: PropTypes.node,\n barClassName: PropTypes.string,\n handleStyle: PropTypes.object,\n disabled: PropTypes.bool,\n plaintext: PropTypes.bool,\n readOnly: PropTypes.bool,\n graduated: PropTypes.bool,\n tooltip: PropTypes.bool,\n progress: PropTypes.bool,\n vertical: PropTypes.bool,\n onChange: PropTypes.func,\n onChangeCommitted: PropTypes.func,\n renderMark: PropTypes.func,\n renderTooltip: PropTypes.func,\n getAriaValueText: PropTypes.func\n};\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var ariaLabel = props['aria-label'],\n ariaLabelledby = props['aria-labelledby'],\n ariaValuetext = props['aria-valuetext'],\n _props$as = props.as,\n Componnet = _props$as === void 0 ? 'div' : _props$as,\n graduated = props.graduated,\n className = props.className,\n barClassName = props.barClassName,\n progress = props.progress,\n vertical = props.vertical,\n disabled = props.disabled,\n readOnly = props.readOnly,\n plaintext = props.plaintext,\n _props$classPrefix = props.classPrefix,\n classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n handleClassName = props.handleClassName,\n handleStyle = props.handleStyle,\n handleTitle = props.handleTitle,\n _props$tooltip = props.tooltip,\n tooltip = _props$tooltip === void 0 ? true : _props$tooltip,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n _props$defaultValue = props.defaultValue,\n defaultValue = _props$defaultValue === void 0 ? 0 : _props$defaultValue,\n valueProp = props.value,\n _props$max = props.max,\n maxProp = _props$max === void 0 ? 100 : _props$max,\n getAriaValueText = props.getAriaValueText,\n renderTooltip = props.renderTooltip,\n renderMark = props.renderMark,\n onChange = props.onChange,\n onChangeCommitted = props.onChangeCommitted,\n rest = _objectWithoutPropertiesLoose(props, [\"aria-label\", \"aria-labelledby\", \"aria-valuetext\", \"as\", \"graduated\", \"className\", \"barClassName\", \"progress\", \"vertical\", \"disabled\", \"readOnly\", \"plaintext\", \"classPrefix\", \"min\", \"handleClassName\", \"handleStyle\", \"handleTitle\", \"tooltip\", \"step\", \"defaultValue\", \"value\", \"max\", \"getAriaValueText\", \"renderTooltip\", \"renderMark\", \"onChange\", \"onChangeCommitted\"]);\n\n var barRef = useRef(null);\n\n var _useClassNames = useClassNames(classPrefix),\n merge = _useClassNames.merge,\n withClassPrefix = _useClassNames.withClassPrefix,\n prefix = _useClassNames.prefix;\n\n var _useCustom = useCustom('Slider'),\n rtl = _useCustom.rtl;\n\n var classes = merge(className, withClassPrefix({\n vertical: vertical,\n disabled: disabled,\n readOnly: readOnly,\n graduated: graduated,\n 'with-mark': renderMark\n }));\n var max = useMemo(function () {\n return precisionMath(Math.floor((maxProp - min) / step) * step + min);\n }, [maxProp, min, step]);\n /**\n * Returns a valid value that does not exceed the specified range of values.\n */\n\n var getValidValue = useCallback(function (value) {\n return checkValue(value, min, max);\n }, [max, min]);\n\n var _useControlled = useControlled(getValidValue(valueProp), getValidValue(defaultValue)),\n value = _useControlled[0],\n setValue = _useControlled[1];\n\n var count = useMemo(function () {\n return precisionMath((max - min) / step);\n }, [max, min, step]); // Get the height of the progress bar\n\n var getBarHeight = useCallback(function () {\n return barRef.current ? getHeight(barRef.current) : 0;\n }, []); // Get the width of the progress bar\n\n var getBarWidth = useCallback(function () {\n return barRef.current ? getWidth(barRef.current) : 0;\n }, []);\n var getValueByOffset = useCallback(function (offset) {\n var value = 0;\n\n if (isNaN(offset)) {\n return value;\n }\n\n if (vertical) {\n var barHeight = getBarHeight();\n value = Math.round(offset / (barHeight / count)) * step;\n } else {\n var barWidth = getBarWidth();\n value = Math.round(offset / (barWidth / count)) * step;\n }\n\n return precisionMath(value);\n }, [count, getBarHeight, getBarWidth, step, vertical]);\n /**\n * A value within the valid range is calculated from the position triggered by the event.\n */\n\n var getValueByPosition = useCallback(function (event) {\n var barOffset = getOffset(barRef.current);\n var offset = vertical ? barOffset.top + barOffset.height - event.pageY : event.pageX - barOffset.left;\n var offsetValue = rtl && !vertical ? barOffset.width - offset : offset;\n return getValueByOffset(offsetValue) + min;\n }, [getValueByOffset, min, rtl, vertical]);\n /**\n * Callback function that is fired when the mousemove is triggered\n */\n\n var handleChangeValue = useCallback(function (event) {\n if (disabled || readOnly) {\n return;\n }\n\n var nextValue = getValidValue(getValueByPosition(event));\n setValue(nextValue);\n onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);\n }, [disabled, getValidValue, getValueByPosition, onChange, readOnly, setValue]);\n /**\n * Callback function that is fired when the mouseup is triggered\n */\n\n var handleChangeCommitted = useCallback(function (event) {\n if (disabled || readOnly) {\n return;\n }\n\n var nextValue = getValidValue(getValueByPosition(event));\n onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);\n }, [disabled, getValidValue, getValueByPosition, onChangeCommitted, readOnly]);\n var handleKeyDown = useCallback(function (event) {\n var nextValue;\n var increaseKey = rtl ? 'ArrowLeft' : 'ArrowRight';\n var decreaseKey = rtl ? 'ArrowRight' : 'ArrowLeft';\n\n switch (event.key) {\n case 'Home':\n nextValue = min;\n break;\n\n case 'End':\n nextValue = max;\n break;\n\n case increaseKey:\n case 'ArrowUp':\n nextValue = Math.min(max, value + step);\n break;\n\n case decreaseKey:\n case 'ArrowDown':\n nextValue = Math.max(min, value - step);\n break;\n\n default:\n return;\n } // Prevent scroll of the page\n\n\n event.preventDefault();\n setValue(nextValue);\n onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);\n }, [max, min, onChange, rtl, setValue, step, value]);\n\n if (plaintext) {\n return /*#__PURE__*/React.createElement(Plaintext, {\n localeKey: \"notSelected\",\n ref: ref\n }, value);\n }\n\n return /*#__PURE__*/React.createElement(Componnet, _extends({}, rest, {\n ref: ref,\n className: classes,\n role: \"presentation\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: barRef,\n className: merge(barClassName, prefix('bar')),\n onClick: handleChangeValue\n }, progress && /*#__PURE__*/React.createElement(ProgressBar, {\n rtl: rtl,\n vertical: vertical,\n start: 0,\n end: (value - min) / (max - min) * 100\n }), graduated && /*#__PURE__*/React.createElement(Graduated, {\n step: step,\n min: min,\n max: max,\n count: count,\n value: value,\n renderMark: renderMark\n })), /*#__PURE__*/React.createElement(Handle, {\n position: (value - min) / (max - min) * 100,\n className: handleClassName,\n style: handleStyle,\n disabled: disabled,\n vertical: vertical,\n tooltip: tooltip,\n rtl: rtl,\n value: value,\n renderTooltip: renderTooltip,\n onDragMove: handleChangeValue,\n onKeyDown: handleKeyDown,\n onDragEnd: handleChangeCommitted,\n tabIndex: disabled || readOnly ? undefined : 0,\n \"aria-orientation\": vertical ? 'vertical' : 'horizontal',\n \"aria-valuenow\": value,\n \"aria-disabled\": disabled,\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(value) : ariaValuetext,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min\n }, handleTitle));\n});\nSlider.displayName = 'Slider';\nSlider.propTypes = sliderPropTypes;\nexport default Slider;","import getWindow from './getWindow';\nimport getOffset from './getOffset';\n/**\n * Get the height of a DOM element\n * @param node The DOM element\n * @param client Whether to get the client height\n * @returns The height of the DOM element\n */\n\nexport default function getHeight(node, client) {\n var win = getWindow(node);\n\n if (win) {\n return win.innerHeight;\n }\n\n return client ? node.clientHeight : getOffset(node).height;\n}","import Slider from './Slider';\nexport default Slider;","import { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setOrderPanelCount } from \"../../store/Order/action\";\nimport \"./ProgressBar.scss\";\nimport \"rsuite/dist/rsuite.css\";\nimport { Slider } from \"rsuite\";\nimport { setRoofInfo } from \"../../store/Roof/action\";\n\nconst ProgressBar = () => {\n const dispatch = useDispatch();\n const roofInfo = useSelector((state) => state.Roof.roofInfo);\n const p = useSelector((state) => state.Order.panelCount);\n const [value, setValue] = useState(0);\n const [maxValue, setMaxValue] = useState(0);\n const [increment, setIncrement]=useState(null)\n \n\n useEffect(() => {\n if (roofInfo && roofInfo.paneler) {\n const antallPanelers = roofInfo.paneler.map(\n (panel) => panel.antallPaneler\n );\n\n const differences = antallPanelers.slice(1).map((val, index) => val - antallPanelers[index]);\n const commonDiff = differences.reduce(\n (acc, diff) => (acc === diff ? acc : null),\n differences[0]\n );\n\n setIncrement(commonDiff);\n }\n }, [roofInfo]); \n \n useEffect(() => {\n if (Object.keys(roofInfo).length > 0) {\n let found;\n if (p === \"\") {\n found = roofInfo.paneler.find(\n (element) => element.pris * 1.25 >= 190000\n );\n } else {\n found = roofInfo.paneler.find((element) => element.antallPaneler === p);\n }\n\n let panelCount;\n let max = roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler;\n\n if (found !== undefined) {\n panelCount = found.antallPaneler;\n } else {\n panelCount =\n roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler;\n }\n setMaxValue(max);\n if (max < panelCount) {\n setValue(max);\n setOrderPanelCount(max);\n } else {\n setValue(panelCount);\n setOrderPanelCount(panelCount);\n }\n } \n return () => {\n dispatch(setRoofInfo(\"\"));\n }\n }, []);\n\n return (\n <>\n {value > 0 ? (\n <div\n style={{\n display: \"block\",\n width: \"50%\",\n }}\n className=\"progressbar-container\"\n >\n <Slider\n max={maxValue}\n min={roofInfo.paneler[0].antallPaneler}\n step={increment}\n defaultValue={value}\n onChange={(value) => {\n setValue(value);\n dispatch(setOrderPanelCount(value));\n }}\n progress\n />\n <div className=\"panel-quantity\">Antall Paneler: {value}</div>\n </div>\n ) : null}\n </>\n );\n};\n\nexport default ProgressBar;\n","import { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getRoofCalculation } from \"../../api/getRoofCalculation\";\nimport ProductionChart from \"../ProductionChart/ProductionChart\";\nimport ProgressBar from \"../ProgressBar/ProgressBar\";\nimport \"./RoofPanel.scss\";\n\nconst RoofPanel = (data) => {\n const roofInfo = useSelector((state) => state.Roof.roofInfo);\n const panelCount = useSelector((state) => state.Order.panelCount);\n const [lcoe, setLcoe] = useState(0);\n let finalRoof;\n\n useEffect(() => {\n if (Object.keys(roofInfo).length > 0 && !roofInfo.message) {\n let found;\n if (panelCount === \"\") {\n found = roofInfo.paneler.find(\n (element) => element.pris * 1.25 >= 190000\n );\n } else {\n found = roofInfo.paneler.find(\n (element) => element.antallPaneler === panelCount\n );\n }\n let max;\n if (found !== undefined) {\n max = found.antallPaneler;\n } else {\n max = roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler;\n }\n\n if (roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler >= max) {\n finalRoof = roofInfo.paneler[max - 8];\n } else {\n finalRoof = roofInfo.paneler[roofInfo.paneler.length - 1];\n }\n let result = getRoofCalculation(finalRoof);\n setLcoe(result.lcoeC);\n }\n }, []);\n\n return (\n <>\n {Object.keys(data).length > 0 ? (\n <div className=\"roof-price-panel\">\n <div className=\"panel-counts\">\n <h3>Velg antall paneler</h3>\n <div className=\"panel-counts-scale\">\n <span>{roofInfo.paneler[0].antallPaneler} paneler</span>\n <ProgressBar />\n <span>\n {roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler}{\" \"}\n paneler\n </span>\n </div>\n </div>\n <div className=\"panel-prices\">\n <div>\n <p>Estimert Ã¥rlig produksjon*</p>\n <p>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(data.data.anProd))\n .replace(\",\", \" \")}{\" \"}\n kWh\n </p>\n </div>\n {data.data.lcoe < 0.8 ? (\n <div>\n <p>Strømpris</p>\n <p>\n {data.data.lcoe > 0\n ? data.data.lcoe.toFixed(3)\n : lcoe.toFixed(3)}{\" \"}\n kroner\n </p>\n </div>\n ) : (\n \"\"\n )}\n </div>\n <div className=\"panel-charts\">\n <div className=\"panel-production-chart\">\n <ProductionChart />\n </div>\n </div>\n </div>\n ) : null}\n </>\n );\n};\n\nexport default RoofPanel;\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext, useContext } from 'react';\n\nconst MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const parent = useVisualElementContext();\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef(undefined);\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceId: presenceContext ? presenceContext.id : undefined,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(() => {\n visualElement && visualElement.syncRender();\n });\n useEffect(() => {\n if (visualElement && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useIsomorphicLayoutEffect(() => () => visualElement && visualElement.notifyUnmount(), []);\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\n\nconst variantProps = [\n \"initial\",\n \"animate\",\n \"exit\",\n \"whileHover\",\n \"whileDrag\",\n \"whileTap\",\n \"whileFocus\",\n \"whileInView\",\n];\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","const createDefinition = (propNames) => ({\n isEnabled: (props) => propNames.some((name) => !!props[name]),\n});\nconst featureDefinitions = {\n measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n inView: createDefinition([\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n ]),\n};\n\nexport { featureDefinitions };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nlet id = 1;\nfunction useProjectionId() {\n return useConstant(() => {\n if (globalProjectionState.hasEverUpdated) {\n return id++;\n }\n });\n}\n\nexport { useProjectionId };\n","import React__default from 'react';\n\nclass VisualElementHandler extends React__default.Component {\n /**\n * Update visual element props as soon as we know this update is going to be commited.\n */\n getSnapshotBeforeUpdate() {\n const { visualElement, props } = this.props;\n if (visualElement)\n visualElement.setProps(props);\n return null;\n }\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\n\nexport { VisualElementHandler };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, projectionNodeConstructor, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n let features = null;\n const context = useCreateMotionContext(props);\n /**\n * Create a unique projection ID for this component. If a new component is added\n * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n * us to measure it as soon as any layout effect flushes pending layout animations.\n *\n * Performance note: It'd be better not to have to search the DOM for these elements.\n * For newly-entering components it could be enough to only correct treeScale, in which\n * case we could mount in a scale-correction mode. This wouldn't be enough for\n * shared element transitions however. Perhaps for those we could revert to a root node\n * that gets forceRendered and layout animations are triggered on its layout effect.\n */\n const projectionId = isStatic ? undefined : useProjectionId();\n /**\n *\n */\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const lazyStrictMode = useContext(LazyContext).strict;\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (context.visualElement) {\n features = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, lazyStrictMode, preloadedFeatures, projectionId, projectionNodeConstructor ||\n featureDefinitions.projectionNodeConstructor, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(VisualElementHandler, { visualElement: context.visualElement, props: configAndProps },\n features,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement))));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n if (key === \"projectionNodeConstructor\") {\n featureDefinitions.projectionNodeConstructor = features[key];\n }\n else {\n featureDefinitions[key].Component = features[key];\n }\n }\n}\n\nexport { loadFeatures };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return <div ref={ref} />\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","const isMotionValue = (value) => !!(value === null || value === void 0 ? void 0 : value.getVelocity);\n\nexport { isMotionValue };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst sortTransformProps = (a, b) => transformPropOrder.indexOf(a) - transformPropOrder.indexOf(b);\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform({ transform, transformKeys }, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Loop over each transform and build them into transformString\n for (const key of transformKeys) {\n transformString += `${translateAlias[key] || key}(${transform[key]}) `;\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);\nconst sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType('deg');\nconst percent = createUnitType('%');\nconst px = createUnitType('px');\nconst vh = createUnitType('vh');\nconst vw = createUnitType('vw');\nconst progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { clamp } from '../utils.mjs';\n\nconst number = {\n test: (v) => typeof v === 'number',\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });\nconst scale = Object.assign(Object.assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { number } from 'style-value-types';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformKeys, transformOrigin } = state;\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariable(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformKeys: [],\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","const animationProps = [\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n];\nconst tapProps = [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"];\nconst panProps = [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"];\nconst inViewProps = [\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"viewport\",\n];\n/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"layoutDependency\",\n \"onLayoutAnimationStart\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"dragSnapToOrigin\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"layoutScroll\",\n ...inViewProps,\n ...tapProps,\n ...animationProps,\n ...panProps,\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { px } from 'style-value-types';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from 'style-value-types';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\n\nfunction useSVGProps(props, visualState) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, projectionId, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = {\n ...filteredProps,\n ...visualProps,\n ref,\n };\n if (projectionId) {\n elementProps[\"data-projection-id\"] = projectionId;\n }\n return createElement(Component, elementProps);\n };\n return useRender;\n}\n\nexport { createUseRender };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props) {\n const newValues = scrapeMotionValuesFromProps$1(props);\n for (const key in props) {\n if (isMotionValue(props[key])) {\n const targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props);\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, props.transformTemplate);\n renderSVG(instance, renderState);\n },\n }),\n};\n\nexport { svgMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n AnimationType[\"Animate\"] = \"animate\";\n AnimationType[\"Hover\"] = \"whileHover\";\n AnimationType[\"Tap\"] = \"whileTap\";\n AnimationType[\"Drag\"] = \"whileDrag\";\n AnimationType[\"Focus\"] = \"whileFocus\";\n AnimationType[\"InView\"] = \"whileInView\";\n AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return <div ref={ref} />\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(() => {\n const element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","function isMouseEvent(event) {\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n return !!(event.pointerType === \"mouse\");\n }\n return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n const hasTouches = !!event.touches;\n return hasTouches;\n}\n\nexport { isMouseEvent, isTouchEvent };\n","import { isTouchEvent } from '../gestures/utils/event-type.mjs';\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n return (event) => {\n const isMouseEvent = event instanceof MouseEvent;\n const isPrimaryPointer = !isMouseEvent ||\n (isMouseEvent && event.button === 0);\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\nconst defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType = \"page\") {\n const primaryTouch = e.touches[0] || e.changedTouches[0];\n const point = primaryTouch || defaultPagePoint;\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction pointFromMouse(point, pointType = \"page\") {\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n };\n}\nconst wrapHandler = (handler, shouldFilterPrimaryPointer = false) => {\n const listener = (event) => handler(event, extractEventInfo(event));\n return shouldFilterPrimaryPointer\n ? filterPrimaryPointer(listener)\n : listener;\n};\n\nexport { extractEventInfo, wrapHandler };\n","import { addDomEvent, useDomEvent } from './use-dom-event.mjs';\nimport { wrapHandler } from './event-info.mjs';\nimport { supportsPointerEvents, supportsTouchEvents, supportsMouseEvents } from './utils.mjs';\n\nconst mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n};\nconst touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n }\n else if (supportsTouchEvents()) {\n return touchEventNames[name];\n }\n else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","import { isBrowser } from '../utils/is-browser.mjs';\n\n// We check for event support via functions in case they've been mocked by a testing suite.\nconst supportsPointerEvents = () => isBrowser && window.onpointerdown === null;\nconst supportsTouchEvents = () => isBrowser && window.ontouchstart === null;\nconst supportsMouseEvents = () => isBrowser && window.onmousedown === null;\n\nexport { supportsMouseEvents, supportsPointerEvents, supportsTouchEvents };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { isMouseEvent } from './utils/event-type.mjs';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\nfunction createHoverEvent(visualElement, isActive, callback) {\n return (event, info) => {\n if (!isMouseEvent(event) || isDragActive())\n return;\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Hover, isActive);\n }\n callback && callback(event, info);\n };\n}\nfunction useHoverGesture({ onHoverStart, onHoverEnd, whileHover, visualElement, }) {\n usePointerEvent(visualElement, \"pointerenter\", onHoverStart || whileHover\n ? createHoverEvent(visualElement, true, onHoverStart)\n : undefined, { passive: !onHoverStart });\n usePointerEvent(visualElement, \"pointerleave\", onHoverEnd || whileHover\n ? createHoverEvent(visualElement, false, onHoverEnd)\n : undefined, { passive: !onHoverEnd });\n}\n\nexport { useHoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","const combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { env } from '../../../utils/process.mjs';\nimport { useRef, useEffect } from 'react';\nimport { AnimationType } from '../../../render/utils/types.mjs';\nimport { warnOnce } from '../../../utils/warn-once.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nfunction useViewport({ visualElement, whileInView, onViewportEnter, onViewportLeave, viewport = {}, }) {\n const state = useRef({\n hasEnteredView: false,\n isInView: false,\n });\n let shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n if (viewport.once && state.current.hasEnteredView)\n shouldObserve = false;\n const useObserver = typeof IntersectionObserver === \"undefined\"\n ? useMissingIntersectionObserver\n : useIntersectionObserver;\n useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, { root, margin: rootMargin, amount = \"some\", once }) {\n useEffect(() => {\n if (!shouldObserve)\n return;\n const options = {\n root: root === null || root === void 0 ? void 0 : root.current,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const intersectionCallback = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (state.isInView === isIntersecting)\n return;\n state.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && state.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n state.hasEnteredView = true;\n }\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const props = visualElement.getProps();\n const callback = isIntersecting\n ? props.onViewportEnter\n : props.onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(visualElement.getInstance(), options, intersectionCallback);\n }, [shouldObserve, root, rootMargin, amount]);\n}\n/**\n * If IntersectionObserver is missing, we activate inView and fire onViewportEnter\n * on mount. This way, the page will be in the state the author expects users\n * to see it in for everyone.\n */\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, { fallback = true }) {\n useEffect(() => {\n if (!shouldObserve || !fallback)\n return;\n if (env !== \"production\") {\n warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n }\n /**\n * Fire this in an rAF because, at this point, the animation state\n * won't have flushed for the first time and there's certain logic in\n * there that behaves differently on the initial animation.\n *\n * This hook should be quite rarely called so setting this in an rAF\n * is preferred to changing the behaviour of the animation state.\n */\n requestAnimationFrame(() => {\n state.hasEnteredView = true;\n const { onViewportEnter } = visualElement.getProps();\n onViewportEnter && onViewportEnter(null);\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, true);\n }\n });\n }, [shouldObserve]);\n}\n\nexport { useViewport };\n","const makeRenderlessComponent = (hook) => (props) => {\n hook(props);\n return null;\n};\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.mjs';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.mjs';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.mjs';\nimport { useViewport } from './viewport/use-viewport.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst gestureAnimations = {\n inView: makeRenderlessComponent(useViewport),\n tap: makeRenderlessComponent(useTapGesture),\n focus: makeRenderlessComponent(useFocusGesture),\n hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\n","import { useRef } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { usePointerEvent, addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { pipe } from 'popmotion';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture({ onTap, onTapStart, onTapCancel, whileTap, visualElement, }) {\n const hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n const isPressing = useRef(false);\n const cancelPointerEndListeners = useRef(null);\n /**\n * Only set listener to passive if there are no external listeners.\n */\n const eventOptions = {\n passive: !(onTapStart || onTap || onTapCancel || onPointerDown),\n };\n function removePointerEndListener() {\n cancelPointerEndListeners.current && cancelPointerEndListeners.current();\n cancelPointerEndListeners.current = null;\n }\n function checkPointerEnd() {\n removePointerEndListener();\n isPressing.current = false;\n visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Tap, false);\n return !isDragActive();\n }\n function onPointerUp(event, info) {\n if (!checkPointerEnd())\n return;\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(visualElement.getInstance(), event.target)\n ? onTapCancel && onTapCancel(event, info)\n : onTap && onTap(event, info);\n }\n function onPointerCancel(event, info) {\n if (!checkPointerEnd())\n return;\n onTapCancel && onTapCancel(event, info);\n }\n function onPointerDown(event, info) {\n removePointerEndListener();\n if (isPressing.current)\n return;\n isPressing.current = true;\n cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n /**\n * Ensure we trigger animations before firing event callback\n */\n visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Tap, true);\n onTapStart && onTapStart(event, info);\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? onPointerDown : undefined, eventOptions);\n useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { useDomEvent } from '../events/use-dom-event.mjs';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture({ whileFocus, visualElement }) {\n const { animationState } = visualElement;\n const onFocus = () => {\n animationState && animationState.setActive(AnimationType.Focus, true);\n };\n const onBlur = () => {\n animationState && animationState.setActive(AnimationType.Focus, false);\n };\n useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n // Replace with useId when released in React\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= maxDuration * 1000, \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, duration / 1000);\n if (dampingRatio < 1) {\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = duration * 1000;\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { __rest } from 'tslib';\nimport { findSpring, calcAngularFreq } from '../utils/find-spring.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = Object.assign({ velocity: 0.0, stiffness: 100, damping: 10, mass: 1.0, isResolvedFromDuration: false }, options);\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = Object.assign(Object.assign(Object.assign({}, springOptions), derived), { velocity: 0.0, mass: 1.0 });\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring(_a) {\n var { from = 0.0, to = 1.0, restSpeed = 2, restDelta } = _a, options = __rest(_a, [\"from\", \"to\", \"restSpeed\", \"restDelta\"]);\n const state = { done: false, value: from };\n let { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n let resolveSpring = zero;\n let resolveVelocity = zero;\n function createSpring() {\n const initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n const initialDelta = to - from;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\n if (restDelta === undefined) {\n restDelta = Math.min(Math.abs(to - from) / 100, 0.4);\n }\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (to -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n resolveVelocity = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (dampingRatio *\n undampedAngularFreq *\n envelope *\n ((Math.sin(angularFreq * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta)) /\n angularFreq +\n initialDelta * Math.cos(angularFreq * t)) -\n envelope *\n (Math.cos(angularFreq * t) *\n (initialVelocity +\n dampingRatio *\n undampedAngularFreq *\n initialDelta) -\n angularFreq *\n initialDelta *\n Math.sin(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n resolveSpring = (t) => to -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) *\n t);\n }\n else {\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (to -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n }\n createSpring();\n return {\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n const currentVelocity = resolveVelocity(t) * 1000;\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? to : current;\n return state;\n },\n flipTarget: () => {\n velocity = -velocity;\n [from, to] = [to, from];\n createSpring();\n },\n };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nconst zero = (_t) => 0;\n\nexport { spring };\n","const progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","const mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { number, alpha } from '../numbers/index.mjs';\nimport { sanitize, clamp } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = clamp(0, 255);\nconst rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });\nconst rgba = {\n test: isColorString('rgb', 'red'),\n parse: splitColor('red', 'green', 'blue'),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +\n rgbUnit.transform(red) +\n ', ' +\n rgbUnit.transform(green) +\n ', ' +\n rgbUnit.transform(blue) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')',\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = '';\n let g = '';\n let b = '';\n let a = '';\n if (v.length > 5) {\n r = v.substr(1, 2);\n g = v.substr(3, 2);\n b = v.substr(5, 2);\n a = v.substr(7, 2);\n }\n else {\n r = v.substr(1, 1);\n g = v.substr(2, 1);\n b = v.substr(3, 1);\n a = v.substr(4, 1);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString('#'),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString('hsl', 'hue'),\n parse: splitColor('hue', 'saturation', 'lightness'),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return ('hsla(' +\n Math.round(hue) +\n ', ' +\n percent.transform(sanitize(saturation)) +\n ', ' +\n percent.transform(sanitize(lightness)) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')');\n },\n};\n\nexport { hsla };\n","function hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { hsla, rgba, hex } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\n\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const toExpo = to * to;\n return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nconst notAnimatable = (color) => `'${color}' is not an animatable color. Use the equivalent color code instead.`;\nconst mixColor = (from, to) => {\n let fromColorType = getColorType(from);\n let toColorType = getColorType(to);\n invariant(!!fromColorType, notAnimatable(from));\n invariant(!!toColorType, notAnimatable(to));\n let fromColor = fromColorType.parse(from);\n let toColor = toColorType.parse(to);\n if (fromColorType === hsla) {\n fromColor = hslaToRgba(fromColor);\n fromColorType = rgba;\n }\n if (toColorType === hsla) {\n toColor = hslaToRgba(toColor);\n toColorType = rgba;\n }\n const blended = Object.assign({}, fromColor);\n return (v) => {\n for (const key in blended) {\n if (key !== \"alpha\") {\n blended[key] = mixLinearColor(fromColor[key], toColor[key], v);\n }\n }\n blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n return fromColorType.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty('red')\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = '${c}';\nconst numberToken = '${n}';\nfunction test(v) {\n var _a, _b, _c, _d;\n return (isNaN(v) &&\n isString(v) &&\n ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);\n}\nfunction analyse(v) {\n if (typeof v === 'number')\n v = `${v}`;\n const values = [];\n let numColors = 0;\n const colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n v = v.replace(colorRegex, colorToken);\n values.push(...colors.map(color.parse));\n }\n const numbers = v.match(floatRegex);\n if (numbers) {\n v = v.replace(floatRegex, numberToken);\n values.push(...numbers.map(number.parse));\n }\n return { values, numColors, tokenised: v };\n}\nfunction parse(v) {\n return analyse(v).values;\n}\nfunction createTransformer(v) {\n const { values, numColors, tokenised } = analyse(v);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parse(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { complex };\n","const zeroPoint = {\n x: 0,\n y: 0,\n z: 0\n};\nconst isNum = (v) => typeof v === 'number';\n\nexport { isNum, zeroPoint };\n","import { complex, color } from 'style-value-types';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { isNum } from './inc.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\n\nfunction getMixer(origin, target) {\n if (isNum(origin)) {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = Object.assign(Object.assign({}, origin), target);\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nfunction analyse(value) {\n const parsed = complex.parse(value);\n const numValues = parsed.length;\n let numNumbers = 0;\n let numRGB = 0;\n let numHSL = 0;\n for (let i = 0; i < numValues; i++) {\n if (numNumbers || typeof parsed[i] === \"number\") {\n numNumbers++;\n }\n else {\n if (parsed[i].hue !== undefined) {\n numHSL++;\n }\n else {\n numRGB++;\n }\n }\n }\n return { parsed, numNumbers, numRGB, numHSL };\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyse(origin);\n const targetStats = analyse(target);\n const canInterpolate = originStats.numHSL === targetStats.numHSL &&\n originStats.numRGB === targetStats.numRGB &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return (p) => `${p > 0 ? target : origin}`;\n }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { progress } from './progress.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { color } from 'style-value-types';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { invariant } from 'hey-listen';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === 'number') {\n return mixNumber;\n }\n else if (typeof v === 'string') {\n if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === 'object') {\n return mixObject;\n }\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\nfunction fastInterpolate([from, to], [mixer]) {\n return (v) => mixer(progress(from, to, v));\n}\nfunction slowInterpolate(input, mixers) {\n const inputLength = input.length;\n const lastInputIndex = inputLength - 1;\n return (v) => {\n let mixerIndex = 0;\n let foundMixerIndex = false;\n if (v <= input[0]) {\n foundMixerIndex = true;\n }\n else if (v >= input[lastInputIndex]) {\n mixerIndex = lastInputIndex - 1;\n foundMixerIndex = true;\n }\n if (!foundMixerIndex) {\n let i = 1;\n for (; i < inputLength; i++) {\n if (input[i] > v || i === lastInputIndex) {\n break;\n }\n }\n mixerIndex = i - 1;\n }\n const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n return mixers[mixerIndex](progressInRange);\n };\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n if (input[0] > input[inputLength - 1]) {\n input = [].concat(input);\n output = [].concat(output);\n input.reverse();\n output.reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const interpolator = inputLength === 2\n ? fastInterpolate(input, mixers)\n : slowInterpolate(input, mixers);\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","const reverseEasing = easing => p => 1 - easing(1 - p);\nconst mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\nconst createExpoIn = (power) => p => Math.pow(p, power);\nconst createBackIn = (power) => p => p * p * ((power + 1) * p - power);\nconst createAnticipate = (power) => {\n const backEasing = createBackIn(power);\n return p => (p *= 2) < 1\n ? 0.5 * backEasing(p)\n : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n};\n\nexport { createAnticipate, createBackIn, createExpoIn, mirrorEasing, reverseEasing };\n","import { createExpoIn, reverseEasing, mirrorEasing, createBackIn, createAnticipate } from './utils.mjs';\n\nconst DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nconst BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nconst BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nconst BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nconst linear = p => p;\nconst easeIn = createExpoIn(2);\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\nconst circIn = p => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\nconst backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nconst backOut = reverseEasing(backIn);\nconst backInOut = mirrorEasing(backIn);\nconst anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nconst ca = 4356.0 / 361.0;\nconst cb = 35442.0 / 1805.0;\nconst cc = 16061.0 / 1805.0;\nconst bounceOut = (p) => {\n if (p === 1 || p === 0)\n return p;\n const p2 = p * p;\n return p < BOUNCE_FIRST_THRESHOLD\n ? 7.5625 * p2\n : p < BOUNCE_SECOND_THRESHOLD\n ? 9.075 * p2 - 9.9 * p + 3.4\n : p < BOUNCE_THIRD_THRESHOLD\n ? ca * p2 - cb * p + cc\n : 10.8 * p * p - 20.52 * p + 10.72;\n};\nconst bounceIn = reverseEasing(bounceOut);\nconst bounceInOut = (p) => p < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))\n : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n\nexport { anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, linear };\n","import { interpolate } from '../../utils/interpolate.mjs';\nimport { easeInOut } from '../../easing/index.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n const numValues = values.length;\n return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\nfunction keyframes({ from = 0, to = 1, ease, offset, duration = 300, }) {\n const state = { done: false, value: from };\n const values = Array.isArray(to) ? to : [from, to];\n const times = convertOffsetToTimes(offset && offset.length === values.length\n ? offset\n : defaultOffset(values), duration);\n function createInterpolator() {\n return interpolate(times, values, {\n ease: Array.isArray(ease) ? ease : defaultEasing(values, ease),\n });\n }\n let interpolator = createInterpolator();\n return {\n next: (t) => {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: () => {\n values.reverse();\n interpolator = createInterpolator();\n },\n };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","import { spring } from '../generators/spring.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { decay } from '../generators/decay.mjs';\n\nconst types = { keyframes, spring, decay };\nfunction detectAnimationFromOptions(config) {\n if (Array.isArray(config.to)) {\n return keyframes;\n }\n else if (types[config.type]) {\n return types[config.type];\n }\n const keys = new Set(Object.keys(config));\n if (keys.has(\"ease\") ||\n (keys.has(\"duration\") && !keys.has(\"dampingRatio\"))) {\n return keyframes;\n }\n else if (keys.has(\"dampingRatio\") ||\n keys.has(\"stiffness\") ||\n keys.has(\"mass\") ||\n keys.has(\"damping\") ||\n keys.has(\"restSpeed\") ||\n keys.has(\"restDelta\")) {\n return spring;\n }\n return keyframes;\n}\n\nexport { detectAnimationFromOptions };\n","function decay({ velocity = 0, from = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget, }) {\n const state = { done: false, value: from };\n let amplitude = power * velocity;\n const ideal = from + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n if (target !== ideal)\n amplitude = target - from;\n return {\n next: (t) => {\n const delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: () => { },\n };\n}\n\nexport { decay };\n","function loopElapsed(elapsed, duration, delay = 0) {\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration, delay = 0, isForwardPlayback = true) {\n return isForwardPlayback\n ? loopElapsed(duration + -elapsed, duration, delay)\n : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\n\nexport { hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","import { __rest } from 'tslib';\nimport { detectAnimationFromOptions } from './utils/detect-animation-from-options.mjs';\nimport sync, { cancelSync } from 'framesync';\nimport { interpolate } from '../utils/interpolate.mjs';\nimport { hasRepeatDelayElapsed, reverseElapsed, loopElapsed } from './utils/elapsed.mjs';\n\nconst framesync = (update) => {\n const passTimestamp = ({ delta }) => update(delta);\n return {\n start: () => sync.update(passTimestamp, true),\n stop: () => cancelSync.update(passTimestamp),\n };\n};\nfunction animate(_a) {\n var _b, _c;\n var { from, autoplay = true, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, onPlay, onStop, onComplete, onRepeat, onUpdate } = _a, options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n let { to } = options;\n let driverControls;\n let repeatCount = 0;\n let computedDuration = options.duration;\n let latest;\n let isComplete = false;\n let isForwardPlayback = true;\n let interpolateFromNumber;\n const animator = detectAnimationFromOptions(options);\n if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n interpolateFromNumber = interpolate([0, 100], [from, to], {\n clamp: false,\n });\n from = 0;\n to = 100;\n }\n const animation = animator(Object.assign(Object.assign({}, options), { from, to }));\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n }\n else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\")\n animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback)\n delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n const state = animation.next(Math.max(0, elapsed));\n latest = state.value;\n if (interpolateFromNumber)\n latest = interpolateFromNumber(latest);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n if (isComplete) {\n if (repeatCount === 0)\n computedDuration !== null && computedDuration !== void 0 ? computedDuration : (computedDuration = elapsed);\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n }\n else {\n complete();\n }\n }\n }\n function play() {\n onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: () => {\n onStop === null || onStop === void 0 ? void 0 : onStop();\n driverControls.stop();\n },\n };\n}\n\nexport { animate };\n","function velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n\nexport { secondsToMilliseconds };\n","import { linear } from './index.mjs';\n\nconst a = (a1, a2) => 1.0 - 3.0 * a2 + 3.0 * a1;\nconst b = (a1, a2) => 3.0 * a2 - 6.0 * a1;\nconst c = (a1) => 3.0 * a1;\nconst calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\nconst getSlope = (t, a1, a2) => 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 10;\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n }\n else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nconst newtonIterations = 8;\nconst newtonMinSlope = 0.001;\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (let i = 0; i < newtonIterations; ++i) {\n const currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n if (mX1 === mY1 && mX2 === mY2)\n return linear;\n const sampleValues = new Float32Array(kSplineTableSize);\n for (let i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n function getTForX(aX) {\n let intervalStart = 0.0;\n let currentSample = 1;\n const lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n const dist = (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n const guessForT = intervalStart + dist * kSampleStepSize;\n const initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= newtonMinSlope) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n else if (initialSlope === 0.0) {\n return guessForT;\n }\n else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { invariant } from 'hey-listen';\nimport { cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from 'popmotion';\n\nconst easingLookup = {\n linear,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n bounceIn,\n bounceInOut,\n bounceOut,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\nconst isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { complex } from 'style-value-types';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * âŒ: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { isKeyframesTarget } from './is-keyframes-target.mjs';\n\nconst underDampedSpring = () => ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n});\nconst criticallyDampedSpring = (to) => ({\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst linearTween = () => ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n});\nconst keyframes = (values) => ({\n type: \"keyframes\",\n duration: 0.8,\n values,\n});\nconst defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: criticallyDampedSpring,\n scaleY: criticallyDampedSpring,\n scale: criticallyDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: criticallyDampedSpring,\n};\nconst getDefaultTransition = (valueKey, to) => {\n let transitionFactory;\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n }\n else {\n transitionFactory =\n defaultTransitions[valueKey] || defaultTransitions.default;\n }\n return { to, ...transitionFactory(to) };\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\nconst maxDefaults = new Set(['brightness', 'contrast', 'saturate', 'opacity']);\nfunction applyDefaultFilter(v) {\n let [name, value] = v.slice(0, -1).split('(');\n if (name === 'drop-shadow')\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, '');\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + '(' + defaultValue + unit + ')';\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = Object.assign(Object.assign({}, complex), { getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(' ') : v;\n } });\n\nexport { filter };\n","import { color, filter } from 'style-value-types';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { filter, complex } from 'style-value-types';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n var _a;\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","import { inertia, animate } from 'popmotion';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { isEasingArray, easingDefinitionToFunction } from './easing.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { getDefaultTransition } from './default-transitions.mjs';\nimport { warning } from 'hey-listen';\nimport { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, ...transition }) {\n return !!Object.keys(transition).length;\n}\nlet legacyRepeatWarning = false;\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions({ ease, times, yoyo, flip, loop, ...transition }) {\n const options = { ...transition };\n if (times)\n options[\"offset\"] = times;\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n if (transition.duration)\n options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay)\n options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n if (ease) {\n options[\"ease\"] = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n if (transition.type === \"tween\")\n options.type = \"keyframes\";\n /**\n * TODO: These options are officially removed from the API.\n */\n if (yoyo || loop || flip) {\n warning(!legacyRepeatWarning, \"yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options.\");\n legacyRepeatWarning = true;\n if (yoyo) {\n options.repeatType = \"reverse\";\n }\n else if (loop) {\n options.repeatType = \"loop\";\n }\n else if (flip) {\n options.repeatType = \"mirror\";\n }\n options.repeat = loop || yoyo || flip || transition.repeat;\n }\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n if (transition.type !== \"spring\")\n options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n var _a, _b;\n const valueTransition = getValueTransition(transition, key) || {};\n return (_b = (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : transition.delay) !== null && _b !== void 0 ? _b : 0;\n}\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = [...options.to];\n options.to[0] = options.from;\n }\n return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n if (Array.isArray(options.to) && transition.duration === undefined) {\n transition.duration = 0.8;\n }\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n if (!isTransitionDefined(transition)) {\n transition = {\n ...transition,\n ...getDefaultTransition(key, options.to),\n };\n }\n return {\n ...options,\n ...convertTransitionToAnimationOptions(transition),\n };\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n const valueTransition = getValueTransition(transition, key) || {};\n let origin = valueTransition.from !== undefined ? valueTransition.from : value.get();\n const isTargetAnimatable = isAnimatable(key, target);\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n origin = getAnimatableNone(key, target);\n }\n else if (isZero(origin) && typeof target === \"string\") {\n origin = getZeroUnit(target);\n }\n else if (!Array.isArray(target) &&\n isZero(target) &&\n typeof origin === \"string\") {\n target = getZeroUnit(origin);\n }\n const isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${key} from \"${origin}\" to \"${target}\". ${origin} is not an animatable value - to enable this animation set ${origin} to a value animatable to ${target} via the \\`style\\` property.`);\n function start() {\n const options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete,\n onUpdate: (v) => value.set(v),\n };\n return valueTransition.type === \"inertia\" ||\n valueTransition.type === \"decay\"\n ? inertia({ ...options, ...valueTransition })\n : animate({\n ...getPopmotionAnimationOptions(valueTransition, options, key),\n onUpdate: (v) => {\n options.onUpdate(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n options.onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n });\n }\n function set() {\n const finalTarget = resolveFinalValueInKeyframes(target);\n value.set(finalTarget);\n onComplete();\n valueTransition.onUpdate && valueTransition.onUpdate(finalTarget);\n valueTransition.onComplete && valueTransition.onComplete();\n return { stop: () => { } };\n }\n return !isOriginAnimatable ||\n !isTargetAnimatable ||\n valueTransition.type === false\n ? set\n : start;\n}\nfunction isZero(value) {\n return (value === 0 ||\n (typeof value === \"string\" &&\n parseFloat(value) === 0 &&\n value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n return typeof potentialUnitType === \"number\"\n ? 0\n : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n */\nfunction startAnimation(key, value, target, transition = {}) {\n if (instantAnimationState.current) {\n transition = { type: false };\n }\n return value.start((onComplete) => {\n let delayTimer;\n let controls;\n const animation = getAnimation(key, value, target, transition, onComplete);\n const delay = getDelayFromTransition(transition, key);\n const start = () => (controls = animation());\n if (delay) {\n delayTimer = window.setTimeout(start, secondsToMilliseconds(delay));\n }\n else {\n start();\n }\n return () => {\n clearTimeout(delayTimer);\n controls && controls.stop();\n };\n });\n}\n\nexport { convertTransitionToAnimationOptions, getDelayFromTransition, getPopmotionAnimationOptions, getValueTransition, getZeroUnit, hydrateKeyframes, isTransitionDefined, isZero, startAnimation };\n","import { animate } from './index.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { getFrameData } from 'framesync';\n\nfunction inertia({ from = 0, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop, }) {\n let currentAnimation;\n function isOutOfBounds(v) {\n return (min !== undefined && v < min) || (max !== undefined && v > max);\n }\n function boundaryNearest(v) {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n }\n function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate(Object.assign(Object.assign({}, options), { driver, onUpdate: (v) => {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n }, onComplete,\n onStop }));\n }\n function startSpring(options) {\n startAnimation(Object.assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta }, options));\n }\n if (isOutOfBounds(from)) {\n startSpring({ from, velocity, to: boundaryNearest(from) });\n }\n else {\n let target = power * velocity + from;\n if (typeof modifyTarget !== \"undefined\")\n target = modifyTarget(target);\n const boundary = boundaryNearest(target);\n const heading = boundary === min ? -1 : 1;\n let prev;\n let current;\n const checkBoundary = (v) => {\n prev = current;\n current = v;\n velocity = velocityPerSecond(v - prev, getFrameData().delta);\n if ((heading === 1 && v > boundary) ||\n (heading === -1 && v < boundary)) {\n startSpring({ from: v, to: boundary, velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n from,\n velocity,\n timeConstant,\n power,\n restDelta,\n modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n });\n }\n return {\n stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(),\n };\n}\n\nexport { inertia };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","import sync, { getFrameData } from 'framesync';\nimport { velocityPerSecond } from 'popmotion';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\n\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"7.5.3\";\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\n this.updateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the velocity updates.\n *\n * @internal\n */\n this.velocityUpdateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n *\n * @internal\n */\n this.renderSubscribers = new SubscriptionManager();\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n this.updateAndNotify = (v, render = true) => {\n this.prev = this.current;\n this.current = v;\n // Update timestamp\n const { delta, timestamp } = getFrameData();\n if (this.lastUpdated !== timestamp) {\n this.timeDelta = delta;\n this.lastUpdated = timestamp;\n sync.postRender(this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (this.prev !== this.current) {\n this.updateSubscribers.notify(this.current);\n }\n // Update velocity subscribers\n if (this.velocityUpdateSubscribers.getSize()) {\n this.velocityUpdateSubscribers.notify(this.getVelocity());\n }\n // Update render subscribers\n if (render) {\n this.renderSubscribers.notify(this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = () => sync.postRender(this.velocityCheck);\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = ({ timestamp }) => {\n if (timestamp !== this.lastUpdated) {\n this.prev = this.current;\n this.velocityUpdateSubscribers.notify(this.getVelocity());\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return <motion.div style={{ x }} />\n * }\n * ```\n *\n * @privateRemarks\n *\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n *\n * ```jsx\n * useOnChange(x, () => {})\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @public\n */\n onChange(subscription) {\n return this.updateSubscribers.add(subscription);\n }\n clearListeners() {\n this.updateSubscribers.clear();\n }\n /**\n * Adds a function that will be notified when the `MotionValue` requests a render.\n *\n * @param subscriber - A function that's provided the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @internal\n */\n onRenderRequest(subscription) {\n // Render immediately\n subscription(this.get());\n return this.renderSubscribers.add(subscription);\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect) {\n this.passiveEffect = passiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(animation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.stopAnimation = animation(resolve);\n }).then(() => this.clearAnimation());\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.stopAnimation)\n this.stopAnimation();\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.stopAnimation;\n }\n clearAnimation() {\n this.stopAnimation = null;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.updateSubscribers.clear();\n this.renderSubscribers.clear();\n this.stop();\n }\n}\nfunction motionValue(init) {\n return new MotionValue(init);\n}\n\nexport { MotionValue, motionValue };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number, px, percent, degrees, vw, vh } from 'style-value-types';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { color, complex } from 'style-value-types';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.forEachValue((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.forEachValue((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","import { complex } from 'style-value-types';\nimport { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n var _a;\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n setVariants(child, variantLabels);\n });\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n var _a;\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n origin[key] =\n transitionOrigin !== undefined\n ? transitionOrigin\n : (_a = visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.get();\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { startAnimation } from '../../animation/utils/transitions.mjs';\nimport { setTarget } from './setters.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notifyAnimationStart(definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = animateTarget(visualElement, resolvedDefinition, options);\n }\n return animation.then(() => visualElement.notifyAnimationComplete(definition));\n}\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.custom);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => animateTarget(visualElement, resolved, options)\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size)\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(last);\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\n/**\n * @internal\n */\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type && ((_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.getState()[type]);\n for (const key in target) {\n const value = visualElement.getValue(key);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n let valueTransition = { delay, ...transition };\n /**\n * Make animation instant if this is a transform prop and we should reduce motion.\n */\n if (visualElement.shouldReduceMotion && transformProps.has(key)) {\n valueTransition = {\n ...valueTransition,\n type: false,\n delay: 0,\n };\n }\n let animation = startAnimation(key, value, valueTarget, valueTransition);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation = animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n return Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notifyAnimationComplete(variant)));\n });\n return Promise.all(animations);\n}\nfunction stopAnimation(visualElement) {\n visualElement.forEachValue((value) => value.stop());\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\n\nexport { animateVisualElement, sortByTreeOrder, stopAnimation };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { animateVisualElement } from './animation.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { AnimationType } from './types.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\nconst variantPriorityOrder = [\n AnimationType.Animate,\n AnimationType.InView,\n AnimationType.Focus,\n AnimationType.Hover,\n AnimationType.Tap,\n AnimationType.Drag,\n AnimationType.Exit,\n];\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(options, changedActiveType) {\n var _a;\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = (_a = props[type]) !== null && _a !== void 0 ? _a : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev) || variantDidChange) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type, ...options },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive, options) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n [AnimationType.Animate]: createTypeState(true),\n [AnimationType.InView]: createTypeState(),\n [AnimationType.Hover]: createTypeState(),\n [AnimationType.Tap]: createTypeState(),\n [AnimationType.Drag]: createTypeState(),\n [AnimationType.Focus]: createTypeState(),\n [AnimationType.Exit]: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState, variantPriorityOrder };\n","import { useEffect, useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { usePresence } from '../../components/AnimatePresence/use-presence.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { createAnimationState } from '../../render/utils/animation-state.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst animations = {\n animation: makeRenderlessComponent(({ visualElement, animate }) => {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n if (isAnimationControls(animate)) {\n useEffect(() => animate.subscribe(visualElement), [animate]);\n }\n }),\n exit: makeRenderlessComponent((props) => {\n const { custom, visualElement } = props;\n const [isPresent, safeToRemove] = usePresence();\n const presenceContext = useContext(PresenceContext);\n useEffect(() => {\n visualElement.isPresent = isPresent;\n const animation = visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Exit, !isPresent, {\n custom: (presenceContext && presenceContext.custom) ||\n custom,\n });\n if (animation && !isPresent) {\n animation.then(safeToRemove);\n }\n }, [isPresent]);\n }),\n};\n\nexport { animations };\n","const isPoint = (point) => point.hasOwnProperty('x') && point.hasOwnProperty('y');\n\nexport { isPoint };\n","import { isPoint } from './is-point.mjs';\n\nconst isPoint3D = (point) => isPoint(point) && point.hasOwnProperty('z');\n\nexport { isPoint3D };\n","import { isPoint } from './is-point.mjs';\nimport { isPoint3D } from './is-point-3d.mjs';\nimport { isNum } from './inc.mjs';\n\nconst distance1D = (a, b) => Math.abs(a - b);\nfunction distance(a, b) {\n if (isNum(a) && isNum(b)) {\n return distance1D(a, b);\n }\n else if (isPoint(a) && isPoint(b)) {\n const xDelta = distance1D(a.x, b.x);\n const yDelta = distance1D(a.y, b.y);\n const zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n }\n}\n\nexport { distance };\n","import { isMouseEvent, isTouchEvent } from './utils/event-type.mjs';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { distance, pipe } from 'popmotion';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = getFrameData();\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Because Safari doesn't trigger mouseup events when it's above a `<select>`\n if (isMouseEvent(event) && event.buttons === 0) {\n this.handlePointerUp(event, info);\n return;\n }\n // Throttle mouse move event to once per frame\n sync.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd } = this.handlers;\n const panInfo = getPanInfo(transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (isTouchEvent(event) && event.touches.length > 1)\n return;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = getFrameData();\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelSync.update(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mix, distance } from 'popmotion';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return distance(value, target) < maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin === null || origin === void 0 ? void 0 : origin.originX);\n calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { mix, progress, clamp } from 'popmotion';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic ? mix(min, point, elastic.min) : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic ? mix(max, point, elastic.max) : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n var _a;\n return typeof dragElastic === \"number\"\n ? dragElastic\n : (_a = dragElastic[label]) !== null && _a !== void 0 ? _a : 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n hasTranslate(values.x) ||\n hasTranslate(values.y) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY);\n}\nfunction hasTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { hasScale, hasTransform };\n","import { mix } from 'popmotion';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n var _a, _b;\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n if (((_b = (_a = node.instance) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === \"contents\")\n continue;\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, { x: -node.scroll.x, y: -node.scroll.y });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.x);\n translateAxis(viewportBox.y, scroll.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","import { invariant } from 'hey-listen';\nimport { PanSession } from '../PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/use-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { startAnimation } from '../../animation/utils/transitions.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\nimport { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: AnyPointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n if (this.visualElement.isPresent === false)\n return;\n const onSessionStart = (event) => {\n // Stop any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n var _a;\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n var _a, _b;\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const measuredAxis = (_b = (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.actual[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n (_a = this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock === null || onDirectionLock === void 0 ? void 0 : onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.syncRender();\n /**\n * This must fire after the syncRender call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag === null || onDrag === void 0 ? void 0 : onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n }\n cancel() {\n var _a, _b;\n this.isDragging = false;\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = false;\n }\n (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n const { dragConstraints, dragElastic } = this.getProps();\n const { layout } = this.visualElement.projection || {};\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.actual, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.actual[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.actual, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n var _a;\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (_a = constraints === null || constraints === void 0 ? void 0 : constraints[axis]) !== null && _a !== void 0 ? _a : {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return startAnimation(axis, axisValue, 0, transition);\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n var _a, _b;\n const dragKey = \"_drag\" + axis.toUpperCase();\n const externalMotionValue = this.visualElement.getProps()[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (_b = (_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) !== null && _b !== void 0 ? _b : 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.actual[axis];\n axisValue.set(point[axis] - mix(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n var _a;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.getInstance().style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mix(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n var _a;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.getInstance();\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints)) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n projection.updateLayout();\n }\n measureDragConstraints();\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.syncRender();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener === null || stopLayoutUpdateListener === void 0 ? void 0 : stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","import { useDrag } from '../../gestures/drag/use-drag.mjs';\nimport { usePanGesture } from '../../gestures/use-pan-gesture.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst drag = {\n pan: makeRenderlessComponent(usePanGesture),\n drag: makeRenderlessComponent(useDrag),\n};\n\nexport { drag };\n","import { useRef, useContext, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { PanSession } from './PanSession.mjs';\n\n/**\n *\n * @param handlers -\n * @param ref -\n *\n * @privateRemarks\n * Currently this sets new pan gesture functions every render. The memo route has been explored\n * in the past but ultimately we're still creating new functions every render. An optimisation\n * to explore is creating the pan gestures and loading them into a `ref`.\n *\n * @internal\n */\nfunction usePanGesture({ onPan, onPanStart, onPanEnd, onPanSessionStart, visualElement, }) {\n const hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n const panSession = useRef(null);\n const { transformPagePoint } = useContext(MotionConfigContext);\n const handlers = {\n onSessionStart: onPanSessionStart,\n onStart: onPanStart,\n onMove: onPan,\n onEnd: (event, info) => {\n panSession.current = null;\n onPanEnd && onPanEnd(event, info);\n },\n };\n useEffect(() => {\n if (panSession.current !== null) {\n panSession.current.updateHandlers(handlers);\n }\n });\n function onPointerDown(event) {\n panSession.current = new PanSession(event, handlers, {\n transformPagePoint,\n });\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n useUnmountEffect(() => panSession.current && panSession.current.end());\n}\n\nexport { usePanGesture };\n","import { useEffect } from 'react';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * A hook that allows an element to be dragged.\n *\n * @internal\n */\nfunction useDrag(props) {\n const { dragControls: groupDragControls, visualElement } = props;\n const dragControls = useConstant(() => new VisualElementDragControls(visualElement));\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n useEffect(() => groupDragControls && groupDragControls.subscribe(dragControls), [dragControls, groupDragControls]);\n // Apply the event listeners to the element\n useEffect(() => dragControls.addListeners(), [dragControls]);\n}\n\nexport { useDrag };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\n\nconst names = [\n \"LayoutMeasure\",\n \"BeforeLayoutMeasure\",\n \"LayoutUpdate\",\n \"ViewportBoxUpdate\",\n \"Update\",\n \"Render\",\n \"AnimationComplete\",\n \"LayoutAnimationComplete\",\n \"AnimationStart\",\n \"LayoutAnimationStart\",\n \"SetAxisTarget\",\n \"Unmount\",\n];\nfunction createLifecycles() {\n const managers = names.map(() => new SubscriptionManager());\n const propSubscriptions = {};\n const lifecycles = {\n clearAllListeners: () => managers.forEach((manager) => manager.clear()),\n updatePropListeners: (props) => {\n names.forEach((name) => {\n var _a;\n const on = \"on\" + name;\n const propListener = props[on];\n // Unsubscribe existing subscription\n (_a = propSubscriptions[name]) === null || _a === void 0 ? void 0 : _a.call(propSubscriptions);\n // Add new subscription\n if (propListener) {\n propSubscriptions[name] = lifecycles[on](propListener);\n }\n });\n },\n };\n managers.forEach((manager, i) => {\n lifecycles[\"on\" + names[i]] = (handler) => manager.add(handler);\n lifecycles[\"notify\" + names[i]] = (...args) => manager.notify(...args);\n });\n return lifecycles;\n}\n\nexport { createLifecycles };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"7.5.3\", `Attempting to mix Framer Motion versions ${nextValue.version} with 7.5.3 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import sync, { cancelSync } from 'framesync';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { variantPriorityOrder } from './utils/animation-state.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { createLifecycles } from './utils/lifecycles.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { env } from '../utils/process.mjs';\nimport { invariant } from 'hey-listen';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { createElement } from 'react';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst visualElement = ({ treeType = \"\", build, getBaseTarget, makeTargetAnimatable, measureViewportBox, render: renderInstance, readValueFromInstance, removeValueFromRenderState, sortNodePosition, scrapeMotionValuesFromProps, }) => ({ parent, props, presenceId, blockInitialAnimation, visualState, reducedMotionConfig, }, options = {}) => {\n let isMounted = false;\n const { latestValues, renderState } = visualState;\n /**\n * The instance of the render-specific node that will be hydrated by the\n * exposed React ref. So for example, this visual element can host a\n * HTMLElement, plain object, or Three.js object. The functions provided\n * in VisualElementConfig allow us to interface with this instance.\n */\n let instance;\n /**\n * Manages the subscriptions for a visual element's lifecycle, for instance\n * onRender\n */\n const lifecycles = createLifecycles();\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n const values = new Map();\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n const valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n let prevMotionValues = {};\n /**\n * When values are removed from all animation props we need to search\n * for a fallback value to animate to. These values are tracked in baseTarget.\n */\n const baseTarget = {\n ...latestValues,\n };\n /**\n * Create an object of the values we initially animated from (if initial prop present).\n */\n const initialValues = props.initial ? { ...latestValues } : {};\n // Internal methods ========================\n /**\n * On mount, this will be hydrated with a callback to disconnect\n * this visual element from its parent on unmount.\n */\n let removeFromVariantTree;\n /**\n * Render the element with the latest styles outside of the React\n * render lifecycle\n */\n function render() {\n if (!instance || !isMounted)\n return;\n triggerBuild();\n renderInstance(instance, renderState, props.style, element.projection);\n }\n function triggerBuild() {\n build(element, renderState, latestValues, options, props);\n }\n function update() {\n lifecycles.notifyUpdate(latestValues);\n }\n /**\n *\n */\n function bindToMotionValue(key, value) {\n const removeOnChange = value.onChange((latestValue) => {\n latestValues[key] = latestValue;\n props.onUpdate && sync.update(update, false, true);\n });\n const removeOnRenderRequest = value.onRenderRequest(element.scheduleRender);\n valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = scrapeMotionValuesFromProps(props);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n /**\n * Update external values with initial values\n */\n if (props.values) {\n for (const key in props.values) {\n const value = props.values[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key]);\n }\n }\n }\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n const element = {\n treeType,\n /**\n * This is a mirror of the internal instance prop, which keeps\n * VisualElement type-compatible with React's RefObject.\n */\n current: null,\n /**\n * The depth of this visual element within the visual element tree.\n */\n depth: parent ? parent.depth + 1 : 0,\n parent,\n children: new Set(),\n /**\n *\n */\n presenceId,\n shouldReduceMotion: null,\n /**\n * If this component is part of the variant tree, it should track\n * any children that are also part of the tree. This is essentially\n * a shadow tree to simplify logic around how to stagger over children.\n */\n variantChildren: isVariantNode$1 ? new Set() : undefined,\n /**\n * Whether this instance is visible. This can be changed imperatively\n * by the projection tree, is analogous to CSS's visibility in that\n * hidden elements should take up layout, and needs enacting by the configured\n * render function.\n */\n isVisible: undefined,\n /**\n * Normally, if a component is controlled by a parent's variants, it can\n * rely on that ancestor to trigger animations further down the tree.\n * However, if a component is created after its parent is mounted, the parent\n * won't trigger that mount animation so the child needs to.\n *\n * TODO: This might be better replaced with a method isParentMounted\n */\n manuallyAnimateOnMount: Boolean(parent === null || parent === void 0 ? void 0 : parent.isMounted()),\n /**\n * This can be set by AnimatePresence to force components that mount\n * at the same time as it to mount as if they have initial={false} set.\n */\n blockInitialAnimation,\n /**\n * Determine whether this component has mounted yet. This is mostly used\n * by variant children to determine whether they need to trigger their\n * own animations on mount.\n */\n isMounted: () => Boolean(instance),\n mount(newInstance) {\n isMounted = true;\n instance = element.current = newInstance;\n if (element.projection) {\n element.projection.mount(newInstance);\n }\n if (isVariantNode$1 && parent && !isControllingVariants$1) {\n removeFromVariantTree = parent === null || parent === void 0 ? void 0 : parent.addVariantChild(element);\n }\n values.forEach((value, key) => bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n element.shouldReduceMotion =\n reducedMotionConfig === \"never\"\n ? false\n : reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n parent === null || parent === void 0 ? void 0 : parent.children.add(element);\n element.setProps(props);\n },\n /**\n *\n */\n unmount() {\n var _a;\n (_a = element.projection) === null || _a === void 0 ? void 0 : _a.unmount();\n cancelSync.update(update);\n cancelSync.render(render);\n valueSubscriptions.forEach((remove) => remove());\n removeFromVariantTree === null || removeFromVariantTree === void 0 ? void 0 : removeFromVariantTree();\n parent === null || parent === void 0 ? void 0 : parent.children.delete(element);\n lifecycles.clearAllListeners();\n instance = undefined;\n isMounted = false;\n },\n loadFeatures(renderedProps, isStrict, preloadedFeatures, projectionId, ProjectionNodeConstructor, initialLayoutGroupConfig) {\n const features = [];\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (env !== \"production\" && preloadedFeatures && isStrict) {\n invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Component } = featureDefinitions[name];\n /**\n * It might be possible in the future to use this moment to\n * dynamically request functionality. In initial tests this\n * was producing a lot of duplication amongst bundles.\n */\n if (isEnabled(renderedProps) && Component) {\n features.push(createElement(Component, {\n key: name,\n ...renderedProps,\n visualElement: element,\n }));\n }\n }\n if (!element.projection && ProjectionNodeConstructor) {\n element.projection = new ProjectionNodeConstructor(projectionId, element.getLatestValues(), parent && parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, } = renderedProps;\n element.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: element,\n scheduleRender: () => element.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n });\n }\n return features;\n },\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n var _a;\n const closestVariantNode = element.getClosestVariantNode();\n if (closestVariantNode) {\n (_a = closestVariantNode.variantChildren) === null || _a === void 0 ? void 0 : _a.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n },\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!sortNodePosition || treeType !== other.treeType)\n return 0;\n return sortNodePosition(element.getInstance(), other.getInstance());\n },\n /**\n * Returns the closest variant node in the tree starting from\n * this visual element.\n */\n getClosestVariantNode: () => isVariantNode$1 ? element : parent === null || parent === void 0 ? void 0 : parent.getClosestVariantNode(),\n /**\n * Expose the latest layoutId prop.\n */\n getLayoutId: () => props.layoutId,\n /**\n * Returns the current instance.\n */\n getInstance: () => instance,\n /**\n * Get/set the latest static values.\n */\n getStaticValue: (key) => latestValues[key],\n setStaticValue: (key, value) => (latestValues[key] = value),\n /**\n * Returns the latest motion value state. Currently only used to take\n * a snapshot of the visual element - perhaps this can return the whole\n * visual state\n */\n getLatestValues: () => latestValues,\n /**\n * Set the visiblity of the visual element. If it's changed, schedule\n * a render to reflect these changes.\n */\n setVisibility(visibility) {\n if (element.isVisible === visibility)\n return;\n element.isVisible = visibility;\n element.scheduleRender();\n },\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return makeTargetAnimatable(element, target, props, canMutate);\n },\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return measureViewportBox(instance, props);\n },\n // Motion values ========================\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n if (element.hasValue(key))\n element.removeValue(key);\n values.set(key, value);\n latestValues[key] = value.get();\n bindToMotionValue(key, value);\n },\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n var _a;\n values.delete(key);\n (_a = valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n valueSubscriptions.delete(key);\n delete latestValues[key];\n removeValueFromRenderState(key, renderState);\n },\n /**\n * Check whether we have a motion value for this key\n */\n hasValue: (key) => values.has(key),\n /**\n * Get a motion value for this key. If called with a default\n * value, we'll create one if none exists.\n */\n getValue(key, defaultValue) {\n if (props.values && props.values[key]) {\n return props.values[key];\n }\n let value = values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue);\n element.addValue(key, value);\n }\n return value;\n },\n /**\n * Iterate over our motion values.\n */\n forEachValue: (callback) => values.forEach(callback),\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue: (key) => latestValues[key] !== undefined\n ? latestValues[key]\n : readValueFromInstance(instance, key, options),\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n baseTarget[key] = value;\n },\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = props;\n const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n if (getBaseTarget) {\n const target = getBaseTarget(props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n }\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : baseTarget[key];\n },\n // Lifecyles ========================\n ...lifecycles,\n /**\n * Build the renderer state based on the latest visual state.\n */\n build() {\n triggerBuild();\n return renderState;\n },\n /**\n * Schedule a render on the next animation frame.\n */\n scheduleRender() {\n sync.render(render, false, true);\n },\n /**\n * Synchronously fire render. It's prefered that we batch renders but\n * in many circumstances, like layout measurement, we need to run this\n * synchronously. However in those instances other measures should be taken\n * to batch reads/writes.\n */\n syncRender: render,\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n setProps(newProps) {\n if (newProps.transformTemplate || props.transformTemplate) {\n element.scheduleRender();\n }\n props = newProps;\n lifecycles.updatePropListeners(newProps);\n prevMotionValues = updateMotionValuesFromProps(element, scrapeMotionValuesFromProps(props), prevMotionValues);\n },\n getProps: () => props,\n // Variants ==============================\n /**\n * Returns the variant definition with a given name.\n */\n getVariant: (name) => { var _a; return (_a = props.variants) === null || _a === void 0 ? void 0 : _a[name]; },\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition: () => props.transition,\n getTransformPagePoint: () => {\n return props.transformPagePoint;\n },\n /**\n * Used by child variant nodes to get the closest ancestor variant props.\n */\n getVariantContext(startAtParent = false) {\n if (startAtParent)\n return parent === null || parent === void 0 ? void 0 : parent.getVariantContext();\n if (!isControllingVariants$1) {\n const context = (parent === null || parent === void 0 ? void 0 : parent.getVariantContext()) || {};\n if (props.initial !== undefined) {\n context.initial = props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n },\n };\n return element;\n};\nconst variantProps = [\"initial\", ...variantPriorityOrder];\nconst numVariantProps = variantProps.length;\n\nexport { visualElement };\n","import { invariant } from 'hey-listen';\n\nfunction isCSSVariable(value) {\n return typeof value === \"string\" && value.startsWith(\"var(--\");\n}\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = cssVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n return resolved.trim();\n }\n else if (isCSSVariable(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.getInstance();\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.forEachValue((value) => {\n const current = value.get();\n if (!isCSSVariable(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariable(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd && transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { cssVariableRegex, parseCSSVariable, resolveCSSVariables };\n","import { px, number } from 'style-value-types';\nimport { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from 'hey-listen';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n]);\nconst isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\n};\nconst setAndResetVelocity = (value, to) => {\n // Looks odd but setting it twice doesn't render, it'll just\n // set both prev and current to the latest value\n value.set(to, false);\n value.set(to);\n};\nconst isNumOrPxType = (v) => v === number || v === px;\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n BoundingBoxDimension[\"width\"] = \"width\";\n BoundingBoxDimension[\"height\"] = \"height\";\n BoundingBoxDimension[\"left\"] = \"left\";\n BoundingBoxDimension[\"right\"] = \"right\";\n BoundingBoxDimension[\"top\"] = \"top\";\n BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.syncRender();\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.getInstance();\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.syncRender();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n setAndResetVelocity(value, origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n setAndResetVelocity(value, to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.syncRender();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { BoundingBoxDimension, positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\n","import { visualElement } from '../index.mjs';\nimport { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariable } from '../dom/utils/is-css-variable.mjs';\nimport { parseDomVariant } from '../dom/utils/parse-dom-variant.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nconst htmlConfig = {\n treeType: \"dom\",\n readValueFromInstance(domElement, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(domElement);\n const value = (isCSSVariable(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n },\n sortNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n },\n getBaseTarget(props, key) {\n var _a;\n return (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\n },\n measureViewportBox(element, { transformPagePoint }) {\n return measureViewportBox(element, transformPagePoint);\n },\n /**\n * Reset the transform on the current Element. This is called as part\n * of a batched process across the entire layout tree. To remove this write\n * cycle it'd be interesting to see if it's possible to \"undo\" all the current\n * layout transforms up the tree in the same way this.getBoundingBoxWithoutTransforms\n * works\n */\n resetTransform(element, domElement, props) {\n const { transformTemplate } = props;\n domElement.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n // Ensure that whatever happens next, we restore our transform on the next frame\n element.scheduleRender();\n },\n restoreTransform(instance, mutableState) {\n instance.style.transform = mutableState.style.transform;\n },\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n },\n /**\n * Ensure that HTML and Framer-specific value types like `px`->`%` and `Color`\n * can be animated by Motion.\n */\n makeTargetAnimatable(element, { transition, transitionEnd, ...target }, { transformValues }, isMounted = true) {\n let origin = getOrigin(target, transition || {}, element);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (isMounted) {\n checkTargetForNewValues(element, target, origin);\n const parsed = parseDomVariant(element, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n },\n scrapeMotionValuesFromProps,\n build(element, renderState, latestValues, options, props) {\n if (element.isVisible !== undefined) {\n renderState.style.visibility = element.isVisible\n ? \"visible\"\n : \"hidden\";\n }\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n },\n render: renderHTML,\n};\nconst htmlVisualElement = visualElement(htmlConfig);\n\nexport { getComputedStyle, htmlConfig, htmlVisualElement };\n","import { visualElement } from '../index.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { htmlConfig } from '../html/visual-element.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\n\nconst svgVisualElement = visualElement({\n ...htmlConfig,\n getBaseTarget(props, key) {\n return props[key];\n },\n readValueFromInstance(domElement, key) {\n var _a;\n if (transformProps.has(key)) {\n return ((_a = getDefaultValueType(key)) === null || _a === void 0 ? void 0 : _a.default) || 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return domElement.getAttribute(key);\n },\n scrapeMotionValuesFromProps,\n build(_element, renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, props.transformTemplate);\n },\n render: renderSVG,\n});\n\nexport { svgVisualElement };\n","import { htmlVisualElement } from '../html/visual-element.mjs';\nimport { svgVisualElement } from '../svg/visual-element.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? svgVisualElement(options, { enableHardwareAcceleration: false })\n : htmlVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\n","import { px } from 'style-value-types';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mix } from 'popmotion';\nimport { complex } from 'style-value-types';\nimport { cssVariableRegex } from '../../render/dom/utils/css-variables-conversion.mjs';\n\nconst varToken = \"_$css\";\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n const containsCSSVariables = latest.includes(\"var(\");\n const cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, (match) => {\n cssVariables.push(match);\n return varToken;\n });\n }\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mix(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n let output = template(shadow);\n if (containsCSSVariables) {\n let i = 0;\n output = output.replace(varToken, () => {\n const cssVariable = cssVariables[i];\n i++;\n return cssVariable;\n });\n }\n return output;\n },\n};\n\nexport { correctBoxShadow };\n","import sync from 'framesync';\nimport React__default, { useContext } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\n\nclass MeasureLayoutWithContext extends React__default.Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n sync.postRender(() => {\n var _a;\n if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.members.length)) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (React__default.createElement(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { MeasureLayout } from './MeasureLayout.mjs';\n\nconst layoutFeatures = {\n measureLayout: MeasureLayout,\n};\n\nexport { layoutFeatures };\n","import { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { startAnimation } from './utils/transitions.mjs';\n\n/**\n * Animate a single value or a `MotionValue`.\n *\n * The first argument is either a `MotionValue` to animate, or an initial animation value.\n *\n * The second is either a value to animate to, or an array of keyframes to animate through.\n *\n * The third argument can be either tween or spring options, and optional lifecycle methods: `onUpdate`, `onPlay`, `onComplete`, `onRepeat` and `onStop`.\n *\n * Returns `AnimationPlaybackControls`, currently just a `stop` method.\n *\n * ```javascript\n * const x = useMotionValue(0)\n *\n * useEffect(() => {\n * const controls = animate(x, 100, {\n * type: \"spring\",\n * stiffness: 2000,\n * onComplete: v => {}\n * })\n *\n * return controls.stop\n * })\n * ```\n *\n * @public\n */\nfunction animate(from, to, transition = {}) {\n const value = isMotionValue(from) ? from : motionValue(from);\n startAnimation(\"\", value, to, transition);\n return {\n stop: () => value.stop(),\n isAnimating: () => value.isAnimating(),\n };\n}\n\nexport { animate };\n","import { mix, progress, circOut, linear } from 'popmotion';\nimport { percent, px } from 'style-value-types';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n var _a, _b, _c, _d;\n if (shouldCrossfadeOpacity) {\n target.opacity = mix(0, \n // (follow?.opacity as number) ?? 0,\n // TODO Reinstate this if only child\n (_a = lead.opacity) !== null && _a !== void 0 ? _a : 1, easeCrossfadeIn(progress));\n target.opacityExit = mix((_b = follow.opacity) !== null && _b !== void 0 ? _b : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mix((_c = follow.opacity) !== null && _c !== void 0 ? _c : 1, (_d = lead.opacity) !== null && _d !== void 0 ? _d : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n var _a;\n return (_a = values[radiusName]) !== null && _a !== void 0 ? _a : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, linear);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mix(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n removeAxisTransforms(box.y, transforms, yKeys, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { distance } from 'popmotion';\nimport { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\nfunction isCloseTo(a, b, max = 0.1) {\n return distance(a, b) <= max;\n}\n\nexport { aspectRatio, boxEquals, isCloseTo, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n var _a;\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n node.snapshot.isShared = true;\n }\n if ((_a = node.root) === null || _a === void 0 ? void 0 : _a.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n var _a, _b, _c, _d, _e;\n (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","const identityProjection = \"translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)\";\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n let transform = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n if (latestTransform) {\n const { rotate, rotateX, rotateY } = latestTransform;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n return transform === identityProjection ? \"none\" : transform;\n}\n\nexport { buildProjectionTransform, identityProjection };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import sync, { cancelSync, flushSync } from 'framesync';\nimport { mix } from 'popmotion';\nimport { animate } from '../../animation/animate.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEquals, isDeltaZero, isCloseTo, aspectRatio } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(id, latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to actually\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n // Note: Currently only running on root node\n this.potentialNodes = new Map();\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n this.updateProjection = () => {\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.id = id;\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n id && this.root.registerPotentialNode(id, this);\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n registerPotentialNode(id, node) {\n this.potentialNodes.set(id, node);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = false) {\n var _a;\n if (this.instance)\n return;\n this.isSVG =\n instance instanceof SVGElement && instance.tagName !== \"svg\";\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.getInstance()) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n this.id && this.root.potentialNodes.delete(this.id);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let unblockTimeout;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n clearTimeout(unblockTimeout);\n unblockTimeout = window.setTimeout(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n var _a, _b, _c, _d, _e;\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = (_b = (_a = this.options.transition) !== null && _a !== void 0 ? _a : visualElement.getDefaultTransition()) !== null && _b !== void 0 ? _b : defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEquals(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (((_c = this.resumeFrom) === null || _c === void 0 ? void 0 : _c.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged &&\n this.animationProgress === 0) {\n this.finishAnimation();\n }\n this.isLead() && ((_e = (_d = this.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d));\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n var _a, _b;\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n this.instance = undefined;\n cancelSync.preRender(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n var _a;\n return (this.isAnimationBlocked ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n var _a;\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n }\n willUpdate(shouldNotifyListeners = true) {\n var _a, _b, _c;\n if (this.root.isUpdateBlocked()) {\n (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n return;\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n /**\n * TODO: Check we haven't updated the scroll\n * since the last didUpdate\n */\n node.updateScroll();\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = (_c = this.options.visualElement) === null || _c === void 0 ? void 0 : _c.getProps().transformTemplate;\n this.prevTransformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n // Note: Currently only running on root node\n didUpdate() {\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating)\n return;\n this.isUpdating = false;\n /**\n * Search for and mount newly-added projection elements.\n *\n * TODO: Every time a new component is rendered we could search up the tree for\n * the closest mounted node and query from there rather than document.\n */\n if (this.potentialNodes.size) {\n this.potentialNodes.forEach(mountNodeEarly);\n this.potentialNodes.clear();\n }\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n // Flush any scheduled updates\n flushSync.update();\n flushSync.preRender();\n flushSync.render();\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n sync.preRender(this.updateProjection, false, true);\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n sync.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n const measured = this.measure();\n const layout = this.removeTransform(this.removeElementScroll(measured));\n roundBox(layout);\n this.snapshot = {\n measured,\n layout,\n latestValues: {},\n };\n }\n updateLayout() {\n var _a;\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const measured = this.measure();\n roundBox(measured);\n const prevLayout = this.layout;\n this.layout = {\n measured,\n actual: this.removeElementScroll(measured),\n };\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.actual);\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notifyLayoutMeasure(this.layout.actual, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.actual);\n }\n updateScroll() {\n if (this.options.layoutScroll && this.instance) {\n this.isScrollRoot = checkIsScrollRoot(this.instance);\n this.scroll = measureScroll(this.instance);\n }\n }\n resetTransform() {\n var _a;\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n const transformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure() {\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.x);\n translateAxis(box.y, scroll.y);\n }\n return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options, isScrollRoot } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (isScrollRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll.x);\n translateAxis(boxWithoutScroll.y, scroll.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.x,\n y: -node.scroll.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n var _a;\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measure();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layout, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n /**\n *\n */\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n /**\n * Frame calculations\n */\n resolveTargetDelta() {\n var _a;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent && this.relativeParent.layout) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.actual, this.relativeParent.layout.actual);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.actual);\n }\n else {\n copyBoxInto(this.target, this.layout.actual);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.actual);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent &&\n Boolean(this.relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !this.relativeParent.options.layoutScroll &&\n this.relativeParent.target) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, this.relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n }\n getClosestProjectingParent() {\n if (!this.parent || hasTransform(this.parent.latestValues))\n return undefined;\n if ((this.parent.relativeTarget || this.parent.targetDelta) &&\n this.parent.layout) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n calcProjection() {\n var _a;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n const lead = this.getLead();\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.actual);\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, Boolean(this.resumingFrom) || this !== lead);\n const { target } = lead;\n if (!target)\n return;\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n const prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a, _b, _c;\n (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n var _a;\n const snapshot = this.snapshot;\n const snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const isSharedLayoutAnimation = snapshot === null || snapshot === void 0 ? void 0 : snapshot.isShared;\n const isOnlyMember = (((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.members.length) || 0) <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n this.mixTargetDelta = (latest) => {\n var _a;\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n calcRelativePosition(relativeLayout, this.layout.actual, this.relativeParent.layout.actual);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(0);\n }\n startAnimation(options) {\n var _a, _b;\n this.notifyListeners(\"animationStart\");\n (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n if (this.resumingFrom) {\n (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n }\n if (this.pendingAnimation) {\n cancelSync.update(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = sync.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animate(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n var _a;\n this.mixTargetDelta(latest);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n },\n onComplete: () => {\n var _a;\n (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n var _a;\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n var _a;\n if (this.currentAnimation) {\n (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.actual, layout.actual)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.actual.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.actual.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its actual layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n var _a, _b, _c;\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n node.promote({\n transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n let hasRotate = false;\n // Keep a record of all the values we've reset\n const resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n const axis = transformAxes[i];\n const key = \"rotate\" + axis;\n // If this rotation doesn't exist as a motion value, then we don't\n // need to reset it\n if (!visualElement.getStaticValue(key)) {\n continue;\n }\n hasRotate = true;\n // Record the rotation and then temporarily set it to 0\n resetValues[key] = visualElement.getStaticValue(key);\n visualElement.setStaticValue(key, 0);\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n // Force a render of this element to apply the transform with all rotations\n // set to 0.\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp = {}) {\n var _a, _b, _c;\n // TODO: Return lifecycle-persistent object\n const styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n const transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_c = (_b = valuesToRender.opacity) !== null && _b !== void 0 ? _b : this.latestValues.opacity) !== null && _c !== void 0 ? _c : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its actual\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n const corrected = correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a, _b, _c;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { actual: layout, measured: measuredLayout } = node.layout;\n const { animationType } = node.options;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layout, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layout);\n const visualDelta = createDelta();\n if (snapshot.isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measured);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layout);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n node.relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (node.relativeParent && !node.relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = node.relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layout, parentSnapshot.layout);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.actual);\n if (!boxEquals(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n (_c = (_b = node.options).onExitComplete) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notifyBeforeLayoutMeasure();\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nfunction mountNodeEarly(node, id) {\n /**\n * Rather than searching the DOM from document we can search the\n * path for the deepest mounted ancestor and search from there\n */\n let searchNode = node.root;\n for (let i = node.path.length - 1; i >= 0; i--) {\n if (Boolean(node.path[i].instance)) {\n searchNode = node.path[i];\n break;\n }\n }\n const searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n const element = searchElement.querySelector(`[data-projection-id=\"${id}\"]`);\n if (element)\n node.mount(element, true);\n}\nfunction roundAxis(axis) {\n axis.min = Math.round(axis.min);\n axis.max = Math.round(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isCloseTo(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\n\nexport { createProjectionNode, mixAxis, mixAxisDelta, mixBox };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode(0, {});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layoutFeatures } from '../../motion/features/layout/index.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst featureBundle = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layoutFeatures,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, featureBundle, createDomVisualElement, HTMLProjectionNode));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, featureBundle, createDomVisualElement, HTMLProjectionNode));\n}\n\nexport { createDomMotionComponent, motion };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n projectionNodeConstructor,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n strings: Array<string>,\n interpolations: Array<Interpolation>\n): Array<Interpolation> => {\n const result = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n x !== null &&\n typeof x === 'object' &&\n (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n target: $PropertyType<IStyledComponent, 'target'>\n): string {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n // $FlowFixMe\n target.displayName ||\n // $FlowFixMe\n target.name ||\n 'Component'\n );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY =\n Boolean(typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' && process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false' ? false : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : (typeof process !== 'undefined' && typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false' ? false : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n )\n ));\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: Array<any>\n) {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n throw new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n\n length: number;\n\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number): number {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]): void {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throwStyledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number): void {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number): string {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return (groupIDRegister.get(id): any);\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (\n process.env.NODE_ENV !== 'production' &&\n ((group | 0) < 0 || group > MAX_SMI)\n ) {\n throwStyledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n if (group >= nextFreeGroup) {\n nextFreeGroup = group + 1;\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (!names || !rules || !names.size) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n // eslint-disable-next-line\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent || '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = ((nodes[i]: any): HTMLStyleElement);\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n const { childNodes } = target;\n\n for (let i = childNodes.length; i >= 0; i--) {\n const child = ((childNodes[i]: any): ?HTMLElement);\n if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n return ((child: any): HTMLStyleElement);\n }\n }\n\n return undefined;\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n const head = ((document.head: any): HTMLElement);\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return ((tag.sheet: any): CSSStyleSheet);\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return ((sheet: any): CSSStyleSheet);\n }\n }\n\n throwStyledError(17);\n return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList<Node>;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n server: boolean;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n\n baseStyle: ?ComponentStyle;\n\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n staticRulesId: string;\n\n constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic = process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n this.baseHash = phash(SEED, componentId);\n\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n const { componentId } = this;\n\n const names = [];\n\n if (this.baseStyle) {\n names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n }\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n names.push(this.staticRulesId);\n } else {\n const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n styleSheet.insertRules(componentId, name, cssStaticFormatted);\n }\n\n names.push(name);\n this.staticRulesId = name;\n }\n } else {\n const { length } = this.rules;\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n } else if (partRule) {\n const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n styleSheet.insertRules(componentId, name, cssFormatted);\n }\n\n names.push(name);\n }\n }\n\n return names.join(' ');\n }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n options?: Object,\n plugins?: Array<Function>,\n};\n\nexport default function createStylisInstance({\n options = EMPTY_OBJECT,\n plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n const stylis = new Stylis(options);\n\n // Wrap `insertRulePlugin to build a list of rules,\n // and then make our own plugin to return the rules. This\n // makes it easier to hook into the existing SSR architecture\n\n let parsingRules = [];\n\n // eslint-disable-next-line consistent-return\n const returnRulesPlugin = context => {\n if (context === -2) {\n const parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n };\n\n const parseRulesPlugin = insertRulePlugin(rule => {\n parsingRules.push(rule);\n });\n\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n let _consecutiveSelfRefRegExp: RegExp;\n\n const selfReferenceReplacer = (match, offset, string) => {\n if (\n // do not replace the first occurrence if it is complex (has a modifier)\n (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n !string.match(_consecutiveSelfRefRegExp)\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n */\n const selfReferenceReplacementPlugin = (context, _, selectors) => {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n const flatCSS = css.replace(COMMENT_REGEX, '');\n const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n return stylis(prefix || !selector ? '' : selector, cssStr);\n }\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n const delimiter = '/*|*/';\n const needle = `${delimiter}}`;\n\n function toSheet(block) {\n if (block) {\n try {\n insertRule(`${block}}`);\n } catch (e) {}\n }\n }\n\n return function ruleSheet(\n context,\n content,\n selectors,\n parents,\n line,\n column,\n length,\n ns,\n depth,\n at\n ) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n break;\n // selector\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n default:\n return content + (at === 0 ? delimiter : '');\n }\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n children?: Node,\n disableCSSOMInjection?: boolean,\n disableVendorPrefixes?: boolean,\n sheet?: StyleSheet,\n stylisPlugins?: Array<Function>,\n target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context<StyleSheet | void> = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context<Stringifier | void> = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const contextStyleSheet = useStyleSheet();\n\n const styleSheet = useMemo(() => {\n let sheet = contextStyleSheet;\n\n if (props.sheet) {\n // eslint-disable-next-line prefer-destructuring\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { prefix: !props.disableVendorPrefixes },\n plugins,\n }),\n [props.disableVendorPrefixes, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n return (\n <StyleSheetContext.Provider value={styleSheet}>\n <StylisContext.Provider value={stylis}>\n {process.env.NODE_ENV !== 'production'\n ? React.Children.only(props.children)\n : props.children}\n </StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n return uppercaseCheck.test(string)\n ? string\n .replace(uppercasePattern, prefixAndLowerCase)\n .replace(msPattern, '-ms-')\n : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array<string | Function> => {\n const rules = [];\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n rules.push(`${hyphenate(key)}:`, obj[key], ';');\n } else if (isPlainObject(obj[key])) {\n rules.push(...objToCssArray(obj[key], key));\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n }\n }\n\n return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n chunk: any,\n executionContext: ?Object,\n styleSheet: ?Object,\n stylisInstance: ?Stringifier\n): any {\n if (Array.isArray(chunk)) {\n const ruleSet = [];\n\n for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n if (result === '') continue;\n else if (Array.isArray(result)) ruleSet.push(...result);\n else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return '';\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return `.${chunk.styledComponentId}`;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n // eslint-disable-next-line no-console\n console.warn(\n `${getComponentName(\n chunk\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten(result, executionContext, styleSheet, stylisInstance);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return chunk.getName(stylisInstance);\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n return (\n typeof test === 'function'\n && !(\n test.prototype\n && test.prototype.isReactComponent\n )\n );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless)) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n if (Array.isArray(arg)) {\n // eslint-disable-next-line no-param-reassign\n arg.isCss = true;\n }\n return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array<Interpolation>): RuleSet {\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n }\n\n if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n // $FlowFixMe\n return styles;\n }\n\n // $FlowFixMe\n return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error // eslint-disable-line no-console\n try {\n let didNotCallInvalidHook = true\n /* $FlowIgnore[cannot-write] */\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n }\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n // eslint-disable-next-line no-console\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(error.message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n /* $FlowIgnore[cannot-write] */\n console.error = originalConsoleError; // eslint-disable-line no-console\n }\n }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n return (\n str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '')\n );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType<IStyledComponent, 'target'>): boolean %checks {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","/* eslint-disable */\n/**\n mixin-deep; https://github.com/jonschlinkert/mixin-deep\n Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n The MIT License (MIT)\n\n Copyright (c) 2014-present, Jon Schlinkert.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\n\nconst isObject = val => {\n return (\n typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n );\n};\n\nconst isValidKey = key => {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n const obj = target[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n target[key] = val;\n }\n}\n\nexport default function mixinDeep(target, ...rest) {\n for (const obj of rest) {\n if (isObject(obj)) {\n for (const key in obj) {\n if (isValidKey(key)) {\n mixin(target, obj[key], key);\n }\n }\n }\n }\n\n return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n children?: Element<any>,\n theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context<Theme | void> = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n if (!theme) {\n return throwStyledError(14);\n }\n\n if (isFunction(theme)) {\n const mergedTheme = theme(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n return throwStyledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n return throwStyledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n const outerTheme = useContext(ThemeContext);\n const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n props.theme,\n outerTheme,\n ]);\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs<Config>(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle<T>(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call<typeof createWarnTooManyClasses, string, string>\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref<any>,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp\n ? shouldForwardProp(key, validAttr, elementToBeCreated)\n : isTargetTag\n ? validAttr(key)\n : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType<IStyledComponent, 'target'>,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn,\n elementToBeCreated\n ) &&\n ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n WrappedStyledComponent.toString = () => `.${WrappedStyledComponent.styledComponentId}`;\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType<IStyledComponent, 'target'>,\n { [key: $Keys<IStyledStatics>]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType<IStyledComponent, 'target'>), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n target: $PropertyType<IStyledComponent, 'target'>\n): string {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'textPath',\n 'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n componentConstructor: Function,\n tag: Target,\n options: Object = EMPTY_OBJECT\n) {\n if (!isValidElementType(tag)) {\n return throwStyledError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = config =>\n constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = attrs =>\n constructWithOptions(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n if (!css) return '';\n\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return `<style ${htmlAttr}>${css}</style>`;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [<style {...props} key=\"sc-0-0\" />];\n };\n\n // eslint-disable-next-line consistent-return\n interleaveWithNodeStream(input: any) {\n if (!__SERVER__ || IS_BROWSER) {\n return throwStyledError(3);\n } else if (this.sealed) {\n return throwStyledError(2);\n }\n\n if (__SERVER__) {\n this.seal();\n\n // eslint-disable-next-line global-require\n const { Readable, Transform } = require('stream');\n\n const readableStream: Readable = input;\n const { instance: sheet, _emitSheetCSS } = this;\n\n const transformer = new Transform({\n transform: function appendStyleChunks(chunk, /* encoding */ _, callback) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml = chunk.toString();\n const html = _emitSheetCSS();\n\n sheet.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (CLOSING_TAG_R.test(renderedHtml)) {\n const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n\n this.push(before + html + after);\n } else {\n this.push(html + renderedHtml);\n }\n\n callback();\n },\n });\n\n readableStream.on('error', err => {\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n }\n }\n\n seal = () => {\n this.sealed = true;\n };\n}\n","// @flow\n\nimport css from './css';\nimport generateComponentId from '../utils/generateComponentId';\nimport Keyframes from '../models/Keyframes';\n\nimport type { Interpolation, Styles } from '../types';\n\nexport default function keyframes(\n strings: Styles,\n ...interpolations: Array<Interpolation>\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = css(strings, ...interpolations).join('');\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { motion } from \"framer-motion\";\nimport styled from \"styled-components\";\n\nconst Loader = styled(motion.div)`\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n`;\n\nconst LoadingSpinner = () => {\n return (\n <Loader>\n <>\n <br />\n <motion.div\n animate={{\n rotate: 360,\n borderRadius: [\"50% 50%\", \"2% 50%\"],\n x: 75,\n }}\n initial={{\n x: -75,\n }}\n transition={{\n flip: Infinity,\n duration: 2,\n ease: \"easeInOut\",\n }}\n style={{\n height: \"50px\",\n background: \"#f67736\",\n width: \"50px\",\n borderRadius: \"2% 50%\",\n }}\n ></motion.div>\n </>\n </Loader>\n );\n};\n\nexport default LoadingSpinner;\n","// @flow\n/* Import singletons */\nimport isStyledComponent from './utils/isStyledComponent';\nimport css from './constructors/css';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport keyframes from './constructors/keyframes';\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport { SC_VERSION } from './constants';\n\nimport StyleSheetManager, {\n StyleSheetContext,\n StyleSheetConsumer,\n} from './models/StyleSheetManager';\n\n/* Import components */\nimport ThemeProvider, { ThemeContext, ThemeConsumer } from './models/ThemeProvider';\n\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n\n/* Import hooks */\nimport useTheme from './hooks/useTheme';\n\ndeclare var __SERVER__: boolean;\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n // eslint-disable-next-line no-console\n console.warn(\n \"It looks like you've imported 'styled-components' on React Native.\\n\" +\n \"Perhaps you're looking to import 'styled-components/native'?\\n\" +\n 'Read more about this at https://www.styled-components.com/docs/basics#react-native'\n );\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined') {\n window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n if (window['__styled-components-init__'] === 1) {\n // eslint-disable-next-line no-console\n console.warn(\n \"It looks like there are several instances of 'styled-components' initialized in this application. \" +\n 'This may cause dynamic styles to not render properly, errors during the rehydration process, ' +\n 'a missing theme prop, and makes your application bigger without good reason.\\n\\n' +\n 'See https://s-c.sh/2BAXzed for more info.'\n );\n }\n\n window['__styled-components-init__'] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport {\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","import React from \"react\";\nimport \"./ErrorMessage.scss\";\n\nconst ErrorMessage = () => {\n return (\n <div className=\"error-message\">\n Vi fant ingen treff for søkeresultatene dine.\n </div>\n );\n};\n\nexport default ErrorMessage;\n","export const Discounticon = () => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" fill=\"none\">\n <path d=\"M24.625 16.1875L11.125 2.6875H2.6875V11.125L16.1875 24.625L24.625 16.1875Z\" stroke=\"url(#paint0_linear_3725_15)\" strokeMiterlimit=\"10\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M6.90625 8.59375C5.97427 8.59375 5.21875 7.83823 5.21875 6.90625C5.21875 5.97427 5.97427 5.21875 6.90625 5.21875C7.83823 5.21875 8.59375 5.97427 8.59375 6.90625C8.59375 7.83823 7.83823 8.59375 6.90625 8.59375Z\" stroke=\"url(#paint1_linear_3725_15)\" strokeMiterlimit=\"10\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M6.0625 6.0625L1 1\" stroke=\"url(#paint2_linear_3725_15)\" strokeMiterlimit=\"10\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M11.9688 8.59375L18.7188 15.3438\" stroke=\"url(#paint3_linear_3725_15)\" strokeMiterlimit=\"10\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M8.59375 11.9688L11.9688 15.3438\" stroke=\"url(#paint4_linear_3725_15)\" strokeMiterlimit=\"10\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <defs>\n <linearGradient id=\"paint0_linear_3725_15\" x1=\"13.6562\" y1=\"2.6875\" x2=\"13.6562\" y2=\"24.625\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"#EF8439\"/>\n <stop offset=\"1\" stopColor=\"#E7463F\"/>\n </linearGradient>\n <linearGradient id=\"paint1_linear_3725_15\" x1=\"6.90625\" y1=\"5.21875\" x2=\"6.90625\" y2=\"8.59375\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"#EF8439\"/>\n <stop offset=\"1\" stopColor=\"#E7463F\"/>\n </linearGradient>\n <linearGradient id=\"paint2_linear_3725_15\" x1=\"3.53125\" y1=\"1\" x2=\"3.53125\" y2=\"6.0625\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"#EF8439\"/>\n <stop offset=\"1\" stopColor=\"#E7463F\"/>\n </linearGradient>\n <linearGradient id=\"paint3_linear_3725_15\" x1=\"15.3438\" y1=\"8.59375\" x2=\"15.3438\" y2=\"15.3438\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"#EF8439\"/>\n <stop offset=\"1\" stopColor=\"#E7463F\"/>\n </linearGradient>\n <linearGradient id=\"paint4_linear_3725_15\" x1=\"10.2812\" y1=\"11.9688\" x2=\"10.2812\" y2=\"15.3438\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"#EF8439\"/>\n <stop offset=\"1\" stopColor=\"#E7463F\"/>\n </linearGradient>\n </defs>\n </svg>\n );\n };\n ","import \"./RoofPrice.scss\";\nimport { Leftarrowicon } from \"../../components/icons/Leftarrowicon\";\nimport { Closeicon } from \"../../components/icons/Closeicon\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setShow } from \"../../store/Show/action\";\nimport { useNavigate } from \"react-router\";\nimport { Arrowdownicon } from \"../icons/Arrowdownicon\";\nimport Solkarthvit from \"../../assets/images/solkarthvit.png\";\nimport RoofPanel from \"../RoofPanel/RoofPanel\";\nimport LoadingSpinner from \"../LoadingSpinner/LoadingSpinner\";\nimport ErrorMessage from \"../ErrorMessage/ErrorMessage\";\nimport { useState, useEffect } from \"react\";\nimport { getRoofInfo, setRoofInfo } from \"../../store/Roof/action\";\nimport { TooltipComponentBack } from \"../TooltipComponent/TooltipComponent\";\nimport { TooltipComponentClose } from \"../TooltipComponent/TooltipComponent\";\nimport {\n setEnova,\n setOrderInfo,\n setOrderPanelCount,\n setOrderRoofInfo,\n setPanelType,\n setRoofInformation,\n setUserComment,\n} from \"../../store/Order/action\";\nimport premiumPanel from \"../../assets/images/premiumpanel.png\";\nimport performancePanel from \"../../assets/images/performancepanel.png\";\nimport economyPanel from \"../../assets/images/economypanel.png\";\nimport { getRoofCalculation } from \"../../api/getRoofCalculation\";\nimport { Discounticon } from \"../icons/Discounticon\";\n\nconst RoofPrice = () => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n let roofInfo = useSelector((state) => state.Roof.roofInfo);\n let panelCount = useSelector((state) => state.Order.panelCount);\n let roofInformation = useSelector((state) => state.Order.roofInformation);\n let finalAddress = useSelector((state) => state.Address.finalAddress);\n let orderInfo = useSelector((state) => state.Order);\n const [showDropdown, setShowDropdown] = useState(false);\n const [showMore, setShowMore] = useState(false);\n const [type, setType] = useState(\"Premium - 405Wp\");\n const [enovaSupport, setEnoveSupport] = useState(0);\n const [netPrice, setNetPrice] = useState(0);\n const [lcoe, setLcoe] = useState(0);\n const [finalRoof, setFinalRoof] = useState([]);\n const [comment, setComment] = useState(\"\");\n const [showType405, setShowType405] = useState(false);\n const [showType435, setShowType435] = useState(false);\n const [showType510, setShowType510] = useState(false);\n const [discount, setDiscount] = useState(\"\");\n const [isTyping, setIsTyping] = useState(false);\n const [panelDiscount, setPanelDiscount] = useState(0);\n const [financingRequired, setFinancingRequired] = useState(false);\n const [showPopup, setShowPopup] = useState(false);\n\n useEffect(() => {\n if (Object.keys(roofInfo).length > 0 && !roofInfo.message) {\n let tempFinalRoof = [];\n let count;\n let discount = 0;\n\n for (const key in roofInfo.paneler) {\n let max = roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler;\n let found;\n if (panelCount === \"\") {\n found = roofInfo.paneler.find(\n (element) => element.pris * 1.25 >= 190000\n );\n } else {\n found = roofInfo.paneler.find(\n (element) => element.antallPaneler === panelCount\n );\n }\n\n if (found !== undefined) {\n count = found.antallPaneler;\n discount = found.discount;\n } else {\n count = roofInfo.paneler[roofInfo.paneler.length - 1].antallPaneler;\n }\n\n if (max < count) {\n dispatch(setOrderPanelCount(max));\n } else {\n dispatch(setOrderPanelCount(count));\n }\n if (roofInfo.paneler[key].antallPaneler === +panelCount) {\n tempFinalRoof.push(roofInfo.paneler[key]);\n setFinalRoof(tempFinalRoof);\n }\n }\n setPanelDiscount(discount * 1.25);\n }\n }, [roofInfo, panelCount]);\n\n useEffect(() => {\n if (Object.keys(roofInfo).length > 0 && !roofInfo.message) {\n let tempFinalRoof = [];\n for (const key in roofInfo.paneler) {\n if (roofInfo.paneler[key].antallPaneler === +panelCount) {\n tempFinalRoof.push(roofInfo.paneler[key]);\n setFinalRoof(tempFinalRoof);\n }\n }\n }\n }, [panelCount]);\n useEffect(() => {\n if (finalRoof.length > 0) {\n let result = getRoofCalculation(finalRoof[0]);\n setLcoe(result.lcoeC);\n setEnoveSupport(result.enova);\n setNetPrice(result.netP);\n dispatch(setEnova(result.enova));\n }\n }, [finalRoof]);\n\n const changePaenlType = (panelType) => {\n setShowType405(false);\n setShowType435(false);\n setShowType510(false);\n setShowDropdown(!showDropdown);\n\n if (\n roofInfo.forutsetninger.takType !== 2 &&\n roofInfo.forutsetninger.takType !== 9\n ) {\n if (panelType === \"405Wp\") {\n if (finalAddress.Helning < 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 84,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 84 }));\n } else if (finalAddress.Helning > 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 82,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 82 }));\n }\n } else if (panelType === \"435Wp\") {\n if (finalAddress.Helning < 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 87,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 87 }));\n } else if (finalAddress.Helning > 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 85,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 85 }));\n }\n } else if (panelType === \"455Wp\") {\n if (finalAddress.Helning < 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 89,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 89 }));\n } else if (finalAddress.Helning > 10) {\n finalAddress = {\n ...finalAddress,\n produkttype: 88,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 88 }));\n }\n }\n } else {\n if (panelType === \"405Wp\") {\n finalAddress = {\n ...finalAddress,\n produkttype: 84,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 84 }));\n } else if (panelType === \"435Wp\") {\n finalAddress = {\n ...finalAddress,\n produkttype: 87,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 87 }));\n } else if (panelType === \"455Wp\") {\n finalAddress = {\n ...finalAddress,\n produkttype: 89,\n };\n dispatch(setRoofInformation({ ...roofInformation, produkttype: 89 }));\n }\n }\n\n dispatch(getRoofInfo(finalAddress));\n };\n const handleAskApply = async () => {\n if (discount) {\n finalRoof[0].voucherCode = discount;\n finalAddress = {\n ...finalAddress,\n voucherCode: discount,\n produkttype: roofInformation.produkttype,\n };\n dispatch(getRoofInfo(finalAddress));\n if (roofInfo.validVoucher) {\n dispatch(setPanelType(type));\n dispatch(\n setOrderRoofInfo({\n lcoe: lcoe,\n anProd: finalRoof[0].kwtAar,\n })\n );\n dispatch(setOrderInfo(finalRoof[0]));\n if (orderInfo.partnerId === 10024 || orderInfo.partnerId === 10004) {\n dispatch(\n setOrderInfo({\n ...finalRoof[0],\n financingRequired: financingRequired,\n })\n );\n } else {\n dispatch(setOrderInfo(finalRoof[0]));\n }\n dispatch(setUserComment(comment));\n }\n }\n };\n\n const handleAskQuote = async () => {\n dispatch(setShow(\"step3\"));\n dispatch(setPanelType(type));\n dispatch(\n setOrderRoofInfo({\n lcoe: lcoe,\n anProd: finalRoof[0].kwtAar,\n })\n );\n dispatch(setOrderInfo(finalRoof[0]));\n if (orderInfo.partnerId === 10024 || orderInfo.partnerId === 10004) {\n dispatch(\n setOrderInfo({\n ...finalRoof[0],\n financingRequired: financingRequired,\n voucherCode: discount,\n })\n );\n } else {\n dispatch(setOrderInfo(finalRoof[0]));\n }\n dispatch(setUserComment(comment));\n };\n\n const showRabatt = () => {\n if (roofInfo.validVoucher) {\n return true;\n }\n return false;\n };\n return (\n <div className=\"roof-price-section\">\n <div className=\"roof-price-header\">\n <div>\n <button\n data-for=\"main\"\n data-tip=\"Tilbake til taktype\"\n onClick={() => {\n dispatch(setShow(\"step1\"));\n dispatch(setRoofInfo(\"\"));\n dispatch(setOrderPanelCount(\"\"));\n }}>\n <Leftarrowicon />\n </button>\n <span>Tilbake til taktype</span>\n <TooltipComponentBack />\n </div>\n <div>\n <span>Trinn 2 av 3</span>\n </div>\n <div>\n <button\n data-for=\"mains\"\n data-tip=\"Avbryt\"\n onClick={() => {\n navigate(\"/\");\n dispatch(setShow(\"step1\"));\n dispatch(setRoofInfo(\"\"));\n }}>\n <Closeicon />\n </button>\n <span>Avbryt</span>\n <TooltipComponentClose />\n </div>\n </div>\n {Object.keys(roofInfo).length > 0 &&\n finalRoof.length > 0 &&\n !roofInfo.message ? (\n <>\n <div className=\"roof-price-container\">\n <div className=\"roof-price-check\">\n <div className=\"roof-price-info\">\n <div className=\"roof-price-list\">\n <div className=\"annual-production\">\n <p>Estimert Ã¥rlig produksjon</p>\n <p>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(finalRoof[0].kwtAar))\n .replace(\",\", \" \")}{\" \"}\n kWh\n </p>\n </div>\n <div className=\"nettopris\">\n <p>Pris etter ENOVA støtte</p>\n <p>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(netPrice))\n .replace(\",\", \" \")}{\" \"}\n NOK\n </p>\n </div>\n <div className=\"size\">\n <p>Størrelse</p>\n <p>{(finalRoof[0].kwp / 1000).toFixed(2)} kWp</p>\n </div>\n <div className=\"delivery-time\">\n <p>Leveringstid</p>\n <p>4-8 uker</p>\n </div>\n </div>\n <div className=\"dropdown\">\n <div\n className=\"roof-price-dropdown\"\n onClick={() => {\n setShowDropdown(!showDropdown);\n setShowType405(showType405 ? false : \"\");\n setShowType435(showType435 ? false : \"\");\n setShowType510(showType510 ? false : \"\");\n setShowMore(showMore ? false : \"\");\n }}>\n <div>\n <p>Type solcellepanel</p>\n <div>\n <p>{type} </p>\n {!showType405 ? (\n <button\n className=\"les-mer\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMore(!showMore);\n setShowDropdown(!showDropdown);\n setShowType405(showType405 ? false : \"\");\n setShowType435(showType435 ? false : \"\");\n setShowType510(showType510 ? false : \"\");\n }}>\n {!showMore ? \"Les mer\" : \"Lese mindre\"}\n </button>\n ) : (\n \"\"\n )}\n </div>\n </div>\n <div>\n <button>\n <Arrowdownicon />\n </button>\n </div>\n </div>\n <div\n className={`${\n showDropdown || showMore ? \"expanded\" : \"collapsed\"\n } roof-price-dropdown-container`}\n style={\n showMore\n ? { height: \"380px\", overflowY: \"scroll\" }\n : { height: \"\", overflowY: \"hidden\" }\n }>\n <div className=\"roof-price-365W\">\n {!showMore ? (\n <div className=\"roof-price-365W-title\">\n Premium - 405Wp\n {!showType405 ? (\n <button\n className=\"choose\"\n onClick={(e) => {\n e.stopPropagation();\n setType(\"Premium - 405Wp\");\n changePaenlType(\"405Wp\");\n }}>\n Velg\n </button>\n ) : (\n \"\"\n )}\n </div>\n ) : (\n \"\"\n )}\n {showMore && type === \"Premium - 405Wp\" ? (\n <div\n className=\"roof-price-365W-container\"\n style={\n showMore\n ? { display: \"grid\", height: \"500px\" }\n : { display: \"none\", height: \"\" }\n }>\n <div>\n <img\n src={premiumPanel}\n alt=\"Solcellepanel 365W\"\n className=\"solcellepanel-type\"\n />\n </div>\n <div className=\"roof-price-dropdown-section\">\n <h1>Premium - 405Wp</h1>\n <div className=\"badge\">Farge svart</div>\n <div className=\"roof-price-dropdown-list\">\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>Helsvarte utførelse.</span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>405Wp</span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>\n 12Ã¥rs produktgaranti/25Ã¥rs effekt garanti.\n </span>\n </div>\n </div>\n <div className=\"roof-price-dropdown-info\">\n Et godt valg for deg som ønsker et billigst mulig\n anlegg. God effektutnyttelse av et fysisk mindre\n panel. Panelet har integrerte bypass dioder for\n maksimal effekt.\n </div>\n </div>\n </div>\n ) : (\n \"\"\n )}\n </div>\n <div className=\"roof-price-395W\">\n {!showMore ? (\n <div className=\"roof-price-395W-title\">\n Performance - 435Wp\n {!showType435 ? (\n <button\n className=\"choose\"\n onClick={(e) => {\n e.stopPropagation();\n setType(\"Performance - 435Wp\");\n changePaenlType(\"435Wp\");\n }}>\n Velg\n </button>\n ) : (\n \"\"\n )}\n </div>\n ) : (\n \"\"\n )}\n {showMore && type === \"Performance - 435Wp\" ? (\n <div\n className=\"roof-price-395W-container\"\n style={\n type === \"Performance - 435Wp\"\n ? { display: \"grid\", height: \"500px\" }\n : { display: \"none\", height: \"\" }\n }>\n <div>\n <img\n src={performancePanel}\n alt=\"Solcellepanel 395W\"\n className=\"solcellepanel-type\"\n />\n </div>\n <div className=\"roof-price-dropdown-section\">\n <h1>Performance - 435Wp</h1>\n <div className=\"badge\">Farge svart</div>\n <div className=\"roof-price-dropdown-list\">\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>Helsvart utførelse</span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>435Wp</span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>\n 15Ã¥rs produkt garanti / 25Ã¥rs effektgaranti\n </span>\n </div>\n </div>\n <div className=\"roof-price-dropdown-info\">\n VÃ¥r bestselger! Eksepsjonell verdi for pengene fra\n en av bransjens ledende aktører. Panelene har\n bypassdioder og er svært effektive i skygge.\n Panelene inneholder ingen fluor og har et svært\n lavt innhold av ledd.\n </div>\n </div>\n </div>\n ) : (\n \"\"\n )}\n </div>\n <div className=\"roof-price-510W\">\n {!showMore ? (\n <div className=\"roof-price-510W-title\">\n Economy - 455Wp\n {!showType435 ? (\n <button\n className=\"choose\"\n onClick={(e) => {\n e.stopPropagation();\n setType(\"Economy - 455Wp\");\n changePaenlType(\"455Wp\");\n }}>\n Velg\n </button>\n ) : (\n \"\"\n )}\n </div>\n ) : (\n \"\"\n )}\n {showMore && type === \"Economy - 455Wp\" ? (\n <div\n className=\"roof-price-510W-container\"\n style={\n type === \"Economy - 455Wp\"\n ? { display: \"grid\", height: \"500px\" }\n : { display: \"none\", height: \"\" }\n }>\n <div>\n <img\n src={economyPanel}\n alt=\"Solcellepanel 455W\"\n className=\"solcellepanel-type\"\n />\n </div>\n <div className=\"roof-price-dropdown-section\">\n <h1>Economy - 455Wp</h1>\n <div className=\"badge\">Farge svart</div>\n <div className=\"roof-price-dropdown-list\">\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>\n Svarte celler og ramme, Hvit backsheet.\n </span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>455Wp</span>\n </div>\n <div>\n <img src={Solkarthvit} alt=\"Solkart\" />\n <span>\n 12Ã¥rs produktgaranti/ 25 Ã¥rs effektgaranti\n </span>\n </div>\n </div>\n <div className=\"roof-price-dropdown-info\">\n Panelet for deg som ønsker mest mulig produksjon\n eller ønsker mest mulig produksjon ut av en mindre\n takflate.\n </div>\n </div>\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n </div>\n\n <div className=\"roof-price-table\">\n <div>\n <h4>Pris for ditt anlegg</h4>\n </div>\n <div>\n <span>Totalpris</span>\n <span>=</span>\n\n <span>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(finalRoof[0].pris * 1.25))\n .replace(\",\", \" \")}\n </span>\n </div>\n <div>\n <span>Støtte fra ENOVA</span>\n <span>-</span>\n <span>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(enovaSupport))\n .replace(\",\", \" \")}\n </span>\n </div>\n {showRabatt() ? (\n <div>\n <span>Rabatt</span>\n <span>-</span>\n <span>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(panelDiscount))\n .replace(\",\", \" \")}\n </span>\n </div>\n ) : (\n \"\"\n )}\n\n <div>\n <span>Pris etter ENOVA støtte</span>\n <span>=</span>\n <span>\n {Intl.NumberFormat(\"en-US\")\n .format(Math.ceil(netPrice - panelDiscount))\n .replace(\",\", \" \")}\n </span>\n </div>\n <div>\n <span>Priser er i NOK og ink MVA</span>\n <span></span>\n <span></span>\n </div>\n {orderInfo.partnerId === 10024 ||\n orderInfo.partnerId === 10004 ? (\n <div className=\"banking-container\">\n <div className=\"financing-card\">\n <span>\n <p>Ønsker du Ã¥ fÃ¥ finansiering?</p>\n <div>\n <button\n className=\"les-mer\"\n onClick={() => setShowPopup(true)}>\n Les Mer\n </button>\n </div>\n </span>\n <span className=\"toggle-container\">\n <span className=\"nei-ja\">Nei</span>\n <span>\n <label className=\"toggle\">\n <input\n type=\"checkbox\"\n onChange={(e) =>\n setFinancingRequired(e.target.checked)\n }\n />\n <span className=\"slider\"></span>\n </label>\n </span>\n <span className=\"nei-ja\">Ja</span>\n </span>\n </div>\n </div>\n ) : (\n \"\"\n )}\n <div className=\"kommentar\">\n <span>Kommentar</span>\n <span>\n <textarea\n name=\"\"\n id=\"\"\n cols=\"\"\n rows=\"5\"\n placeholder=\" Her kan du skrive om du har noen ønske\"\n onChange={(e) => {\n setComment(e.target.value);\n }}></textarea>\n </span>\n </div>\n </div>\n {orderInfo.partnerId === 10024 ||\n orderInfo.partnerId === 10004 ? (\n <div className=\"discount-container\">\n <span>\n <span className=\"input-icons\">\n <input\n type=\"text\"\n placeholder=\"Skriv inn rabattkode\"\n value={discount}\n disabled={roofInfo.validVoucher === true}\n onChange={(e) => {\n setDiscount(e.target.value);\n setIsTyping(e.target.value.length > 0);\n }}\n />\n <Discounticon />\n </span>\n {roofInfo.validVoucher !== undefined &&\n roofInfo.validVoucher === false && (\n <p>\n Ugyldig rabattkode. Venligst skriv inn en annen kode\n </p>\n )}\n </span>\n <button\n className=\"ask-for-apply\"\n onClick={handleAskApply}\n disabled={roofInfo.validVoucher === true}\n style={\n roofInfo.validVoucher === true\n ? { cursor: \"not-allowed\" }\n : { cursor: \"pointer\" }\n }>\n Søk rabattkoden\n </button>\n </div>\n ) : (\n \"\"\n )}\n\n <button className=\"ask-for-quote\" onClick={handleAskQuote}>\n Be om et tilbud\n </button>\n </div>\n </div>\n <RoofPanel data={{ lcoe: lcoe, anProd: finalRoof[0].kwtAar }} />\n </div>\n <div className=\"price-information\">\n <p>\n * Solkart tar ikke hensyn til snø og lokale skyggeforhold (fra\n trær, andre bygninger ol.) nÃ¥r produksjonsestimatet genereres.\n Tallmaterialet bør derfor ikke være ditt eneste grunnlag for Ã¥\n gjøre en solcelleinvestering. Prisen inkluderer tilskudd til\n strømproduksjon fra Enova. Alle priser inkluderer mva.\n </p>\n <br />\n <p>\n Estimatet over hva anlegget kan produsere er basert pÃ¥\n tilgjengelig informasjon. Det kan forekomme lokale variasjoner,\n som høye trær, nye bygg og andre topografiske forhold som pÃ¥virker\n produksjonen. Dersom det er slike forhold i nærheten av boligen,\n er dette forhold som kan medføre at produksjonen blir vesentlig\n annerledes enn estimatet viser\n </p>\n <br />\n Klikk pÃ¥ et av alternativene for ytterligere spesifikasjoner.{\" \"}\n </div>\n </>\n ) : roofInfo.message ? (\n <div className=\"error-message\">\n <ErrorMessage />\n </div>\n ) : (\n <div>\n <LoadingSpinner />\n </div>\n )}\n {showPopup && (\n <div className=\"banking-menu-popup\">\n <div className=\"popup-content\">\n <h1>\n Nyhet!\n <br />\n Solcelle lÃ¥n via Svea finans\n </h1>\n <p className=\"first-p\">\n Vi tilbyr nÃ¥ rentefri nedbetaling opp til 5Ã¥r via vÃ¥r\n finansieringspartner Svea.\n </p>\n <p className=\"second-p\">Maksgrense 200 000,-</p>\n <hr />\n <h3>SÃ¥ enkel fÃ¥r du et tilbud om finansiering:</h3>\n <ol>\n <li> Huk av \"Ja\" pÃ¥ finansieringen.</li>\n <li>\n Du fÃ¥r et priseksempel pÃ¥ finansiering sammen med tilbudet du\n forsperr\n </li>\n <li>Ved aksept vil du motta tilbud pÃ¥ finansiering.</li>\n </ol>\n <hr />\n <h3>Eksempelordre pÃ¥ 100 000,- finansiert over 5 Ã¥r (60 mnd):</h3>\n <div className=\"sikkerhet-content\">\n <div>\n <h3>LÃ¥n uten sikkerhet</h3>\n <ul>\n <li>Totalpris: 105 499,-</li>\n <li>Etableringsgebyr: 999,-</li>\n <li>Terminer (antall mnd): 60</li>\n <li>Effektiv rente: 2,17%</li>\n <li>Termingebyr: 75,-</li>\n <li>MÃ¥nedskostnad: 1 758,-</li>\n <li>Ã…rlig rente: 0%</li>\n </ul>\n </div>\n </div>\n <div className=\"note-content\">\n <p>\n (Obs, mÃ¥nedskostnad er oppgitt som snitt, men hele\n etableringsgebyret pÃ¥løper første faktura - det vil si den\n første blir høyere, alle de neste noe lavere, enn oppgitt\n mÃ¥nedskostnad)\n </p>\n <p>\n Utfyllende vilkÃ¥r, samt de generelle vilkÃ¥r (som gjøres\n gjeldende ved manglende eller delvis betaling av en termin)\n finnes her:{\" \"}\n <a\n href=\"https://www.svea.com/kontovilkar\"\n target=\"_blank\"\n rel=\"noreferrer\">\n https://www.svea.com/kontovilkar\n </a>\n </p>\n </div>\n <div className=\"button-container\">\n <button onClick={() => setShowPopup(false)}>Lukk</button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default RoofPrice;\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n names.has(getNodeParentName(name));\n","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","export default <TValue>(value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default <T>(obj: T, path: string, defaultValue?: unknown): any => {\n if (!path || !isObject(obj)) {\n return defaultValue;\n }\n\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) =>\n isNullOrUndefined(result) ? result : result[key as keyof {}],\n obj,\n );\n\n return isUndefined(result) || result === obj\n ? isUndefined(obj[path as keyof T])\n ? defaultValue\n : obj[path as keyof T]\n : result;\n};\n","import { ValidationMode } from './types';\n\nexport const EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default <TFieldValues extends FieldValues>(\n formState: FormState<TFieldValues>,\n control: Control<TFieldValues>,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n const result = {\n defaultValues: control._defaultValues,\n } as typeof formState;\n\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key as keyof FormState<TFieldValues> & keyof ReadFormState;\n\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n\n return result;\n};\n","import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n React.useContext(HookFormContext) as unknown as UseFormReturn<TFieldValues>;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useFrom methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const FormProvider = <TFieldValues extends FieldValues, TContext = any>(\n props: FormProviderProps<TFieldValues, TContext>,\n) => {\n const { children, ...data } = props;\n return (\n <HookFormContext.Provider value={data as unknown as UseFormReturn}>\n {children}\n </HookFormContext.Provider>\n );\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport { ReadFormState } from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default <T extends Record<string, any>, K extends ReadFormState>(\n formStateData: T,\n _proxyFormState: K,\n isRoot?: boolean,\n) => {\n const { name, ...formState } = formStateData;\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n","import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props<T> = {\n disabled?: boolean;\n subject: Subject<T>;\n callback: (value: T) => void;\n};\n\nexport function useSubscribe<T>(props: Props<T>) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const subscription =\n !props.disabled &&\n _props.current.subject.subscribe({\n next: _props.current.callback,\n });\n\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { FieldValues, InternalFieldName, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default (\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n) => {\n const isArray = Array.isArray(names);\n if (isString(names)) {\n isGlobal && _names.watch.add(names as InternalFieldName);\n return get(formValues, names as InternalFieldName);\n }\n\n if (isArray) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName as InternalFieldName),\n get(formValues, fieldName as InternalFieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isFunction from './isFunction';\n\nexport default <T>(data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n object: FieldValues,\n path: string,\n value?: unknown,\n) {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n}\n","import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst focusFieldBy = (\n fields: FieldRefs,\n callback: (name: string) => boolean,\n fieldsNames?: Set<InternalFieldName> | InternalFieldName[],\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const { _f, ...currentField } = field;\n\n if (_f && callback(_f.name)) {\n if (_f.ref.focus) {\n _f.ref.focus();\n break;\n } else if (_f.refs && _f.refs[0].focus) {\n _f.refs[0].focus();\n break;\n }\n } else if (isObject(currentField)) {\n focusFieldBy(currentField, callback);\n }\n }\n }\n};\n\nexport default focusFieldBy;\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport compact from '../utils/compact';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default <T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\n error: Partial<Record<string, FieldError>>,\n name: InternalFieldName,\n): FieldErrors<T> => {\n const fieldArrayErrors = compact(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","import React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n isString(value) || React.isValidElement(value as JSX.Element);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n InternalFieldErrors,\n Message,\n NativeFieldValue,\n} from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async <T extends NativeFieldValue>(\n field: Field,\n inputValue: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise<InternalFieldErrors> => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n disabled,\n } = field._f;\n if (!mount || disabled) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType = INPUT_VALIDATION_RULES.maxLength,\n minType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n if (isString(maxOutput.value)) {\n exceedMax = valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value)) {\n exceedMin = valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (\n (maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n ) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import isObject from './isObject';\n\nexport default (tempObject: object) => {\n const prototypeCopy =\n tempObject.constructor && tempObject.constructor.prototype;\n\n return (\n isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n );\n};\n","export default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject<T>(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (\n !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : {};\n\n if (!Array.isArray(data) && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n copy[key] = cloneObject(data[key]);\n }\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","export default <T>(value: T | T[]): undefined[] | undefined =>\n Array.isArray(value) ? value.map(() => undefined) : undefined;\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n mode?: Mode,\n): {\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnAll: boolean;\n isOnTouch: boolean;\n} => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n for (const key in obj) {\n if (!isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\n\nexport default function unset(object: any, path: string) {\n const updatePath = isKey(path) ? [path] : stringToPath(path);\n const childObject =\n updatePath.length == 1 ? object : baseGet(object, updatePath);\n const key = updatePath[updatePath.length - 1];\n let previousObjRef;\n\n if (childObject) {\n delete childObject[key];\n }\n\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\n let index = -1;\n let objectRef;\n const currentPaths = updatePath.slice(0, -(k + 1));\n const currentPathsLength = currentPaths.length - 1;\n\n if (k > 0) {\n previousObjRef = object;\n }\n\n while (++index < currentPaths.length) {\n const item = currentPaths[index];\n objectRef = objectRef ? objectRef[item] : object[item];\n\n if (\n currentPathsLength === index &&\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\n (Array.isArray(objectRef) && isEmptyArray(objectRef)))\n ) {\n previousObjRef ? delete previousObjRef[item] : delete object[item];\n }\n\n previousObjRef = objectRef;\n }\n }\n\n return object;\n}\n","import { Noop } from '../types';\n\nexport type Observer<T> = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n readonly observers: Observer<T>[];\n subscribe: (value: Observer<T>) => Subscription;\n unsubscribe: Noop;\n} & Observer<T>;\n\nexport default function createSubject<T>(): Subject<T> {\n let _observers: Observer<T>[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer<T>): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n}\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","export default (value: unknown): value is HTMLElement => {\n const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n const ElementClass =\n owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;\n return value instanceof ElementClass;\n};\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty<U>(data: U, fields: Record<string, any> = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues<T>(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: any,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default <T>(defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default <TFieldValues extends FieldValues>(\n fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record<InternalFieldName, Field['_f']> = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName<TFieldValues>[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends ValidationValue>(\n rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n isUndefined(rule)\n ? undefined\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\n errors: FieldErrors<T>,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","export default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial<{\n isOnSubmit: boolean;\n isOnBlur: boolean;\n isOnChange: boolean;\n isOnTouch: boolean;\n isOnAll: boolean;\n }>,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default <T>(ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n Ref,\n ResolverResult,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UseFormClearErrors,\n UseFormGetFieldState,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport getValidationModes from '../utils/getValidationModes';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport focusFieldBy from './focusFieldBy';\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): Omit<UseFormReturn<TFieldValues, TContext>, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState<TFieldValues> = {\n submitCount: 0,\n isDirty: false,\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n errors: {},\n };\n let _fields = {};\n let _defaultValues = cloneObject(_options.defaultValues) || {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _stateFlags = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n } as Names;\n let delayErrorCallback: DelayCallback | null;\n let timer = 0;\n let validateFields: Record<InternalFieldName, number> = {};\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects<TFieldValues> = {\n watch: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n <T extends Function>(callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = window.setTimeout(callback, wait);\n };\n\n const _updateValid = async (shouldSkipRender?: boolean) => {\n let isValid = false;\n\n if (_proxyFormState.isValid) {\n isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n\n if (!shouldSkipRender && isValid !== _formState.isValid) {\n _formState.isValid = isValid;\n _subjects.state.next({\n isValid,\n });\n }\n }\n\n return isValid;\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method) {\n _stateFlags.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (\n _proxyFormState.errors &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))\n ) {\n const errors = method(\n get(_formState.errors, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (\n _proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))\n ) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs: boolean,\n value?: unknown,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(\n _formValues,\n name,\n isUndefined(value) ? get(_defaultValues, name) : value,\n );\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n\n _stateFlags.mount && _updateValid();\n }\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isBlurEvent?: boolean,\n shouldDirty?: boolean,\n shouldRender?: boolean,\n ): Partial<\n Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let isFieldDirty = false;\n const output: Partial<FormState<TFieldValues>> & { name: string } = {\n name,\n };\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (_proxyFormState.isDirty) {\n const isPreviousFormDirty = _formState.isDirty;\n\n _formState.isDirty = output.isDirty = _getDirty();\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\n }\n\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\n const isCurrentFieldPristine = deepEqual(\n get(_defaultValues, name),\n fieldValue,\n );\n\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n isFieldDirty =\n isFieldDirty ||\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\n }\n\n if (isBlurEvent && !isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n isFieldDirty =\n isFieldDirty ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n\n isFieldDirty && shouldRender && _subjects.state.next(output);\n\n return isFieldDirty ? output : {};\n };\n\n const shouldRenderByError = async (\n name: InternalFieldName,\n isValid: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean<TFieldValues>;\n },\n ): Promise<void> => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid && _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n\n validateFields[name]--;\n\n if (\n _proxyFormState.isValidating &&\n !Object.values(validateFields).some((v) => v)\n ) {\n _subjects.state.next({\n isValidating: false,\n });\n validateFields = {};\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) =>\n _options.resolver\n ? await _options.resolver(\n { ..._formValues } as TFieldValues,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n )\n : ({} as ResolverResult<TFieldValues>);\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema();\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n\n return errors;\n };\n\n const executeBuiltInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const { _f, ...fieldValue } = field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const fieldError = await validateField(\n field,\n get(_formValues, _f.name),\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n isFieldArrayRoot,\n );\n\n if (fieldError[_f.name]) {\n context.valid = false;\n\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(\n _formState.errors,\n fieldError,\n _f.name,\n )\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n\n fieldValue &&\n (await executeBuiltInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath<TFieldValues>);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) => (\n name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues)\n );\n\n const _getWatch: WatchInternal<TFieldValues> = (\n names,\n defaultValue,\n isGlobal,\n ) => {\n const fieldValues = {\n ...(_stateFlags.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n };\n\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\n };\n\n const _getFieldArray = <TFieldArrayValues>(\n name: InternalFieldName,\n ): Partial<TFieldArrayValues>[] =>\n compact(\n get(\n _stateFlags.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue<TFieldValues>,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (optionRef) =>\n (optionRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(optionRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.watch.next({\n name,\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(\n name,\n fieldValue,\n options.shouldTouch,\n options.shouldDirty,\n true,\n );\n\n options.shouldValidate && trigger(name as Path<TFieldValues>);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue<TFieldValues>,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}` as Path<TFieldValues>;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue<TFieldValues> = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: _formValues,\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n\n _subjects.state.next({\n name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getDirty(name, cloneValue),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({});\n _subjects.watch.next({\n name,\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n const target = event.target;\n let name = target.name;\n const field: Field = get(_fields, name);\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent =\n event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.watch.next({\n name,\n type: event.type,\n });\n\n if (shouldSkipValidation) {\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({});\n\n validateFields[name] = validateFields[name] ? +1 : 1;\n\n _subjects.state.next({\n isValidating: true,\n });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n } else {\n error = (\n await validateField(\n field,\n get(_formValues, name),\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n\n isValid = await _updateValid(true);\n }\n\n field._f.deps &&\n trigger(\n field._f.deps as FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\n );\n\n shouldRenderByError(name, isValid, error, fieldState);\n }\n };\n\n const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n _subjects.state.next({\n isValidating: true,\n });\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver ? { isValid } : {}),\n errors: _formState.errors,\n isValidating: false,\n });\n\n options.shouldFocus &&\n !validationResult &&\n focusFieldBy(\n _fields,\n (key) => get(_formState.errors, key),\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues<TFieldValues> = (\n fieldNames?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>,\n ) => {\n const values = {\n ..._defaultValues,\n ...(_stateFlags.mount ? _formValues : {}),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames as InternalFieldName)\n : fieldNames.map((name) => get(values, name as InternalFieldName));\n };\n\n const getFieldState: UseFormGetFieldState<TFieldValues> = (\n name,\n formState,\n ) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n error: get((formState || _formState).errors, name),\n });\n\n const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n name\n ? convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n )\n : (_formState.errors = {});\n\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n const ref = ((get(_fields, name, { _f: {} }) as Field)._f || {}).ref;\n\n set(_formState.errors, name, {\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch<TFieldValues> = (\n name?:\n | FieldPath<TFieldValues>\n | ReadonlyArray<FieldPath<TFieldValues>>\n | WatchObserver<TFieldValues>,\n defaultValue?: unknown,\n ) =>\n isFunction(name)\n ? _subjects.watch.subscribe({\n next: (info) =>\n name(\n _getWatch(undefined, defaultValue as DeepPartial<TFieldValues>),\n info as {\n name?: FieldPath<TFieldValues>;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue as DeepPartial<TFieldValues>,\n true,\n );\n\n const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (get(_fields, fieldName)) {\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n }\n\n _subjects.watch.next({});\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled);\n\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n field\n ? disabledIsDefined &&\n set(\n _formValues,\n name,\n options.disabled\n ? undefined\n : get(_formValues, name, getFieldValue(field._f)),\n )\n : updateValidAndValue(name, true, options.value);\n\n return {\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n ...(_options.shouldUseNativeValidation\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue<number>(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n\n if (\n radioOrCheckbox\n ? refs.find((option: Ref) => option === fieldRef)\n : fieldRef === field._f.ref\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(!!Array.isArray(get(_defaultValues, name))\n ? [{}]\n : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const handleSubmit: UseFormHandleSubmit<TFieldValues> =\n (onValid, onInvalid) => async (e) => {\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let hasNoPromiseError = true;\n let fieldValues: any = cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n try {\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n isSubmitting: true,\n });\n await onValid(fieldValues, e);\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n\n _options.shouldFocusError &&\n focusFieldBy(\n _fields,\n (key) => get(_formState.errors, key),\n _names.mount,\n );\n }\n } catch (err) {\n hasNoPromiseError = false;\n throw err;\n } finally {\n _formState.isSubmitted = true;\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful:\n isEmptyObject(_formState.errors) && hasNoPromiseError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n }\n };\n\n const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, get(_defaultValues, name));\n } else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, options.defaultValue);\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, get(_defaultValues, name))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset<TFieldValues> = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues || _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const values =\n formValues && !isEmptyObject(formValues)\n ? cloneUpdatedValues\n : _defaultValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath<TFieldValues>,\n get(values, fieldName),\n );\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n try {\n if (isHTMLElement(fieldReference)) {\n fieldReference.closest('form')!.reset();\n break;\n }\n } catch {}\n }\n }\n }\n\n _fields = {};\n }\n\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneUpdatedValues;\n\n _subjects.array.next({\n values,\n });\n\n _subjects.watch.next({\n values,\n });\n }\n\n _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _stateFlags.mount =\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n\n _stateFlags.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty:\n keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\n ? _formState.isDirty\n : !!(\n keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)\n ),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields:\n keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\n ? _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitting: false,\n isSubmitSuccessful: false,\n });\n };\n\n const reset: UseFormReset<TFieldValues> = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? formValues(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n\n return {\n control: {\n register,\n unregister,\n getFieldState,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _getFieldArray,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _stateFlags() {\n return _stateFlags;\n },\n set _stateFlags(value) {\n _stateFlags = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n","export const Usericon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"19\"\n viewBox=\"0 0 17 19\"\n fill=\"none\"\n >\n <path\n d=\"M11.8535 10.375C10.834 10.375 10.377 10.9375 8.72461 10.9375C7.03711 10.9375 6.58008 10.375 5.56055 10.375C2.95898 10.375 0.849609 12.5195 0.849609 15.1211V16.5625C0.849609 17.5117 1.58789 18.25 2.53711 18.25H14.9121C15.8262 18.25 16.5996 17.5117 16.5996 16.5625V15.1211C16.5996 12.5195 14.4551 10.375 11.8535 10.375ZM15.4746 16.5625C15.4746 16.8789 15.1934 17.125 14.9121 17.125H2.53711C2.2207 17.125 1.97461 16.8789 1.97461 16.5625V15.1211C1.97461 13.1172 3.55664 11.5 5.56055 11.5C6.26367 11.5 6.93164 12.0625 8.72461 12.0625C10.4824 12.0625 11.1855 11.5 11.8535 11.5C13.8574 11.5 15.4746 13.1172 15.4746 15.1211V16.5625ZM8.72461 9.25C11.1855 9.25 13.2246 7.24609 13.2246 4.75C13.2246 2.28906 11.1855 0.25 8.72461 0.25C6.22852 0.25 4.22461 2.28906 4.22461 4.75C4.22461 7.24609 6.22852 9.25 8.72461 9.25ZM8.72461 1.375C10.5527 1.375 12.0996 2.92188 12.0996 4.75C12.0996 6.61328 10.5527 8.125 8.72461 8.125C6.86133 8.125 5.34961 6.61328 5.34961 4.75C5.34961 2.92188 6.86133 1.375 8.72461 1.375Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Addresscardicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"17\"\n viewBox=\"0 0 22 17\"\n fill=\"none\"\n >\n <path\n d=\"M18.8496 0.375H3.09961C1.83398 0.375 0.849609 1.39453 0.849609 2.625V13.875C0.849609 15.1406 1.83398 16.125 3.09961 16.125H18.8496C20.0801 16.125 21.0996 15.1406 21.0996 13.875V2.625C21.0996 1.39453 20.0801 0.375 18.8496 0.375ZM19.9746 13.875C19.9746 14.5078 19.4473 15 18.8496 15H3.09961C2.4668 15 1.97461 14.5078 1.97461 13.875V2.625C1.97461 2.02734 2.4668 1.5 3.09961 1.5H18.8496C19.4473 1.5 19.9746 2.02734 19.9746 2.625V13.875ZM17.4434 9.375H13.5059C13.3301 9.375 13.2246 9.51562 13.2246 9.65625V10.2188C13.2246 10.3945 13.3301 10.5 13.5059 10.5H17.4434C17.584 10.5 17.7246 10.3945 17.7246 10.2188V9.65625C17.7246 9.51562 17.584 9.375 17.4434 9.375ZM17.4434 7.125H13.5059C13.3301 7.125 13.2246 7.26562 13.2246 7.40625V7.96875C13.2246 8.14453 13.3301 8.25 13.5059 8.25H17.4434C17.584 8.25 17.7246 8.14453 17.7246 7.96875V7.40625C17.7246 7.26562 17.584 7.125 17.4434 7.125ZM17.4434 4.875H13.5059C13.3301 4.875 13.2246 5.01562 13.2246 5.15625V5.71875C13.2246 5.89453 13.3301 6 13.5059 6H17.4434C17.584 6 17.7246 5.89453 17.7246 5.71875V5.15625C17.7246 5.01562 17.584 4.875 17.4434 4.875ZM8.16211 9.375C9.70898 9.375 10.9746 8.14453 10.9746 6.5625C10.9746 5.01562 9.70898 3.75 8.16211 3.75C6.58008 3.75 5.34961 5.01562 5.34961 6.5625C5.34961 8.14453 6.58008 9.375 8.16211 9.375ZM8.16211 4.875C9.07617 4.875 9.84961 5.64844 9.84961 6.5625C9.84961 7.51172 9.07617 8.25 8.16211 8.25C7.21289 8.25 6.47461 7.51172 6.47461 6.5625C6.47461 5.64844 7.21289 4.875 8.16211 4.875ZM9.7793 9.9375C9.11133 9.9375 8.93555 10.1836 8.16211 10.1836C7.35352 10.1836 7.17773 9.9375 6.50977 9.9375C5.77148 9.9375 5.0332 10.2891 4.61133 10.9219C4.36523 11.3086 4.22461 11.7305 4.22461 12.2227V13.0312C4.22461 13.207 4.33008 13.3125 4.50586 13.3125H5.06836C5.20898 13.3125 5.34961 13.207 5.34961 13.0312V12.2227C5.34961 11.9766 5.41992 11.7656 5.56055 11.5547C5.73633 11.2383 6.08789 11.0977 6.50977 11.0977C6.93164 11.0977 7.24805 11.3438 8.16211 11.3438C9.07617 11.3438 9.35742 11.0977 9.7793 11.0977C10.2012 11.0977 10.5527 11.2734 10.7637 11.5547C10.9043 11.7656 10.9746 11.9766 10.9746 12.2227V13.0312C10.9746 13.207 11.0801 13.3125 11.2559 13.3125H11.8184C11.959 13.3125 12.0996 13.207 12.0996 13.0312V12.2227C12.0996 11.7305 11.959 11.3086 11.6777 10.9219C11.2559 10.2891 10.5176 9.9375 9.7793 9.9375Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Housegreyicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"19\"\n viewBox=\"0 0 22 19\"\n fill=\"none\"\n >\n <path\n d=\"M20.8887 8.75781L18.8496 6.96484V1.9375C18.8496 1.65625 18.5684 1.375 18.2871 1.375H14.9121C14.5957 1.375 14.3496 1.65625 14.3496 1.9375V3.02734L11.3262 0.390625C11.2207 0.320312 11.1152 0.285156 10.9746 0.285156C10.7988 0.285156 10.6934 0.320312 10.5879 0.390625L1.02539 8.75781C0.919922 8.86328 0.814453 9.03906 0.814453 9.21484C0.814453 9.49609 1.0957 9.77734 1.37695 9.77734C1.55273 9.77734 1.6582 9.70703 1.76367 9.63672L3.09961 8.47656V16.5625C3.09961 17.5117 3.83789 18.25 4.78711 18.25H17.1621C18.0762 18.25 18.8145 17.5117 18.8496 16.5625V8.47656L20.1504 9.63672C20.2559 9.70703 20.3613 9.74219 20.502 9.74219C20.8184 9.74219 21.0645 9.49609 21.0645 9.17969C21.0645 9.03906 20.9941 8.86328 20.8887 8.75781ZM17.7246 16.5625C17.7246 16.8789 17.4434 17.125 17.1621 17.125H4.78711C4.4707 17.125 4.22461 16.8789 4.22461 16.5625V7.49219L10.9746 1.58594L17.7246 7.49219V16.5625ZM17.7246 5.98047L15.4746 4.01172V2.5H17.7246V5.98047ZM8.16211 7.94922V11.7109C8.16211 12.2383 8.54883 12.625 9.07617 12.625H12.8379C13.3652 12.625 13.752 12.2383 13.7871 11.7109V7.94922C13.752 7.42188 13.3652 7.03516 12.8379 7H9.07617C8.54883 7.03516 8.16211 7.42188 8.16211 7.94922ZM9.28711 8.125H12.6621V11.5H9.28711V8.125Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Buildinggreyicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"19\"\n viewBox=\"0 0 17 19\"\n fill=\"none\"\n >\n <path\n d=\"M7.59961 4.01172C7.59961 3.80078 7.38867 3.58984 7.17773 3.58984H5.77148C5.52539 3.58984 5.34961 3.80078 5.34961 4.01172V5.41797C5.34961 5.66406 5.52539 5.83984 5.77148 5.83984H7.17773C7.38867 5.83984 7.59961 5.66406 7.59961 5.41797V4.01172ZM11.6777 3.58984H10.2715C10.0254 3.58984 9.84961 3.80078 9.84961 4.01172V5.41797C9.84961 5.66406 10.0254 5.83984 10.2715 5.83984H11.6777C11.8887 5.83984 12.0996 5.66406 12.0996 5.41797V4.01172C12.0996 3.80078 11.8887 3.58984 11.6777 3.58984ZM7.17773 6.96484H5.77148C5.52539 6.96484 5.34961 7.17578 5.34961 7.38672V8.79297C5.34961 9.03906 5.52539 9.21484 5.77148 9.21484H7.17773C7.38867 9.21484 7.59961 9.03906 7.59961 8.79297V7.38672C7.59961 7.17578 7.38867 6.96484 7.17773 6.96484ZM11.6777 6.96484H10.2715C10.0254 6.96484 9.84961 7.17578 9.84961 7.38672V8.79297C9.84961 9.03906 10.0254 9.21484 10.2715 9.21484H11.6777C11.8887 9.21484 12.0996 9.03906 12.0996 8.79297V7.38672C12.0996 7.17578 11.8887 6.96484 11.6777 6.96484ZM7.17773 10.3398H5.77148C5.52539 10.3398 5.34961 10.5508 5.34961 10.7617V12.168C5.34961 12.4141 5.52539 12.5898 5.77148 12.5898H7.17773C7.38867 12.5898 7.59961 12.4141 7.59961 12.168V10.7617C7.59961 10.5508 7.38867 10.3398 7.17773 10.3398ZM11.6777 10.3398H10.2715C10.0254 10.3398 9.84961 10.5508 9.84961 10.7617V12.168C9.84961 12.4141 10.0254 12.5898 10.2715 12.5898H11.6777C11.8887 12.5898 12.0996 12.4141 12.0996 12.168V10.7617C12.0996 10.5508 11.8887 10.3398 11.6777 10.3398ZM16.5996 17.5469C16.5996 17.3359 16.3887 17.125 16.1777 17.125H15.4746V1.09375C15.4746 0.636719 15.0879 0.25 14.6309 0.25H2.81836C2.32617 0.25 1.97461 0.636719 1.97461 1.09375V17.125H1.27148C1.02539 17.125 0.849609 17.3359 0.849609 17.5469V18.25H16.5996V17.5469ZM14.3496 17.125H9.84961V14.1367C9.84961 13.9258 9.63867 13.7148 9.42773 13.7148H8.02148C7.77539 13.7148 7.59961 13.9258 7.59961 14.1367V17.125H3.09961V1.375H14.3496V17.125Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Cityicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"19\"\n viewBox=\"0 0 24 19\"\n fill=\"none\"\n >\n <path\n d=\"M5.49023 13.1875H4.08398C3.83789 13.1875 3.66211 13.3984 3.66211 13.6094V15.0156C3.66211 15.2617 3.83789 15.4375 4.08398 15.4375H5.49023C5.70117 15.4375 5.91211 15.2617 5.91211 15.0156V13.6094C5.91211 13.3984 5.70117 13.1875 5.49023 13.1875ZM5.49023 9.8125H4.08398C3.83789 9.8125 3.66211 10.0234 3.66211 10.2344V11.6406C3.66211 11.8867 3.83789 12.0625 4.08398 12.0625H5.49023C5.70117 12.0625 5.91211 11.8867 5.91211 11.6406V10.2344C5.91211 10.0234 5.70117 9.8125 5.49023 9.8125ZM5.49023 6.4375H4.08398C3.83789 6.4375 3.66211 6.64844 3.66211 6.85938V8.26562C3.66211 8.51172 3.83789 8.6875 4.08398 8.6875H5.49023C5.70117 8.6875 5.91211 8.51172 5.91211 8.26562V6.85938C5.91211 6.64844 5.70117 6.4375 5.49023 6.4375ZM8.86523 13.1875H7.45898C7.21289 13.1875 7.03711 13.3984 7.03711 13.6094V15.0156C7.03711 15.2617 7.21289 15.4375 7.45898 15.4375H8.86523C9.07617 15.4375 9.28711 15.2617 9.28711 15.0156V13.6094C9.28711 13.3984 9.07617 13.1875 8.86523 13.1875ZM8.86523 9.8125H7.45898C7.21289 9.8125 7.03711 10.0234 7.03711 10.2344V11.6406C7.03711 11.8867 7.21289 12.0625 7.45898 12.0625H8.86523C9.07617 12.0625 9.28711 11.8867 9.28711 11.6406V10.2344C9.28711 10.0234 9.07617 9.8125 8.86523 9.8125ZM8.86523 6.4375H7.45898C7.21289 6.4375 7.03711 6.64844 7.03711 6.85938V8.26562C7.03711 8.51172 7.21289 8.6875 7.45898 8.6875H8.86523C9.07617 8.6875 9.28711 8.51172 9.28711 8.26562V6.85938C9.28711 6.64844 9.07617 6.4375 8.86523 6.4375ZM15.6152 9.8125H14.209C13.9629 9.8125 13.7871 10.0234 13.7871 10.2344V11.6406C13.7871 11.8867 13.9629 12.0625 14.209 12.0625H15.6152C15.8262 12.0625 16.0371 11.8867 16.0371 11.6406V10.2344C16.0371 10.0234 15.8262 9.8125 15.6152 9.8125ZM15.6152 6.4375H14.209C13.9629 6.4375 13.7871 6.64844 13.7871 6.85938V8.26562C13.7871 8.51172 13.9629 8.6875 14.209 8.6875H15.6152C15.8262 8.6875 16.0371 8.51172 16.0371 8.26562V6.85938C16.0371 6.64844 15.8262 6.4375 15.6152 6.4375ZM15.6152 3.0625H14.209C13.9629 3.0625 13.7871 3.27344 13.7871 3.48438V4.89062C13.7871 5.13672 13.9629 5.3125 14.209 5.3125H15.6152C15.8262 5.3125 16.0371 5.13672 16.0371 4.89062V3.48438C16.0371 3.27344 15.8262 3.0625 15.6152 3.0625ZM20.1152 13.1875H18.709C18.4629 13.1875 18.2871 13.3984 18.2871 13.6094V15.0156C18.2871 15.2617 18.4629 15.4375 18.709 15.4375H20.1152C20.3262 15.4375 20.5371 15.2617 20.5371 15.0156V13.6094C20.5371 13.3984 20.3262 13.1875 20.1152 13.1875ZM20.1152 9.8125H18.709C18.4629 9.8125 18.2871 10.0234 18.2871 10.2344V11.6406C18.2871 11.8867 18.4629 12.0625 18.709 12.0625H20.1152C20.3262 12.0625 20.5371 11.8867 20.5371 11.6406V10.2344C20.5371 10.0234 20.3262 9.8125 20.1152 9.8125ZM22.5059 7H18.8496V1.09375C18.8496 0.636719 18.4629 0.25 18.0059 0.25H11.8184C11.3262 0.25 10.9746 0.636719 10.9746 1.09375V3.625H8.72461V0.53125C8.72461 0.390625 8.58398 0.25 8.44336 0.25H7.88086C7.70508 0.25 7.59961 0.390625 7.59961 0.53125V3.625H5.34961V0.53125C5.34961 0.390625 5.20898 0.25 5.06836 0.25H4.50586C4.33008 0.25 4.22461 0.390625 4.22461 0.53125V3.625H1.69336C1.20117 3.625 0.849609 4.01172 0.849609 4.46875V17.9688C0.849609 18.1445 0.955078 18.25 1.13086 18.25H1.69336C1.83398 18.25 1.97461 18.1445 1.97461 17.9688V4.75H12.0996V1.375H17.7246V8.125H22.2246V17.9688C22.2246 18.1445 22.3301 18.25 22.5059 18.25H23.0684C23.209 18.25 23.3496 18.1445 23.3496 17.9688V7.84375C23.3496 7.38672 22.9629 7 22.5059 7Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Envelopeiconmin = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"19\"\n height=\"14\"\n viewBox=\"0 0 19 14\"\n fill=\"none\"\n >\n <path\n d=\"M17.1621 0.5H2.53711C1.58789 0.5 0.849609 1.27344 0.849609 2.1875V12.3125C0.849609 13.2617 1.58789 14 2.53711 14H17.1621C18.0762 14 18.8496 13.2617 18.8496 12.3125V2.1875C18.8496 1.27344 18.0762 0.5 17.1621 0.5ZM2.53711 1.625H17.1621C17.4434 1.625 17.7246 1.90625 17.7246 2.1875V3.66406C16.9512 4.29688 15.8262 5.21094 12.416 7.91797C11.8184 8.41016 10.6582 9.53516 9.84961 9.5C9.00586 9.53516 7.8457 8.41016 7.24805 7.91797C3.83789 5.21094 2.71289 4.29688 1.97461 3.66406V2.1875C1.97461 1.90625 2.2207 1.625 2.53711 1.625ZM17.1621 12.875H2.53711C2.2207 12.875 1.97461 12.6289 1.97461 12.3125V5.10547C2.74805 5.77344 4.01367 6.79297 6.54492 8.79688C7.2832 9.39453 8.54883 10.6602 9.84961 10.625C11.1152 10.6602 12.3809 9.39453 13.1191 8.79688C15.6504 6.79297 16.916 5.77344 17.7246 5.10547V12.3125C17.7246 12.6289 17.4434 12.875 17.1621 12.875Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","export const Phoneiconmin = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n >\n <path\n d=\"M14.9121 0.375H2.53711C1.58789 0.375 0.849609 1.14844 0.849609 2.0625V14.4375C0.849609 15.3867 1.58789 16.125 2.53711 16.125H14.9121C15.8262 16.125 16.5996 15.3867 16.5996 14.4375V2.0625C16.5996 1.14844 15.8262 0.375 14.9121 0.375ZM15.4746 14.4375C15.4746 14.7539 15.1934 15 14.9121 15H2.53711C2.2207 15 1.97461 14.7539 1.97461 14.4375V2.0625C1.97461 1.78125 2.2207 1.5 2.53711 1.5H14.9121C15.1934 1.5 15.4746 1.78125 15.4746 2.0625V14.4375ZM13.541 3.15234L11.4668 2.66016C11.3965 2.66016 11.3262 2.66016 11.2207 2.66016C10.7988 2.66016 10.4473 2.90625 10.2715 3.25781L9.32227 5.47266C9.14648 5.89453 9.28711 6.42188 9.63867 6.70312L10.4824 7.40625C9.84961 8.49609 8.93555 9.41016 7.8457 10.043L7.14258 9.19922C6.86133 8.84766 6.33398 8.70703 5.91211 8.88281L3.69727 9.83203C3.24023 10.043 2.99414 10.5352 3.09961 11.0273L3.5918 13.1016C3.69727 13.5586 4.11914 13.875 4.61133 13.875C9.99023 13.875 14.3496 9.55078 14.3496 4.13672C14.3496 3.67969 13.998 3.25781 13.541 3.15234ZM4.64648 12.75L4.22461 10.8516L6.29883 9.97266L7.5293 11.4492C9.70898 10.4297 10.834 9.30469 11.8887 7.08984L10.4121 5.85938L11.291 3.78516L13.1895 4.20703C13.1543 8.91797 9.35742 12.7148 4.64648 12.75Z\"\n fill=\"#C9C5C5\"\n />\n </svg>\n );\n};\n","import \"./RoofOrder.scss\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router\";\nimport { setShow } from \"../../store/Show/action\";\nimport { Closeicon } from \"../icons/Closeicon\";\nimport { Leftarrowicon } from \"../icons/Leftarrowicon\";\nimport { useForm } from \"react-hook-form\";\nimport { Usericon } from \"../icons/Usericon\";\nimport { Addresscardicon } from \"../icons/Addresscardicon\";\nimport { Housegreyicon } from \"../icons/Housegreyicon\";\nimport { Buildinggreyicon } from \"../icons/Buildinggreyicon\";\nimport { Cityicon } from \"../icons/Cityicon\";\nimport { Envelopeiconmin } from \"../../components/icons/Envelopeiconmin\";\nimport { Phoneiconmin } from \"../../components/icons/Phoneiconmin\";\nimport RoofPanel from \"../RoofPanel/RoofPanel\";\nimport { setRoofInfo } from \"../../store/Roof/action\";\nimport { TooltipComponentBack } from \"../TooltipComponent/TooltipComponent\";\nimport { TooltipComponentClose } from \"../TooltipComponent/TooltipComponent\";\nimport { sendOrderData, setCustomerInfo } from \"../../store/Order/action\";\nimport { Birthdaycakeicon } from \"../icons/Birthdaycakeicon\";\nimport { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport moment from 'moment';\n\nconst RoofOrder = () => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n let roofInfo = useSelector((state) => state.Roof.roofInfo);\n let orderInfo = useSelector((state) => state.Order);\n let address = useSelector((state) => state.Address.address);\n let finalAddress = useSelector((state) => state.Address.finalAddress);\n let municipalityAddress = useSelector((state) => state.Address.municipality);\n let [municipality, setMunicipality] = useState(\"\");\n const [isDisabled, setIsDisabled] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n reset,\n } = useForm();\n\n useEffect(() => {\n if (municipalityAddress !== undefined) {\n setMunicipality(municipalityAddress);\n } else if (Object.keys(address).length > 0) {\n let addressName = address.text.split(\",\");\n let municipal = addressName[addressName.length - 1];\n setMunicipality(municipal);\n }\n }, [address, municipalityAddress]);\n\n return (\n <div className=\"roof-order-section\">\n <div className=\"roof-order-header\">\n <div>\n <button\n data-for=\"main\"\n data-tip=\"Tilbudsskjema\"\n onClick={() => {\n dispatch(setShow(\"step2\"));\n reset();\n }}\n >\n <Leftarrowicon />\n </button>\n <span>Tilbudsskjema</span>\n <TooltipComponentBack />\n </div>\n <div>\n <span>Trinn 3 av 3</span>\n </div>\n <div>\n <button\n data-for=\"mains\"\n data-tip=\"Avbryt\"\n onClick={() => {\n navigate(\"/\");\n dispatch(setShow(\"step2\"));\n dispatch(setRoofInfo(\"\"));\n }}\n >\n <Closeicon />\n </button>\n <span>Avbryt</span>\n <TooltipComponentClose />\n </div>\n </div>\n\n {Object.keys(roofInfo).length > 0 && !roofInfo.message ? (\n <>\n <div className=\"roof-order-container\">\n <div>\n <div className=\"roof-order-form\">\n <div className=\"roof-order-form-container\">\n <form\n onSubmit={handleSubmit((customerData) => {\n let newOrderInfo = {\n ...orderInfo,\n kwh: orderInfo?.orderInfo?.produksjon[12].kWh,\n customerInfo: customerData,\n };\n if (!isDisabled) {\n dispatch(setCustomerInfo(customerData));\n dispatch(sendOrderData(newOrderInfo));\n }\n setIsDisabled(true);\n })}\n >\n <div className=\"form-inputs-first\">\n <div>\n <label htmlFor=\"name\">Navn</label>\n <div>\n <input {...register(\"name\", { required: true })} />\n <Usericon />\n {errors.name && (\n <p className=\"danger-text\">Navn er pÃ¥krevd.</p>\n )}\n </div>\n </div>\n <div>\n <label htmlFor=\"surname\">Etternavn</label>\n <div>\n <input {...register(\"surname\", { required: true })} />\n <Usericon />\n {errors.surname && (\n <p className=\"danger-text\">Etternavn er pÃ¥krevd.</p>\n )}\n </div>\n </div>\n <div>\n <label htmlFor=\"email\">E-post</label>\n <div className=\"input-icons\">\n <input\n type=\"email\"\n {...register(\"email\", { required: true })}\n />\n <Envelopeiconmin />\n {errors.email && (\n <p className=\"danger-text\">E-post er pÃ¥krevd.</p>\n )}\n </div>\n </div>\n <div>\n <label htmlFor=\"phone\">Telefon</label>\n <div className=\"input-icons\">\n <input\n type=\"number\"\n {...register(\"phone\", { required: true })}\n />\n <Phoneiconmin />\n {errors.phone && (\n <p className=\"danger-text\">Telefon kreves.</p>\n )}\n </div>\n </div>\n </div>\n <div className=\"form-inputs-second\">\n <div>\n <label htmlFor=\"address\">Adresse</label>\n <div>\n <input\n {...register(\"address\")}\n value={roofInfo.ruteplanlegger.til.split(\",\")[0]}\n readOnly\n />\n <Addresscardicon />\n </div>\n </div>\n <div>\n <label htmlFor=\"postalCode\">Postnummer</label>\n <div className=\"input-icons\">\n <input\n type=\"text\"\n value={roofInfo.adresse.postNummer}\n {...register(\"postalCode\")}\n readOnly\n />\n <Housegreyicon />\n </div>\n </div>\n\n <div>\n <label htmlFor=\"municipality\">Kommune</label>\n <div>\n <input\n {...register(\"municipality\")}\n value={municipality}\n readOnly\n />\n <Cityicon />\n </div>\n </div>\n <div>\n <label htmlFor=\"by\">By</label>\n <div className=\"input-icons\">\n <input\n type=\"text\"\n value={roofInfo.adresse.postSted}\n {...register(\"by\")}\n readOnly\n />\n <Buildinggreyicon />\n </div>\n </div>\n </div>\n <div className=\"form-button\">\n <button>Be om tilbud</button>\n </div>\n </form>\n </div>\n </div>\n </div>\n <RoofPanel\n data={{\n lcoe: orderInfo.roofOrderInfo.lcoe,\n anProd: orderInfo.roofOrderInfo.anProd,\n }}\n />\n <div className=\"roof-order-address-info\">\n <p>{roofInfo.ruteplanlegger.til.split(\",\")[0]}</p>\n <p>\n {roofInfo.adresse.postNummer} {roofInfo.adresse.postSted}\n </p>\n </div>\n </div>\n </>\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nexport default RoofOrder;\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport { FieldValues, FormState, UseFormProps, UseFormReturn } from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps<TFieldValues, TContext> = {},\n): UseFormReturn<TFieldValues, TContext> {\n const _formControl = React.useRef<\n UseFormReturn<TFieldValues, TContext> | undefined\n >();\n const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n isDirty: false,\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n errors: {},\n defaultValues: props.defaultValues,\n });\n\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useSubscribe({\n subject: control._subjects.state,\n callback: React.useCallback(\n (value: FieldValues) => {\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\n control._formState = {\n ...control._formState,\n ...value,\n };\n\n updateFormState({ ...control._formState });\n }\n },\n [control],\n ),\n });\n\n React.useEffect(() => {\n if (!control._stateFlags.mount) {\n control._proxyFormState.isValid && control._updateValid();\n control._stateFlags.mount = true;\n }\n\n if (control._stateFlags.watch) {\n control._stateFlags.watch = false;\n control._subjects.state.next({});\n }\n\n control._removeUnmounted();\n });\n\n _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n","import \"./CompleteOrder.scss\";\nimport CompleteOrderPic from \"../../assets/images/completeorder.png\";\nimport { useSelector } from \"react-redux\";\n\nconst CompleteOrder = () => {\n let orderInfo = useSelector((state) => state.Order);\n\n return (\n <div className=\"complete-order-section\">\n <div className=\"complete-order-container\">\n {orderInfo.partnerId === 10005 ? (\n <h1>Takk for forespørselen!</h1>\n ) : (\n <h1>Takk for bestillingen!</h1>\n )}\n\n <p>\n Vi har registrert din forespørsel om tilbud. Du vil motta tilbud pÃ¥\n epost sÃ¥ fort vi har gÃ¥tt igjennom forespørselen din.\n </p>\n <img src={CompleteOrderPic} alt=\"complete order\" />\n </div>\n </div>\n );\n};\n\nexport default CompleteOrder;\n","import \"./Offer.scss\";\nimport { motion } from \"framer-motion\";\nimport RoofTypes from \"../../components/RoofTypes/RoofTypes\";\nimport RoofPrice from \"../../components/RoofPrice/RoofPrice\";\nimport { useSelector } from \"react-redux\";\nimport RoofOrder from \"../../components/RoofOrder/RoofOrder\";\nimport CompleteOrder from \"../../components/CompleteOrder/CompleteOrder\";\nimport getMotionVariants from \"../../api/getMotionVariants\";\n\nconst Offer = () => {\n const show = useSelector((state) => state.Show.show);\n return (\n // <motion.div\n // variants={getMotionVariants()}\n // initial=\"initial\"\n // animate=\"animate\"\n // transition={{ duration: 1, ease: \"easeInOut\" }}\n // >\n <div className=\"offer-page-section\">\n <div className=\"offer-page-container\">\n <div\n style={\n show === \"step1\" ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <RoofTypes />\n </div>\n <div\n style={\n show === \"step2\" ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <RoofPrice />\n </div>\n <div\n style={\n show === \"step3\" ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <RoofOrder />\n </div>\n <div\n style={\n show === \"step4\" ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <CompleteOrder />\n </div>\n </div>\n </div>\n // </motion.div>\n );\n};\n\nexport default Offer;\n","import React from \"react\";\nimport axios from \"axios\";\nimport { useParams } from \"react-router-dom\";\n\nimport HouseImage from \"../../assets/images/contactview.png\";\nimport \"./Unsubscribe.scss\";\n\nconst Unsubscribe = () => {\n const { id } = useParams();\n\n const [error, setError] = React.useState(null);\n const [isLoaded, setIsLoaded] = React.useState(false);\n\n React.useEffect(() => {\n const body = id.includes(\"@\") ? { email: id } : { OrderId: id };\n\n axios\n .post(`${process.env.REACT_APP_SUNTALK_API_URL}/Unsubscribe`, body)\n .then((response) => {\n setIsLoaded(true);\n setError(null);\n })\n .catch((error) => {\n console.error(error);\n setIsLoaded(true);\n setError(error);\n });\n }, [id]);\n\n let content = null;\n\n if (!isLoaded) {\n content = <p>Lastet...</p>;\n }\n\n if (isLoaded && error) {\n content = <p>Oops! Noe gikk galt</p>;\n }\n\n if (isLoaded && !error) {\n content = (\n <>\n <h1 className=\"title\">Du vil ikke lenger motta e-post fra oss</h1>\n <p>\n\t\t Skulle du ombestemme deg er bærekraftige energiløsninger bare et klikk unna pÃ¥ Solkart.no\n </p>\n </>\n );\n }\n\n return (\n <div className=\"unsubscribe-page-section\">\n <div className=\"unsubscribe-page-container\">\n <div className=\"unsubscribe-page-description\">\n <section>{content}</section>\n <div>\n <img\n className=\"unsubscribe-page-image\"\n src={HouseImage}\n alt=\"A house with solar panels on its roof\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Unsubscribe;\n","var _rect, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSolkartlogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 150,\n height: 33,\n viewBox: \"0 0 150 33\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 150,\n height: 33,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_434_1459\",\n transform: \"translate(0 -0.00115265) scale(0.00110254 0.00501153)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_434_1459\",\n width: 907,\n height: 200,\n xlinkHref: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4sAAADICAYAAABBN3Q8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNDRkYyM0JCQzI5NTExRTU5Q0Y3ODczNUU5MEFGRkFEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNDRkYyM0JBQzI5NTExRTU5Q0Y3ODczNUU5MEFGRkFEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MWNhMGU0YzktYzAwYy0wMDRjLTlkZDUtOGFhZmYxOTZiODk4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlk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\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSolkartlogo);\nexport default __webpack_public_path__ + \"static/media/solkartlogo.7ab8d1ff3090c2554f401ed768d80766.svg\";\nexport { ForwardRef as ReactComponent };","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/objectSpread';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar CANCEL_DISTANCE_ON_SCROLL = 20;\nvar defaultStyles = {\n root: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: \"hidden\"\n },\n sidebar: {\n zIndex: 2,\n position: \"absolute\",\n top: 0,\n bottom: 0,\n transition: \"transform .3s ease-out\",\n WebkitTransition: \"-webkit-transform .3s ease-out\",\n willChange: \"transform\",\n overflowY: \"auto\"\n },\n content: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowY: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n transition: \"left .3s ease-out, right .3s ease-out\"\n },\n overlay: {\n zIndex: 1,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n opacity: 0,\n visibility: \"hidden\",\n transition: \"opacity .3s ease-out, visibility .3s ease-out\",\n backgroundColor: \"rgba(0,0,0,.3)\"\n },\n dragHandle: {\n zIndex: 1,\n position: \"fixed\",\n top: 0,\n bottom: 0\n }\n};\n\nvar Sidebar =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Sidebar, _Component);\n\n function Sidebar(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n // the detected width of the sidebar in pixels\n sidebarWidth: props.defaultSidebarWidth,\n // keep track of touching params\n touchIdentifier: null,\n touchStartX: null,\n touchCurrentX: null,\n // if touch is supported by the browser\n dragSupported: false\n };\n _this.overlayClicked = _this.overlayClicked.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onTouchStart = _this.onTouchStart.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onTouchMove = _this.onTouchMove.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onTouchEnd = _this.onTouchEnd.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onScroll = _this.onScroll.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.saveSidebarRef = _this.saveSidebarRef.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Sidebar.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var isIos = /iPad|iPhone|iPod/.test(navigator ? navigator.userAgent : \"\");\n this.setState({\n dragSupported: typeof window === \"object\" && \"ontouchstart\" in window && !isIos\n });\n this.saveSidebarWidth();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n // filter out the updates when we're touching\n if (!this.isTouching()) {\n this.saveSidebarWidth();\n }\n };\n\n _proto.onTouchStart = function onTouchStart(ev) {\n // filter out if a user starts swiping with a second finger\n if (!this.isTouching()) {\n var touch = ev.targetTouches[0];\n this.setState({\n touchIdentifier: touch.identifier,\n touchStartX: touch.clientX,\n touchCurrentX: touch.clientX\n });\n }\n };\n\n _proto.onTouchMove = function onTouchMove(ev) {\n if (this.isTouching()) {\n for (var ind = 0; ind < ev.targetTouches.length; ind++) {\n // we only care about the finger that we are tracking\n if (ev.targetTouches[ind].identifier === this.state.touchIdentifier) {\n this.setState({\n touchCurrentX: ev.targetTouches[ind].clientX\n });\n break;\n }\n }\n }\n };\n\n _proto.onTouchEnd = function onTouchEnd() {\n if (this.isTouching()) {\n // trigger a change to open if sidebar has been dragged beyond dragToggleDistance\n var touchWidth = this.touchSidebarWidth();\n\n if (this.props.open && touchWidth < this.state.sidebarWidth - this.props.dragToggleDistance || !this.props.open && touchWidth > this.props.dragToggleDistance) {\n this.props.onSetOpen(!this.props.open);\n }\n\n this.setState({\n touchIdentifier: null,\n touchStartX: null,\n touchCurrentX: null\n });\n }\n }; // This logic helps us prevents the user from sliding the sidebar horizontally\n // while scrolling the sidebar vertically. When a scroll event comes in, we're\n // cancelling the ongoing gesture if it did not move horizontally much.\n\n\n _proto.onScroll = function onScroll() {\n if (this.isTouching() && this.inCancelDistanceOnScroll()) {\n this.setState({\n touchIdentifier: null,\n touchStartX: null,\n touchCurrentX: null\n });\n }\n }; // True if the on going gesture X distance is less than the cancel distance\n\n\n _proto.inCancelDistanceOnScroll = function inCancelDistanceOnScroll() {\n var cancelDistanceOnScroll;\n\n if (this.props.pullRight) {\n cancelDistanceOnScroll = Math.abs(this.state.touchCurrentX - this.state.touchStartX) < CANCEL_DISTANCE_ON_SCROLL;\n } else {\n cancelDistanceOnScroll = Math.abs(this.state.touchStartX - this.state.touchCurrentX) < CANCEL_DISTANCE_ON_SCROLL;\n }\n\n return cancelDistanceOnScroll;\n };\n\n _proto.isTouching = function isTouching() {\n return this.state.touchIdentifier !== null;\n };\n\n _proto.overlayClicked = function overlayClicked() {\n if (this.props.open) {\n this.props.onSetOpen(false);\n }\n };\n\n _proto.saveSidebarWidth = function saveSidebarWidth() {\n var width = this.sidebar.offsetWidth;\n\n if (width !== this.state.sidebarWidth) {\n this.setState({\n sidebarWidth: width\n });\n }\n };\n\n _proto.saveSidebarRef = function saveSidebarRef(node) {\n this.sidebar = node;\n }; // calculate the sidebarWidth based on current touch info\n\n\n _proto.touchSidebarWidth = function touchSidebarWidth() {\n // if the sidebar is open and start point of drag is inside the sidebar\n // we will only drag the distance they moved their finger\n // otherwise we will move the sidebar to be below the finger.\n if (this.props.pullRight) {\n if (this.props.open && window.innerWidth - this.state.touchStartX < this.state.sidebarWidth) {\n if (this.state.touchCurrentX > this.state.touchStartX) {\n return this.state.sidebarWidth + this.state.touchStartX - this.state.touchCurrentX;\n }\n\n return this.state.sidebarWidth;\n }\n\n return Math.min(window.innerWidth - this.state.touchCurrentX, this.state.sidebarWidth);\n }\n\n if (this.props.open && this.state.touchStartX < this.state.sidebarWidth) {\n if (this.state.touchCurrentX > this.state.touchStartX) {\n return this.state.sidebarWidth;\n }\n\n return this.state.sidebarWidth - this.state.touchStartX + this.state.touchCurrentX;\n }\n\n return Math.min(this.state.touchCurrentX, this.state.sidebarWidth);\n };\n\n _proto.render = function render() {\n var sidebarStyle = _objectSpread({}, defaultStyles.sidebar, this.props.styles.sidebar);\n\n var contentStyle = _objectSpread({}, defaultStyles.content, this.props.styles.content);\n\n var overlayStyle = _objectSpread({}, defaultStyles.overlay, this.props.styles.overlay);\n\n var useTouch = this.state.dragSupported && this.props.touch;\n var isTouching = this.isTouching();\n var rootProps = {\n className: this.props.rootClassName,\n style: _objectSpread({}, defaultStyles.root, this.props.styles.root),\n role: \"navigation\",\n id: this.props.rootId\n };\n var dragHandle;\n var hasBoxShadow = this.props.shadow && (isTouching || this.props.open || this.props.docked); // sidebarStyle right/left\n\n if (this.props.pullRight) {\n sidebarStyle.right = 0;\n sidebarStyle.transform = \"translateX(100%)\";\n sidebarStyle.WebkitTransform = \"translateX(100%)\";\n\n if (hasBoxShadow) {\n sidebarStyle.boxShadow = \"-2px 2px 4px rgba(0, 0, 0, 0.15)\";\n }\n } else {\n sidebarStyle.left = 0;\n sidebarStyle.transform = \"translateX(-100%)\";\n sidebarStyle.WebkitTransform = \"translateX(-100%)\";\n\n if (hasBoxShadow) {\n sidebarStyle.boxShadow = \"2px 2px 4px rgba(0, 0, 0, 0.15)\";\n }\n }\n\n if (isTouching) {\n var percentage = this.touchSidebarWidth() / this.state.sidebarWidth; // slide open to what we dragged\n\n if (this.props.pullRight) {\n sidebarStyle.transform = \"translateX(\" + (1 - percentage) * 100 + \"%)\";\n sidebarStyle.WebkitTransform = \"translateX(\" + (1 - percentage) * 100 + \"%)\";\n } else {\n sidebarStyle.transform = \"translateX(-\" + (1 - percentage) * 100 + \"%)\";\n sidebarStyle.WebkitTransform = \"translateX(-\" + (1 - percentage) * 100 + \"%)\";\n } // fade overlay to match distance of drag\n\n\n overlayStyle.opacity = percentage;\n overlayStyle.visibility = \"visible\";\n } else if (this.props.docked) {\n // show sidebar\n if (this.state.sidebarWidth !== 0) {\n sidebarStyle.transform = \"translateX(0%)\";\n sidebarStyle.WebkitTransform = \"translateX(0%)\";\n } // make space on the left/right side of the content for the sidebar\n\n\n if (this.props.pullRight) {\n contentStyle.right = this.state.sidebarWidth + \"px\";\n } else {\n contentStyle.left = this.state.sidebarWidth + \"px\";\n }\n } else if (this.props.open) {\n // slide open sidebar\n sidebarStyle.transform = \"translateX(0%)\";\n sidebarStyle.WebkitTransform = \"translateX(0%)\"; // show overlay\n\n overlayStyle.opacity = 1;\n overlayStyle.visibility = \"visible\";\n }\n\n if (isTouching || !this.props.transitions) {\n sidebarStyle.transition = \"none\";\n sidebarStyle.WebkitTransition = \"none\";\n contentStyle.transition = \"none\";\n overlayStyle.transition = \"none\";\n }\n\n if (useTouch) {\n if (this.props.open) {\n rootProps.onTouchStart = this.onTouchStart;\n rootProps.onTouchMove = this.onTouchMove;\n rootProps.onTouchEnd = this.onTouchEnd;\n rootProps.onTouchCancel = this.onTouchEnd;\n rootProps.onScroll = this.onScroll;\n } else {\n var dragHandleStyle = _objectSpread({}, defaultStyles.dragHandle, this.props.styles.dragHandle);\n\n dragHandleStyle.width = this.props.touchHandleWidth; // dragHandleStyle right/left\n\n if (this.props.pullRight) {\n dragHandleStyle.right = 0;\n } else {\n dragHandleStyle.left = 0;\n }\n\n dragHandle = React.createElement(\"div\", {\n style: dragHandleStyle,\n onTouchStart: this.onTouchStart,\n onTouchMove: this.onTouchMove,\n onTouchEnd: this.onTouchEnd,\n onTouchCancel: this.onTouchEnd\n });\n }\n }\n\n return React.createElement(\"div\", rootProps, React.createElement(\"div\", {\n className: this.props.sidebarClassName,\n style: sidebarStyle,\n ref: this.saveSidebarRef,\n id: this.props.sidebarId\n }, this.props.sidebar), React.createElement(\"div\", {\n className: this.props.overlayClassName,\n style: overlayStyle,\n onClick: this.overlayClicked,\n id: this.props.overlayId\n }), React.createElement(\"div\", {\n className: this.props.contentClassName,\n style: contentStyle,\n id: this.props.contentId\n }, dragHandle, this.props.children));\n };\n\n return Sidebar;\n}(Component);\n\nprocess.env.NODE_ENV !== \"production\" ? Sidebar.propTypes = {\n // main content to render\n children: PropTypes.node.isRequired,\n // styles\n styles: PropTypes.shape({\n root: PropTypes.object,\n sidebar: PropTypes.object,\n content: PropTypes.object,\n overlay: PropTypes.object,\n dragHandle: PropTypes.object\n }),\n // root component optional class\n rootClassName: PropTypes.string,\n // sidebar optional class\n sidebarClassName: PropTypes.string,\n // content optional class\n contentClassName: PropTypes.string,\n // overlay optional class\n overlayClassName: PropTypes.string,\n // sidebar content to render\n sidebar: PropTypes.node.isRequired,\n // boolean if sidebar should be docked\n docked: PropTypes.bool,\n // boolean if sidebar should slide open\n open: PropTypes.bool,\n // boolean if transitions should be disabled\n transitions: PropTypes.bool,\n // boolean if touch gestures are enabled\n touch: PropTypes.bool,\n // max distance from the edge we can start touching\n touchHandleWidth: PropTypes.number,\n // Place the sidebar on the right\n pullRight: PropTypes.bool,\n // Enable/Disable sidebar shadow\n shadow: PropTypes.bool,\n // distance we have to drag the sidebar to toggle open state\n dragToggleDistance: PropTypes.number,\n // callback called when the overlay is clicked\n onSetOpen: PropTypes.func,\n // Initial sidebar width when page loads\n defaultSidebarWidth: PropTypes.number,\n // root component optional id\n rootId: PropTypes.string,\n // sidebar optional id\n sidebarId: PropTypes.string,\n // content optional id\n contentId: PropTypes.string,\n // overlay optional id\n overlayId: PropTypes.string\n} : void 0;\nSidebar.defaultProps = {\n docked: false,\n open: false,\n transitions: true,\n touch: true,\n touchHandleWidth: 20,\n pullRight: false,\n shadow: true,\n dragToggleDistance: 30,\n onSetOpen: function onSetOpen() {},\n styles: {},\n defaultSidebarWidth: 0\n};\n\nexport default Sidebar;\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import React from \"react\";\nimport { Link, Outlet, useLocation } from \"react-router-dom\";\nimport \"./Header.scss\";\nimport logoImage from \"../../assets/images/solkartlogo.svg\";\nimport Sidebar from \"react-sidebar\";\nimport { useState } from \"react\";\n\nconst Header = () => {\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const location = useLocation();\n const { pathname } = location;\n const splitLocation = pathname.split(\"/\");\n\n const [show, setShow] = useState(false);\n\n const onSetSidebarOpen = (open) => {\n setSidebarOpen(open);\n if (sidebarOpen) {\n document\n .querySelector(\".sidebar-root\")\n .classList.remove(\"sidbar-container\");\n document.querySelector(\"body\").classList.remove(\"fixed\");\n } else {\n document.querySelector(\".sidebar-root\").classList.add(\"sidbar-container\");\n document.querySelector(\"body\").classList.add(\"fixed\");\n }\n };\n\n const changeShow = () => {\n setShow(false);\n };\n\n return (\n <>\n <div className=\"header\">\n <div className=\"container\">\n <nav className=\"navigation\">\n <div className=\"logo-image\">\n <Link to=\"/\">\n <img src={logoImage} alt=\"\" />\n </Link>\n </div>\n <button\n className=\"hamburger\"\n onClick={() => onSetSidebarOpen(true)}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"white\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM9 15a1 1 0 011-1h6a1 1 0 110 2h-6a1 1 0 01-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n <Sidebar\n sidebar={\n <ul className=\"sidebar-nav\">\n <li>\n <Link to=\"/\" onClick={() => onSetSidebarOpen(false)}>\n Hjem\n </Link>\n </li>\n <li>\n <Link to=\"/about\" onClick={() => onSetSidebarOpen(false)}>\n Om Solkart.no\n </Link>\n </li>\n <li>\n <Link\n to=\"/solutions\"\n onClick={() => onSetSidebarOpen(false)}\n >\n Løsninger\n </Link>\n </li>\n <li>\n <Link to=\"/contact\" onClick={() => onSetSidebarOpen(false)}>\n Kontakt oss\n </Link>\n </li>\n <li>\n <Link\n to=\"https://www.solcellespesialisten.no/ofte-stilte-sp%C3%B8rsm%C3%A5l\"\n onClick={() => onSetSidebarOpen(false)}\n >\n FAQ\n </Link>\n </li>\n </ul>\n }\n open={sidebarOpen}\n onSetOpen={onSetSidebarOpen}\n styles={{ sidebar: { background: \"white\" } }}\n rootClassName={\"sidebar-root\"}\n sidebarClassName={\"sidebar\"}\n contentClassName={\"sidebar-content\"}\n overlayClassName={\"sidbar-overlay\"}\n >\n <button className=\"sidebar-action\"></button>\n </Sidebar>\n <div className=\"navigation-menu\">\n <ul>\n <li onClick={changeShow}>\n <Link\n className={\n splitLocation[1] === \"\" && !show\n ? \"navigation-menu-item active-button\"\n : \"navigation-menu-item\"\n }\n to=\"/\"\n >\n Hjem\n </Link>\n </li>\n <li onClick={changeShow}>\n <Link\n className={\n splitLocation[1] === \"about\" && !show\n ? \"navigation-menu-item-new active-button\"\n : \"navigation-menu-item\"\n }\n to=\"/about\"\n >\n Om Solkart.no\n </Link>\n </li>\n <li onClick={changeShow}>\n <Link\n className={\n splitLocation[1] === \"solutions\" && !show\n ? \"navigation-menu-item-new active-button\"\n : \"navigation-menu-item\"\n }\n to=\"/solutions\"\n >\n Løsninger\n </Link>\n </li>\n <li onClick={changeShow}>\n <Link\n className={\n splitLocation[1] === \"contact\" && !show\n ? \"navigation-menu-item-new active-button\"\n : \"navigation-menu-item\"\n }\n to=\"/contact\"\n >\n Kontakt oss\n </Link>\n </li>\n <li\n onClick={() => {\n setShow(true);\n }}\n >\n {/* <Link\n className={\n splitLocation[1] === \"\"\n ? \"navigation-menu-item-new active-button\"\n : \"navigation-menu-item\"\n }\n to=\"https://www.solcellespesialisten.no/ofte-stilte-sp%C3%B8rsm%C3%A5l\"\n >\n FAQ\n </Link> */}\n <a\n className={\n show === true\n ? \"navigation-menu-item-new active-button\"\n : \"navigation-menu-item\"\n }\n href=\"https://www.solcellespesialisten.no/ofte-stilte-sp%C3%B8rsm%C3%A5l\"\n target=\"_black\"\n >\n FAQ\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <Outlet />\n </div>\n </>\n );\n};\n\nexport default Header;\n","export const FooterLogoicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width=\"139\"\n height=\"19\"\n viewBox=\"0 0 139 19\"\n fill=\"none\"\n >\n <rect\n x=\"0.418945\"\n width=\"137.719\"\n height=\"19\"\n rx=\"9.5\"\n fill=\"url(#pattern0)\"\n />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use\n xlinkHref=\"#image0_434_1471\"\n transform=\"translate(-0.0107252) scale(0.00265312 0.0192308)\"\n />\n </pattern>\n <image\n id=\"image0_434_1471\"\n width=\"385\"\n height=\"52\"\n xlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYEAAAA0CAYAAABsKYRWAAAMPGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSSWiBUKSE3gQB6UgJoQUQkCrYCEmAUGIMBBU7uqjg2kUUbOiqiG0tgKwVUSwsgr0vFhCUdbFgL29SQNd95XvzfXPnv/+c+c+Zc+feOwOAxkmeRJKLagKQJy6QxoUFscampLJI3YAMdAACmMCVx8+XsGNjowAsg+3fy5vr0BKWK45yrX/2/9eiJRDm8wFAYiFOF+Tz8yA+BABexZdICwAgynmLqQUSOYYV6EhhgBAvkuNMJa6S43Ql3q+wSYjjQNwMAJnG40kzAVBvhzyrkJ8JNdT7IXYWC0RiADRYEPvn5U0WQJwGsS20kUAs1/dK/04n82+a6UOaPF7mEFbORVHIwaJ8SS5v+v+Zjv9d8nJlgz6sYaVlScPj5HOGebuZMzlSjmkQ94nTo2Mg1ob4nUigsIcYpWbJwhOV9qgRP58DcwafMkCdBbzgSIiNIA4V50ZHqfj0DFEoF2K4QtBpogJuAsT6EC8S5ofEq2w2SyfHqXyhdRlSDlvFn+NJFX7lvu7LchLZKv2XWUKuSh9TL8pKSIaYCrFloSgpGmJ1iJ3yc+IjVTajirI40YM2UlmcPH5LiOOE4rAgpT5WmCENjVPZl+blD84X25wl4kar8IGCrIRwZX6wZj5PET+cC9YuFLMTB3WE+WOjBuciEAaHKOeO9QjFifEqnXeSgqA45VicKsmNVdnj5sLcMDlvDrFbfmG8aiyeVAAXpFIfz5AUxCYo48SLsnkRscp48OUgCnBAMGABGazpYDLIBqK2vvo+eKfsCQU8IAWZQAgcVczgiGRFjxhe40ER+BMiIcgfGhek6BWCQsh/HmKVV0eQoegtVIzIAd0Q54FIkAvvZYpR4iFvSeAxZET/8M6DlQ/jzYVV3v/v+UH2G8OGTJSKkQ16ZGkMWhJDiMHEcGIo0Q43xP1xXzwKXgNhdcW9cO/BeXyzJ3QTOggPCdcInYRbk0TF0h+iHA06oX6oKhfp3+cCt4aa7ngQ7gfVoTLOxA2BI+4G/bDxAOjZHbIcVdzyrLB+0P7bDL57Gio7ijMFpehRAim2P45Ut1d3H1KR5/r7/ChjTR/KN2eo50f/nO+yL4Bt5I+W2CLsINaCncLOY0exesDCTmANWCt2TI6HVtdjxeoa9BaniCcH6oj+4W/wycozme9c69zr/EnZVyCcJv9GA85kyXSpKDOrgMWGfwQhiyvmOw1nuTq7ugIg/78oP1+vmIr/BsK88I2bchIA71JIZn7jeBYAHOkGgPHmG2fxEr42ywE41s6XSQuVHC6/EOBXQgO+aQbABFgAWzgfV+ABfEEgCAERIAYkgBQwEUafBde5FEwFM8E8UALKwHKwBqwHm8BWsBPsAQdAPTgKToGz4CJoB9fAHbh6usAz0A/egI8IgpAQOsJADBBTxApxQFwRL8QfCUGikDgkBUlDMhExIkNmIvORMmQlsh7ZgtQgvyJHkFPIeaQDuYU8QHqRl8gHFENpqA5qjFqjI1AvlI1GognoBDQTnYIWoQvQpWgFWo3uRuvQU+hF9BraiT5DBzCAqWFMzAxzxLwwDhaDpWIZmBSbjZVi5Vg1thdrhM/5CtaJ9WHvcSLOwFm4I1zB4Xgizsen4LPxJfh6fCdehzfjV/AHeD/+hUAnGBEcCD4ELmEsIZMwlVBCKCdsJxwmnIHvUhfhDZFIZBJtiJ7wXUwhZhNnEJcQNxD3EU8SO4iPiAMkEsmA5EDyI8WQeKQCUglpHWk36QTpMqmL9I6sRjYlu5JDyalkMbmYXE7eRT5Ovkx+Qv5I0aRYUXwoMRQBZTplGWUbpZFyidJF+UjVotpQ/agJ1GzqPGoFdS/1DPUu9ZWampq5mrfaGDWR2ly1CrX9aufUHqi9p2nT7Gkc2niajLaUtoN2knaL9opOp1vTA+mp9AL6UnoN/TT9Pv2dOkPdSZ2rLlCfo16pXqd+Wf25BkXDSoOtMVGjSKNc46DGJY0+TYqmtSZHk6c5W7NS84jmDc0BLYaWi1aMVp7WEq1dWue1erRJ2tbaIdoC7QXaW7VPaz9iYAwLBofBZ8xnbGOcYXTpEHVsdLg62TplOnt02nT6dbV13XSTdKfpVuoe0+1kYkxrJpeZy1zGPMC8zvygZ6zH1hPqLdbbq3dZ763+MP1AfaF+qf4+/Wv6HwxYBiEGOQYrDOoN7hnihvaGYwynGm40PGPYN0xnmO8w/rDSYQeG3TZCjeyN4oxmGG01ajUaMDYxDjOWGK8zPm3cZ8I0CTTJNlltctyk15Rh6m8qMl1tesL0KUuXxWblsipYzax+MyOzcDOZ2RazNrOP5jbmiebF5vvM71lQLbwsMixWWzRZ9FuaWo62nGlZa3nbimLlZZVltdaqxeqttY11svVC63rrHht9G65NkU2tzV1bum2A7RTbaturdkQ7L7scuw127faovbt9ln2l/SUH1MHDQeSwwaFjOGG493Dx8OrhNxxpjmzHQsdaxwdOTKcop2KneqfnIyxHpI5YMaJlxBdnd+dc523Od1y0XSJcil0aXV662rvyXStdr46kjwwdOWdkw8gXbg5uQreNbjfdGe6j3Re6N7l/9vD0kHrs9ej1tPRM86zyvOGl4xXrtcTrnDfBO8h7jvdR7/c+Hj4FPgd8/vJ19M3x3eXbM8pmlHDUtlGP/Mz9eH5b/Dr9Wf5p/pv9OwPMAngB1QEPAy0CBYHbA5+w7djZ7N3s50HOQdKgw0FvOT6cWZyTwVhwWHBpcFuIdkhiyPqQ+6HmoZmhtaH9Ye5hM8JOhhPCI8NXhN/gGnP53Bpuf4RnxKyI5khaZHzk+siHUfZR0qjG0ejoiNGrRt+NtooWR9fHgBhuzKqYe7E2sVNifxtDHBM7pnJMd5xL3My4lnhG/KT4XfFvEoISliXcSbRNlCU2JWkkjU+qSXqbHJy8Mrlz7Iixs8ZeTDFMEaU0pJJSk1K3pw6MCxm3ZlzXePfxJeOvT7CZMG3C+YmGE3MnHpukMYk36WAaIS05bVfaJ14Mr5o3kM5Nr0rv53P4a/nPBIGC1YJeoZ9wpfBJhl/GyoyeTL/MVZm9WQFZ5Vl9Io5ovehFdnj2puy3OTE5O3K+5ibn7ssj56XlHRFri3PEzZNNJk+b3CFxkJRIOqf4TFkzpV8aKd2ej+RPyG8o0IEb+VaZrewn2YNC/8LKwndTk6YenKY1TTytdbr99MXTnxSFFv0yA5/Bn9E002zmvJkPZrFnbZmNzE6f3TTHYs6COV1zw+bunEedlzPv92Ln4pXFr+cnz29cYLxg7oJHP4X9VFuiXiItubHQd+GmRfgi0aK2xSMXr1v8pVRQeqHMuay87NMS/pILP7v8XPHz16UZS9uWeSzbuJy4XLz8+oqAFTtXaq0sWvlo1ehVdatZq0tXv14zac35crfyTWupa2VrOyuiKhrWWa5bvu7T+qz11yqDKvdVGVUtrnq7QbDh8sbAjXs3GW8q2/Rhs2jzzS1hW+qqravLtxK3Fm7t3pa0reUXr19qthtuL9v+eYd4R+fOuJ3NNZ41NbuMdi2rRWtltb27x+9u3xO8p2Gv494t+5j7yvaD/bL9T39N+/X6gcgDTQe9Du49ZHWo6jDjcGkdUje9rr8+q76zIaWh40jEkaZG38bDvzn9tuOo2dHKY7rHlh2nHl9w/OuJohMDJyUn+05lnnrUNKnpzumxp682j2luOxN55tzZ0LOnW9gtJ875nTt63uf8kQteF+ovelysa3VvPfy7+++H2zza6i55Xmpo925v7BjVcfxywOVTV4KvnL3KvXrxWvS1juuJ12/eGH+j86bgZs+t3Fsvbhfe/nhn7l3C3dJ7mvfK7xvdr/7D7o99nR6dxx4EP2h9GP/wziP+o2eP8x9/6lrQTe8uf2L6pKbHtedob2hv+9NxT7ueSZ597Cv5U+vPque2zw/9FfhXa//Y/q4X0hdfXy55ZfBqx2u3100DsQP33+S9+fi29J3Bu53vvd63fEj+8OTj1E+kTxWf7T43fon8cvdr3tevEp6Up9gKYLCiGRkAvNwBAD0F7h3g+Yw6Tnn+UxREeWZVIPCfsPKMqCgeAOwIBCBxLgBRcI+yEVYriGmwlW/hEwIBOnLkUB08qynOlfJChOeAzfZydGmUNg38UJRnzu/i/rEFclU38GP7L3CDeTEkx7hvAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAGBoAMABAAAAAEAAAA0AAAAAOb19TsAACGxSURBVHgB7V0HnBRF9u6emQ2kJQsqSlAMnGIAQQUERDGdCneCCcNhAEXU0xPQQ0S5M58ZPf17iooZFUVRMCFLFAmCoiRBssSVtMvuTPf/+2anZ2tqqmd6ZmcWkHq/30dXvXrvVdWrXN07GIYm7QHtAe0B7YH91gNmVdTc3tGtUajU7GabdnvTsI8zDLMp8j0IyI3kHzRMY5Nhmb/iudC0jVm+QOgrs+DrRVVRPp2H9oD2gPbA/uqBrC0C9ub2BVYocKVtm33g3PZpOniZbRijA7bvFbPx5OVp2tBq2gPaA9oD2gMuHsj4ImCvbdMgaBlDsJvvhzxruuSbKjtkmPa7/pA9wmw6d2Gqylpee0B7QHtAe0DtgYwtArbdy2/9snCgbZj3Iata6uwqzQ3BwvN+q+ROs+XSbZW2pg1oD2gPaA/s5x7IyCJgLz6iRcgyR+O+/5Qq8ucqyzCvyjlq0ddVlJ/ORntAe0B74A/pgUovAmULmp/pM4234Z26Vewhy7CNIf5jlz9Sxfnq7LQHtAe0B/4wHqjUIhCc3+Qy3P2Pgjdy9qBHnvK1Xn2riWPIHiyDzlp7QHtAe2Cf9EDai0BwTqNLTcMcjVr79njNTWOk/4T1N+3xcugCaA9oD2gP7GMeSGsRKJvVuIvPsCairnvyBBDratMY5m+7YUQsU8e0B7QHtAe0BxJ5IOVFwJ5Rr4nlM+fBaP1EhvdAmo2/STg/0H7TJ3sgb52l9oD2gPbAPumBlK5ybHz/afvs1wzbrg8YWcI2w7L7+Wz7VGTwRAp54LWANcqeU7PhPtkSutDaA9oD2gN7wAOBVPIMzah3rWnaXTA5p6KWkix289cHTtnCr41I00Mz6lbH8/pwLPk/DazSnKchdkly0X1PAked7ig1/eHQJNM0i5zI3vhEmQ9HuY4RyrYKZZ4txLHO2/z5kLMBZ1NiIfwZ5EpFOR2ueg+gbfjZd2/AuTXYjvC/0Da7s1Ea5OeH3XMAZ27iZPM58tsl5ge5WxBvLvAmQ+Z9Ia6DHj3gNGxScVwDFVi29QsEs3oN5CsLHmCetmOjU6CyaQVn+UzfZ07cy9NnmB3NU7ZO9SKrkol0xLOQdh7QBjgYqA3wHQg7/+8Ay7gKWAL8DLwld1TwMkYo09EwJv+1NL6KMp/MWCZZMIRy893RmYLpFSizOHi5CFyA9A8FGQb/DDl9tSc5paqjaJtRyPMqKd8T0Da8Es44Ib+OMFooGb4C+fEjlChBTt6Jfg+Z46MCOuDZA85qm1QBC8BtEMrqAsBCBHP9bMjPGSahYQ8pD3n/1zbsf0G6q3eNCkn0rS6IvQgcVsGNCeUjxgXhUIALhEP8a+ZXnEgWnnkKm54XcYVuVbGcHwl08lOV2TkBODJ87j0fHYil0uFse0A1J6l42S7HfmNfNfjiKm9Pa1INzAFxCckZayFyO8Cj2+Lk4rgPsM0n7Fm1W1DWnl6nGT5DvcuLniiDLUIXe2bttiLPSxgLAHes3Lm6LQCJzKgmt0TyOk17QHtgH/IA5of63CQCNwGPAFX9B7JZ8ZanFTZkF1+EN8INUixByGf7Tjc7blpEPXtyzTctf+4PCB6QxE4rq9RYHJpWb6VlGTwFeCqjbNOyjf7gXSvz3eJoUO48nwP0DtTNSZq/P3pguVTp7Yhvknh7IspyNRcyXiaEMx7E/HApjL4OiJs9xrdmPLMqNuhtgg35+uCKJdWizTFPK18AqMh7/uA3DcbChddLhn6F5Q/w3RHuf30B/OHvIGTVFTJiA0sqnqK97PGHDzDPXer1BVYXWFWdAMaC/w6wGuDJiZ2Av47KayFej9WLYCqemrQH/lAewHXsvagQsVcRyhW+LajCQjVCXhz7fzhKugjYUxrUCpX5uqZR80Psr42A2dUIRnXtQD4+/4xEzQmW5bsrt9vaOdF0BOxxB00O1QxxVW8s8tMIFwTztnWGHq93vJDq/zx4CZ3tGi/KWkZ7QHtAe2Bf9EDSRSBUGuhkWyavSEoB+SVfojo3DpoH3mPb64bhA367dOLBx9tBq1f5YmquC5RWvzCg2KWb56/dFfyy8bv4VHRgIuPe0swzIOd1EeCuXqbxMiPdOI6T9HU3oAvQFKgD8CujVcBkYCIWHPo4Y4Q82V783I6LIa/W+BPfOwD+DDfz5fXceOS7E08lwUYzJJwLnABwN8RVfD2wABgL3dV4VjmhXDyVnQKcCbQEeD/Lq4o1wBSA9SrBMyHBDl+400f8KqU5QB/x9Mi24Bdgy4H5AL8+4TuuOIINngzpn1YAd6j8mow8vksrAn4D2Mb81JFt7olgtwYEuwNdgAMBlo1XMfxKbwJsTcMzKcFOQwj1BE4EuLmiHfqK/mFbLga+B+bDJvlRgu6RiFwCOLvgzQg/Azn2gyhB7iBE2gBHAIcBvD7OBegH1nktMBv4CLpb8KwUIb9LYYBlc+hL2C10IuITsuwf/AKtNVAXYLuwz3MssFz86o71XwgbbHt+sUZ/Xwv4GQedXP6I+bc/5Og/0krovlQejP8Xciwrx9GxAMcR82G/oE8+hC77mitB/xokcgyTLGAUdFZG7PZEnHUrAELAOoBjYAxk2MYJKZAwlYll/uoh0zwir2j1L6G6TS7Gh1msaF5SvXKBocHPm1xcNjHs6FMNy58T0ZuT6JrGDvk/RJ8b6DGPRGLtEiVKaeHGl3hssPckXspRNNR5UHoS4OBQ0R1groLcbWi0MSqBVHmwxYH7MOB0HDcT/0TC/XIi9Pnu5mmgF+BMALLYE5D7H5j/QLljJg9ZMJNx5MlF7VmAk66K/g7mesgNRrleVQmQF7HzGoLJfBQ2AfnLYe+NcKRc/3A83gQ4ufqARMT+vBM22Cb/hh0OViVBhv5mHYYB/BJNRcMgNwsJ/WBrrkqAPMgMxuNewMuYLYV8C9jjQurQ9Qjc5kQiT/qMi5tIcxDh5JaMmAfHAjaHySeoBMZGIq2ukH48woVCnHXPRfw5oK/ITxDmYnhkJP0iPO9LIMukflJ63CKAMjSDDMvKBcCNnhZ8ws2HivjFokiNoNMUDM4tKmLZhkPmHPiZn7G7UrKOawTOWjMmv/vqJWZvIxQ4c/UbVsj3uB3yGS7YDP4UYLuQ3hLhzkCOwzNCvuP418dupQrUazzZtnxFjnzaT8t3nFseCj53ezLdBSdeJjNTiUOfA+hjwG0BcMxxIsIJyB7iMNJ9wgYH/puAl8mNAyWGoN8cjNlAb8C1nZDmBzhJTIVOfTyzTsjncmTyFeC2ADhlaIzAK5B/0GGIT/A52D8FvPjIUeXCKNIxiLQFko6jiFINPDkhf4D86bs4Ap+2RgP/AdwWAEfvJASmQUc5wYB/I9JZ/zxHIcmTfaGhJKMspyTDaL6Cp2IxjzuAjyJ1Vcl44Xnx+fMw1NeLsYiMl0XMsznU71gIc6FWto9giL7jmP0MOtUFfqIg29ZtAXD0OOeMh824Me4I8OnFkaI8DiLmd5jEceiIwPKtMkL+/5iWv3PO9pWNcs9Z2SnHzm1iBH0zojKObOSJSb1J2fgWPDoqyWw7uwz6n7rpe+YHfXXs4Z7r+AkK87tUIJ5cXocT3we46qZE0DkDCo+mpGQYD0CvR4o6UXHonomIcuKLCiUIQJ91/gBokkBMTmJnf01mZjqOsnHCfRlIpd8Oht4VirJw0PFaYE/Q+ch0qEvGLFcqGw9OIG+hjjH9E3H6iCeJVMlOVSFNefbTq9LUTaqG+jeD0NVJBd0FeCJ/BOAGbikQAhLRGjER+fNqZhzQQOQnCXdF+tNJZFJN5mn10kRKgUSJTCsd1/y43POXfx+VCwbaOb0E3/B/nlMQvMDsujzm3glXPduKx7UY6guZX0T15IBpcKL7TmY7cVwJrXbClXq2OxyTWvIvhHBk+h0Nx4GpaoSe4J+D9CfwfACy2zyW6WHIyTvp5eCNBJYBzYH+wBGASPwGmXenlsj0GFYtAFOhy7JvBFgegrtaQm4jdhj5BMVyvAJMADi5nA1wYqUdh+ifM1Bm2Z6TnonnCBhBe8YQ71WfAX4EuJO7DjgREOlBlO1tlE08ancUBRDeAVwDTAc44GsCNQAOYp4qDgZY/2R0HwTeBWivGDgI4GR3CyDSP1Cmx8W+hHgdCPxTFIqEv8XzJWADwLvfmwCWy6FaCNwD9HUYeHLw0x8izUbkZoB9kLtD1o/1pK1DAOa/CEiH+kGpOsAybgecMUKf034vgOUWiTovi4wMhjspbLFd/g2sB7gB4ERNH7B9DwTY7mFCu6xDYFAkyqulWxF+3IlHnon+cvpGyDSV5Hcj/n/AZID+vwjoAYjUF3k9hvzZn5MR+9cY4DNgLcB+cCVAuyJx08Hxq6Ski4BVGhiz+/2Wg8v8wan+UOBcO1TRmS3TfCi364qYBcDJJb/4l0klgZZbMEvUc3ixT7NNbLwihi+Equ8u9fWMTDHb8CpykOU35vmscOX+USHpIbS7mJOWJ4Ljn0EDcNDeqVDIB28IcA1khuH5IuSDCrkwCzIdEDhBSl+I+KnQi544IPc8eN8AbQVZDuDuABvXM8HWkRCWJ8BZ4J2OPMUJMJHNAYrE3tB/T+C/ibxY5v8JPAbZ8bOyCCC/w2Cbi49IKxE5GWXjgA0T5DhZjgXOKeeE/2WbcrC9I/AaCmEGZ8OOmC4le47OhZ0fBGkuUnNRLo6TwQKfky8nRtGHHMCclETiIL8ENp0JildJrCMndLEOl4N/O+S2RpTrR57igz9tMk1kZCoMu28nsTUZ5TsKMmcIcieBlwddTo6ZJlX9+UK7YkOb6Rxj7cnjiHNFd+TPBcAh3jIMRYSbG5E4jmR9MZ1hbux6wN4mMQH2PkF8KdBc4B8vhOOCySdIy98Qu/L3AqV5682Q/yVc/eQBWDOBoM/pmHGG+Q7BF/J/HJV1dCJP2/KzE8fQ9vcPO6D4naOv2V1SMB0vkQ+nLuRuzv/rkuer91gyM/8vS+6A1SfcbCr5MTkkj8Cpd0GqD7DFRZoD7zlgDhx+sosM2V0VaUNgP7oAMB3xXXioFrZuCv1kLFWejyAPTwsA6sOdkbgYMb9PoS8uAOEygMeJ6NtwpOKf02EjeZ+qkE8lpKrb3ShHdAGgsUhdByoMy/5cLcl0RtnvAZJujCQ9r9H/QNCWhLlREOl0MYJwGXAT6hQzzhBfBT53tCJxZ9lRYMT4JcIfgvqdJ8hUdXCmlCH7SgOJl6kod8YyjUT9j5GZmY4jD27imkh2X0W7TZZ4jN4PrJT4cl+VksPRpbAXswCQC56Fx9ywRMU/h1YE40NshISE+/sStxezpmXKO7MYW/iTgJcUuj/jk9MR+dXLRjjC9juGv/itVq9zocE7hxeh09rRw98VxDjOsgJjnDQvT2NnQB54TrauTzjydSQeDbziKlT+qdcUNPitLjLHSvwg4hMlnhNlHXc4kchT1peSlVH5+EmhVHZ+f4K83Cc+VeZUzpwgpdVGvJnEy1RUNXiVZUP7LUOmhEjyqewjMTESHo4nd+3iZKoQS52FMm2E1nJJkyc3keQ2nwc9niRU9LmCGd3xQW8F0hdIMtwdf4z6vQ0cKKVVRZRjQKYcmZGhOP1TLNliH2L78r1bdSktk9HWCmPKUz3aiZO23JZHonzVFDa8srZLggl9nHTXg1PAb2b83WI4D8yuPGIPkTKMRqv1/vmbXaOPwVHWONc2fT/g3PBR/hXzF0UFIoHi0DHtsaBcJvMZN60AG65i8JSZTQxTnqdUmhFes2boeCsSCKiT0DgbkHI1GuNFPEcCqob1g/84ZHyQfwxhkeTj6HrIKI+94MOEvRLKrQQDLtdogkR8UM6TEpx8vJIqz1Yo29UuBrjjkYk7u19kZgbi4tWHY+48lM0Jy085Qa4bd+Z/A+TJkP2tEHZfwpOfmG7CM1PEPtVCMFZXCDMot18gge9Vk5jso9tgU55gmE9vgO9w7saTVyQxJw0KVIZgl4sZF92mAE+XziSU6OQMscwR6rQV5eBGkzttkTjncc66DOk8ZY0TEzMUltuRZtsgvxou9hsr+LSxWsHPOCvpImCGfGsxmlQTIAtzZMnrx7bIv3yB66Cv3ueHtyFHuJJZ5lvn9sUo8n6i5LXWi7l4FL/aurkdMkeEv6J2tRaTUGZ2naTafcQIJYqgk3C33wYyNwLsVOzUMvFF7leQnSckyL5NNtDKBF0Gc6W4l2icDsrk6SooYtwZrGJe/REhvJJqcvKqm0hONYBeTqQgpcW0B/yyBW12FmQ4STaSZBntC/SADF8OvgR5dMVKk7wJkH3Fk5RInEhTqWNM30SZv0D5+8HGc4C8c6oF3hMANzrXQfY7hNMm2KB/bwDuAA5J21BmFR+EuUMBVf8ln5+pfoQnF4NVeGaKVH11cIrGY/priropicsdI04ZJ4GvlHftkbv9suK8cEe2hxu+XaNOHLTz5RN/3PXyibsB7p49UbUr5y/HJ6Y/uOTTwgoGFsLeajsUWIJ3BS1d5MrfU8S+e+CL2EoTOkgQeAqGWgGfKAzSj5wsNO1DHkCbLkBxucF5y6XYPD3wJDgOk0XMBOsiv9exUccXUKgOAOuqIl4hzUD9XE/0KiWRF1kAPgaPY2RvWQB4P24DXJguBX4DVHQBmAtQBz73S0q6COAK5wMsBPjjMBUC42te892P9Fxxk3Z/tYP+hzBBt4JsLnBjyQvtjvDqVSvo+1CdRzhfH9IOBvwJZOLLGPRVancjlx0dag14FwKj5DTEuav8I9IuVOp3j9gMubVV6ASv5aKc8rSKNt0AcJLoDix1Kft54PMuvcp2Z5Fy8HSYSh0XqcqP+s0A/0SAu/SdChlea/Ke/C5FmhfWTRCS+z9Pvl8BI4EnI5iJZ5UT6s9F/kjgWUB1ouMJ7APU/2w8s0V85+e1LddDdlu2CiLbTdqp86+ds3Tn8+25m7g+ovwT3hF8iNv6sdWun/Et7vvLnRrikTp2TbHMcMdbLGeqivuNnFGhkHUr0niUKjFs8wvYXmgZVnv8PUJnlU4yHq6LJyWTSTUdHSqEzjIUeldLuvXAL0C603jFUnq+FJej8hFSNVhlHTkep4My1UCZ4viyYiSuGiBXQv89F/mqZMt1KEW56mSqALD1OXzFu2zuiIk8yXYnxPsDz0j8VKI1JWFOCiIxLl4JfYxy/UUUSDcMO7wWfRR1fBvPp4AeClv3MR2yyxRpiVjXSokliHeAnTkiH7aHI95e5FVVGGWhbwegDKPw/C9wIiASJ68Xkc6fzSgVE9IIc+Mk05mwO0Nm7g3x2FnbpUQ1+s3sFwoFjvJZZnOEW1XvN/PO6v1mzIwuANQry50l79KtMl+Ri8k4dv6105ealu9Iy8rpujNYrWGN/jPORx6Da/b7tguugd6QbXuIBy2z2mdxGWWGscHFjCXw5eMnf+uDL03jCHxeqTWXEmR9KVkZ3aTgpnI8X63QP1rB2xOsdVKmufDbYRKvUlEM0hJgOIy0BlQDtnelMii/nxZNbBQjCK+X4rx+zCihfvw/nnvCKMGTm0g8EfxVZCQLow1yIfMnSY5/6BizAEjpeyyKcs1C5u2A2wGetEQ6GJEOIiPNsNxXaUb2UZqmM6/maRFgtgU3Tl1U7YYZK9yKUG3AlG9xX/86vuPH5t23yAz67q6xcfpEN3kVv/oN09fUumHKpAMGTOLRKUr4vaJnPf9URMVPVEwo6DdJNSlG7VYicIpCdyc6mFjumQqZKxU8si4DOABF+laMeAyr7n3P9ahLsR+B3ZL8FRjoSU+Mkk42ot8pjPZV8CrNQjsuhpEzAHkhbpaucfjwOOg2lPTnSfHZUpyfCqr6miSWehR1HAst1YTfLEVr4snFUd3gBPbGJ+qO38QMf813l6J8qWyaFOphltyOZP4NbYlLlL2PMja4y08FhX1QRSKjVGtz4fQddTpz1yQPIvd8bHOUe6I6BY1UCym8BtiMTqK6GuGfj5+E9BcVFr6WeJ8iHgLEyf1e6PMvU79xZBHnruQhJy48xwlhr8FJEJTz5I/g8VqBE1tCgkwJZCdASHxJdgTio8HnFyTbExrIbiLLxQVKvKYZhHItQrlezULWPNIzP5F4pZIyoYws8+MKxS8lHidmbghE4u8C/Rl1VC3wolw64S0KJfafVMi5/hR1WooRIVxHCO8Nwa2KQqRS/3yFPl9Ir0Wb8cTBucIhnjD4OTk/O5b7lSOzR54ZWwTSLf22Rzpfh5+HuAP6LbGQTCwJBi9qOHhqzGSDA7q17dHwjzF53fktrbVj0vtplKkQOtyxoa1sHpV3ArxLdAb/QQg3BlQ0UmSioVfAxhjwLhb4NRH+GvxpeC4FeAXUEZBPZJ9B/0fwUyLobFLkWR9G+NfNnGC4kHI3wvwaAgcA/E78Azwd4oIkLgLksw78rpyLlzNxFCDMBY72ec1FDIOtZ/HMOMEuv/t+AYYHCsbZf/lLoXfjyd0X76LJo5858bJsrGd1oD1srMAzTNAZjsCpwCaAO362cxFAG7WB04FDAZHmixGX8A2w3RZptMvBzv5yCcDFVKRliEwQGQizHZYA4iTKMnwPm7yeog4nqWoA61cDYBuyjktQv+i7M8jngMc2Z3vzmoltzwl7J8ByUe8KQKZ5MiNRHHnuRl4rINNMkDsLvCcRnwpwM3UU0AOQ7+HByg4h/xaw/D+A7cr2ZXuw/mzfUoDp1wAyLZAZkTjnA5n6IB/yaLMYvlgkCHAcjRHiDN4C8Oc9puDJcpHqAOI4qof4DbD1LhOrgrK+CNhPnZO3s6S4bqkVKK435Aun4uG67Xi4S2MrZHFghwnu7J5n+Acg8mCEVfEIWePwsrhvBSNByDTv58KRQMItiQ1C4sBxJrYwI8k//E2WzxQyd4DXDaAth2ibuwJCReyoN6sSPPIGQe4swKkL1ThZXM6AggrBiy4CqAd/mvgx8G6TZDnpny/x5CgnlmzSUBhn3eQJ9XDwiEQk+oNyXYDopEmGB3rWg0x3yBDJaCB8HdNHEQ/C91dB8RuAk7hD7DOnRODw5CcnNpHY5qlcBVKXE+V7DKRI70Ce/U4k9uHK9GPRVjphLp5dUlScijaY76Lzg4LPuYoIE9quCfTXMILne4i/heAl4cSKfzgX9KiIKkMHK7lZYvqyZNfY+FCHWkX/Pu39bdt3FofKrHX+UGnR7/efxt1BlOxgqB5+kA6fdsbg9KiAGCjzb5LkZL1I3Jxdq/kBr4qqWQ6/AvscuHGEjrAKTA5E7sS8EHcb/JGpJV6EVTLQXQn+2cBWVbpHHgf0Ux5lq0wMdeMCyUV1bpVlWpERf4NpYkU07RB6e/g/guF1YRwhj+lgXgAUxSVml8HTAf/TnHTyvR+67Hf7Mq1F4ZXjmJWCX9jn3BYIipDEhZtx2nuTgb2ZfOkWbuvwLnWK7u3U7ff7Op+kspFTYt6DfU1PI4iXIUEbFypAmX3z1vtOO8GRLy0tXQ1+KJoOGTNkbXfSnaf9Ti+/HQwOFOR24UPNMUbQKhR4zMOyy4L9zd7vcqClQ9wRb/SgyF3XeIA/nXw1IO/CoiaQNguRYwAugJzEVMQj+vPAMZCfqRIAj5N6zM4R8V0q2YgN5kmbxSqZCI/2lsnp0OeLs1vA54TLEw4aLyEx/VdgnkJKPkaryhzX5rATc2p07KJcqxE+Gfg74GWxLIHcbIB6Ir2PiBf9hZC7GPkOEpXTCJdB52OgHWy9kEgf6fR5K+BpQOkHSZ9940uJx77GCShZf2bbjQfaIl/VIsfTgUisBxEl6LGMpwL0qaqvsH1HAucDIrH/sX1EUo0RFY91FmmHGEF4EfAVIPMlsXD+L4J5POoRNxYk4V6Iz5d4YjRmrMEeP2O+DAI9gSmioEuY8xaviecq0uUxovKJoya3mWrMObLha49oJJVA0d2d5kD+BMCq7ffXMIdPimlMpE9CWmcghvC6dVjtfxWOcJhFw057EDfwgyPxuT6//7KC4ZN+Znzb8C5H4bqoB35K9HIsxZzUSMUhwzqp/oipPzJSNPS0foZp/5dhnJnvqT2i8D6GK0M4xjWE/lFAY6AGUB3gTokT2jpgARo3oWMhE0ewmwsmfdYUqANw8PC0MAf2YvwHXhxBn+XJFxJWQk9eGIRkjEjbpnw74BCgFsBBwQ7EfH/ymG99yLYBaCMA0Be0UQpw8l8MO+TFEfKn7w4QEoogG7fbhNyhkHE2JRZkPO0soXcE9I4DWEaWh2AdiSUAP4l09RH06ZPmwMEAwwTLsRng/yvsOjFAtwdkPgBEGoLIT0A9gHf3rCvvpGfAVrp95njotwRqA7TByYb+3gDwxTjL6kooZyMkso5sB6eO7G/c/fJDBVd96LK9mwAO7YI881US5NlHTwaYF9uCk9p30GF+7I/0s7Nj5ie568kXCTIHIc6xQuKiwn4es7hApg74hEP8o784/0KObcnys381AAoA9kn2D/Yxli1OD3xXgs3WSPwTQF+yXJx0+WN/y/F0JejRN20BPlku+of9owxgP/sFNsiLI+iyP7HsDq1NIEvf0YcO7YCsvDA4aekvAr/f1Wks3olcCEu2ZeXVrfdQ7H3/1iGdXsOL3j7RnJwAXhzWuX/yACfK58ZBHehMo+HDFS+Et97ZcQT+SGwo+RKNqfNAIVfkKBXd2YmDfVntvMJzzfTeBURt6YD2gFcPYGD2gKy8CPTEgBvr1YaW0x7Y0x7gKp8W+WzjOssynguWmQvrPxa7ANAgrms+wkVQ3CJgG9Y0OUNx8o+mBY3rbOXJMvyfc0TFGLBC9teGmX+HXgBi3KIj2gPaA9oDST2Q9iJQ64FC3jVOcMuhdo0p723d3vEtzOOXRGS24rrmybqPTX3DTUfk403BasR5jJXIvHDLLR0PrffkFB7lwuTzGYPrPBi/EDnp+qk9oD2gPaA9oPYA5uXs0m+3tG+UY+Tk1V174BrzXe8vbDff3HE4CnePqnTg/2aZ9vO46f2i3tNTC1Uymqc9kG0P6OugbHtY268KD6R9EvBauEZPzuRLsTjaPKDDmfih184hw/6y4bNTv5YFfEFrLN4OKhcBmycE06hVt0EOP6fTpD2gPaA9oD2QpgeyvgioymUPPCdvS9m2ibzz95f/NSq/fIihus9Om7e5f4dfwWwqJmABWIb3/dc1HBm/cIhyOqw9UAUe4Fc16JLRDyxCCPMaU5P2wD7jAX6mlDGyhxu+jX071OIzodGnPy3FDzGs4YdRdpn7H8XYZebdkLHDH1CVmT8ZQfMf9TcXtVKdHBLmpxO1B7LgAXwFVAjwvxZ1KIDAd1nISpvUHsiaBzL2TmBzn1NOxZ96fYqS8lvWOfVHT2sL49wlKWlLrza1bX+NgnpHTV6T6KueDb261PTnFvvqvz6T36Vr0h7QHtAe0B7IoAcytghsvOjUR1Gu252y+QKBQ+u/NZl/kKRJe0B7QHtAe2Av9UDm3gnstpfE/Fx2aLfrKWAv9YUulvaA9oD2wH7ngYwtAqHdO0ebwRrd4EH8ibb9av2vZuoXZPtdd9IV1h7QHtAe0B7QHtAe0B7QHthnPPD/8V3S+52JJrgAAAAASUVORK5CYII=\"\n />\n </defs>\n </svg>\n );\n};\n","import \"./Footer.scss\";\nimport { FooterLogoicon } from \"../icons/FooterLogoicon\";\n\nconst Footer = () => {\n let year = new Date().getFullYear();\n\n return (\n <div className=\"footer\">\n <div className=\"container\">\n <div className=\"footer-container\">\n <div className=\"footer-left\">© {year} Solcellespesialisten AS</div>\n <div className=\"footer-right\">\n <span>Drevet av </span>\n <FooterLogoicon />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Footer;\n","import React from \"react\";\nimport { Link, Outlet } from \"react-router-dom\";\nimport \"./HeaderForIframe.scss\";\nimport logoImage from \"../../assets/images/solkartlogo.svg\";\n\nconst HeaderForIframe = () => {\n\n return (\n <>\n <div className=\"header\">\n <div className=\"container\">\n <nav className=\"navigation\">\n <div className=\"logo-image\">\n <Link to=\"/\">\n <img src={logoImage} alt=\"\" />\n </Link>\n </div>\n </nav>\n </div>\n <Outlet />\n </div>\n </>\n );\n};\n\nexport default HeaderForIframe;\n","import { useEffect, RefObject, useLayoutEffect } from 'react';\n\nexport const useOnEscape = (\n handler: (event: KeyboardEvent) => void,\n active = true\n) => {\n useEffect(() => {\n if (!active) return;\n const listener = (event: KeyboardEvent) => {\n // check if key is an Escape\n if (event.key === 'Escape') handler(event);\n };\n document.addEventListener('keyup', listener);\n\n return () => {\n if (!active) return;\n document.removeEventListener('keyup', listener);\n };\n }, [handler, active]);\n};\n\nexport const useRepositionOnResize = (handler: () => void, active = true) => {\n useEffect(() => {\n if (!active) return;\n const listener = () => {\n handler();\n };\n\n window.addEventListener('resize', listener);\n\n return () => {\n if (!active) return;\n window.removeEventListener('resize', listener);\n };\n }, [handler, active]);\n};\n\nexport const useOnClickOutside = (\n ref: RefObject<HTMLElement> | RefObject<HTMLElement>[],\n handler: (event: TouchEvent | MouseEvent) => void,\n active = true\n) => {\n useEffect(() => {\n if (!active) return;\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n const refs = Array.isArray(ref) ? ref : [ref];\n\n let contains = false;\n refs.forEach(r => {\n if (!r.current || r.current.contains(event.target as Node)) {\n contains = true;\n return;\n }\n });\n event.stopPropagation();\n if (!contains) handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n if (!active) return;\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, handler, active]);\n};\n\n// Make sure that user is not able TAB out of the Modal content on Open\nexport const useTabbing = (\n contentRef: RefObject<HTMLElement>,\n active = true\n) => {\n useEffect(() => {\n if (!active) return;\n const listener = (event: KeyboardEvent) => {\n // check if key is an Tab\n if (event.keyCode === 9) {\n const els = contentRef?.current?.querySelectorAll(\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]'\n );\n\n const focusableEls = Array.prototype.slice.call(els);\n if (focusableEls.length === 1) {\n event.preventDefault();\n return;\n }\n\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n if (event.shiftKey && document.activeElement === firstFocusableEl) {\n event.preventDefault();\n lastFocusableEl.focus();\n } else if (document.activeElement === lastFocusableEl) {\n event.preventDefault();\n firstFocusableEl.focus();\n }\n }\n };\n\n document.addEventListener('keydown', listener);\n\n return () => {\n if (!active) return;\n document.removeEventListener('keydown', listener);\n };\n }, [contentRef, active]);\n};\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import React from 'react';\n\ntype PopupStyle = {\n popupContent: {\n tooltip: React.CSSProperties;\n modal: React.CSSProperties;\n };\n popupArrow: React.CSSProperties;\n overlay: {\n tooltip: React.CSSProperties;\n modal: React.CSSProperties;\n };\n};\n\nconst Style: PopupStyle = {\n popupContent: {\n tooltip: {\n position: 'absolute',\n zIndex: 999,\n },\n modal: {\n position: 'relative',\n margin: 'auto',\n },\n },\n popupArrow: {\n height: '8px',\n width: '16px',\n position: 'absolute',\n background: 'transparent',\n color: '#FFF',\n zIndex: -1,\n },\n overlay: {\n tooltip: {\n position: 'fixed',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n zIndex: 999,\n },\n modal: {\n position: 'fixed',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n display: 'flex',\n zIndex: 999,\n },\n },\n};\n\nexport default Style;\n","/* Algo to calculate position\n 1. center position for popup content : the center of the trigger will be the center of the content content\n so the popup content position will be like this :\n top => the y of the center for the trigger element : trigger.top + trigger.height/2\n left => the x of the center for the trigger element : trigger.left + trigger.width/2\n\n 2. translate position according to the first position attribute passed in the function argument\n for example :\n position = 'left top'\n we need to handle the first argument in the position: 'left' => that's mean we need to translate the popup content according to the X axis by - content.width/2\n\n 3.translate position according to the first position attribute passed in the function argument\n for example :\n position = 'left top'\n the second argument 'top' => translate popup content by + content.height*4/5\n\n 4. check if calculated position is going out of bounds of wrapper box or not. If yes repeat 1-3 for next position enum. By default wrapper box is window element\n*/\nimport { PopupPosition } from './types';\n\nexport const POSITION_TYPES: PopupPosition[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right center',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left center',\n 'left bottom',\n //'center center',\n];\n\ntype CordsType = {\n top: number;\n left: number;\n transform: string;\n arrowLeft: string;\n arrowTop: string;\n};\n\nconst getCoordinatesForPosition = (\n triggerBounding: DOMRect,\n ContentBounding: DOMRect,\n position: PopupPosition, //PopupPosition | PopupPosition[],\n arrow: boolean,\n { offsetX, offsetY }: { offsetX: number; offsetY: number }\n): CordsType => {\n const margin = arrow ? 8 : 0;\n const args = position.split(' ');\n // the step N 1 : center the popup content => ok\n const CenterTop = triggerBounding.top + triggerBounding.height / 2;\n const CenterLeft = triggerBounding.left + triggerBounding.width / 2;\n const { height, width } = ContentBounding;\n let top = CenterTop - height / 2;\n let left = CenterLeft - width / 2;\n let transform = '';\n let arrowTop = '0%';\n let arrowLeft = '0%';\n // the step N 2 : => ok\n switch (args[0]) {\n case 'top':\n top -= height / 2 + triggerBounding.height / 2 + margin;\n transform = `rotate(180deg) translateX(50%)`;\n arrowTop = '100%';\n arrowLeft = '50%';\n break;\n case 'bottom':\n top += height / 2 + triggerBounding.height / 2 + margin;\n transform = `rotate(0deg) translateY(-100%) translateX(-50%)`;\n arrowLeft = '50%';\n break;\n case 'left':\n left -= width / 2 + triggerBounding.width / 2 + margin;\n transform = ` rotate(90deg) translateY(50%) translateX(-25%)`;\n arrowLeft = '100%';\n arrowTop = '50%';\n break;\n case 'right':\n left += width / 2 + triggerBounding.width / 2 + margin;\n transform = `rotate(-90deg) translateY(-150%) translateX(25%)`;\n arrowTop = '50%';\n break;\n default:\n }\n switch (args[1]) {\n case 'top':\n top = triggerBounding.top;\n arrowTop = `${triggerBounding.height / 2}px`;\n break;\n case 'bottom':\n top = triggerBounding.top - height + triggerBounding.height;\n arrowTop = `${height - triggerBounding.height / 2}px`;\n break;\n case 'left':\n left = triggerBounding.left;\n arrowLeft = `${triggerBounding.width / 2}px`;\n break;\n case 'right':\n left = triggerBounding.left - width + triggerBounding.width;\n arrowLeft = `${width - triggerBounding.width / 2}px`;\n break;\n default:\n }\n\n top = args[0] === 'top' ? top - offsetY : top + offsetY;\n left = args[0] === 'left' ? left - offsetX : left + offsetX;\n\n return { top, left, transform, arrowLeft, arrowTop };\n};\n\nexport const getTooltipBoundary = (keepTooltipInside: string | Boolean) => {\n // add viewport\n let boundingBox = {\n top: 0,\n left: 0,\n /* eslint-disable-next-line no-undef */\n width: window.innerWidth,\n /* eslint-disable-next-line no-undef */\n height: window.innerHeight,\n };\n if (typeof keepTooltipInside === 'string') {\n /* eslint-disable-next-line no-undef */\n const selector = document.querySelector(keepTooltipInside);\n if (process.env.NODE_ENV !== 'production') {\n if (selector === null)\n throw new Error(\n `${keepTooltipInside} selector does not exist : keepTooltipInside must be a valid html selector 'class' or 'Id' or a boolean value`\n );\n }\n if (selector !== null) boundingBox = selector.getBoundingClientRect();\n }\n\n return boundingBox;\n};\n\nconst calculatePosition = (\n triggerBounding: DOMRect,\n ContentBounding: DOMRect,\n position: PopupPosition | PopupPosition[],\n arrow: boolean,\n { offsetX, offsetY }: { offsetX: number; offsetY: number },\n keepTooltipInside: string | boolean\n): CordsType => {\n let bestCoords: CordsType = {\n arrowLeft: '0%',\n arrowTop: '0%',\n left: 0,\n top: 0,\n transform: 'rotate(135deg)',\n };\n let i = 0;\n const wrapperBox = getTooltipBoundary(keepTooltipInside);\n let positions = Array.isArray(position) ? position : [position];\n\n // keepTooltipInside would be activated if the keepTooltipInside exist or the position is Array\n if (keepTooltipInside || Array.isArray(position))\n positions = [...positions, ...POSITION_TYPES];\n\n // add viewPort for WarpperBox\n // wrapperBox.top = wrapperBox.top + window.scrollY;\n // wrapperBox.left = wrapperBox.left + window.scrollX;\n\n while (i < positions.length) {\n bestCoords = getCoordinatesForPosition(\n triggerBounding,\n ContentBounding,\n positions[i],\n arrow,\n { offsetX, offsetY }\n );\n\n const contentBox = {\n top: bestCoords.top,\n left: bestCoords.left,\n width: ContentBounding.width,\n height: ContentBounding.height,\n };\n\n if (\n contentBox.top <= wrapperBox.top ||\n contentBox.left <= wrapperBox.left ||\n contentBox.top + contentBox.height >=\n wrapperBox.top + wrapperBox.height ||\n contentBox.left + contentBox.width >= wrapperBox.left + wrapperBox.width\n ) {\n i++;\n } else {\n break;\n }\n }\n\n return bestCoords;\n};\n\nexport default calculatePosition;\n","import React, {\n useState,\n useRef,\n useEffect,\n forwardRef,\n useImperativeHandle,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { PopupProps, PopupActions } from './types';\nimport {\n useOnEscape,\n useRepositionOnResize,\n useOnClickOutside,\n useTabbing,\n useIsomorphicLayoutEffect,\n} from './hooks';\n\nimport './index.css';\n\nimport styles from './styles';\nimport calculatePosition from './Utils';\n\nlet popupIdCounter = 0;\n\nconst getRootPopup = () => {\n let PopupRoot = document.getElementById('popup-root');\n\n if (PopupRoot === null) {\n PopupRoot = document.createElement('div');\n PopupRoot.setAttribute('id', 'popup-root');\n document.body.appendChild(PopupRoot);\n }\n\n return PopupRoot;\n};\n\nexport const Popup = forwardRef<PopupActions, PopupProps>(\n (\n {\n trigger = null,\n onOpen = () => {},\n onClose = () => {},\n defaultOpen = false,\n open = undefined,\n disabled = false,\n nested = false,\n closeOnDocumentClick = true,\n repositionOnResize = true,\n closeOnEscape = true,\n on = ['click'],\n contentStyle = {},\n arrowStyle = {},\n overlayStyle = {},\n className = '',\n position = 'bottom center',\n modal = false,\n lockScroll = false,\n arrow = true,\n offsetX = 0,\n offsetY = 0,\n mouseEnterDelay = 100,\n mouseLeaveDelay = 100,\n keepTooltipInside = false,\n children,\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState<boolean>(open || defaultOpen);\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLElement>(null);\n const arrowRef = useRef<HTMLDivElement>(null);\n const focusedElBeforeOpen = useRef<Element | null>(null);\n const popupId = useRef<string>(`popup-${++popupIdCounter}`);\n\n const isModal = modal ? true : !trigger;\n const timeOut = useRef<any>(0);\n\n useIsomorphicLayoutEffect(() => {\n if (isOpen) {\n focusedElBeforeOpen.current = document.activeElement;\n setPosition();\n focusContentOnOpen(); // for accessibility\n lockScrolll();\n } else {\n resetScroll();\n }\n return () => {\n clearTimeout(timeOut.current);\n };\n }, [isOpen]);\n\n // for uncontrolled popup we need to sync isOpen with open prop\n useEffect(() => {\n if (typeof open === 'boolean') {\n if (open) openPopup();\n else closePopup();\n }\n }, [open, disabled]);\n\n const openPopup = (event?: React.SyntheticEvent) => {\n if (isOpen || disabled) return;\n setIsOpen(true);\n setTimeout(() => onOpen(event), 0);\n };\n\n const closePopup = (\n event?: React.SyntheticEvent | KeyboardEvent | TouchEvent | MouseEvent\n ) => {\n if (!isOpen || disabled) return;\n setIsOpen(false);\n if (isModal) (focusedElBeforeOpen.current as HTMLElement)?.focus();\n setTimeout(() => onClose(event), 0);\n };\n\n const togglePopup = (event?: React.SyntheticEvent) => {\n event?.stopPropagation();\n if (!isOpen) openPopup(event);\n else closePopup(event);\n };\n\n const onMouseEnter = (event?: React.SyntheticEvent) => {\n clearTimeout(timeOut.current);\n timeOut.current = setTimeout(() => openPopup(event), mouseEnterDelay);\n };\n\n const onContextMenu = (event?: React.SyntheticEvent) => {\n event?.preventDefault();\n togglePopup();\n };\n\n const onMouseLeave = (event?: React.SyntheticEvent) => {\n clearTimeout(timeOut.current);\n timeOut.current = setTimeout(() => closePopup(event), mouseLeaveDelay);\n };\n\n const lockScrolll = () => {\n if (isModal && lockScroll)\n document.getElementsByTagName('body')[0].style.overflow = 'hidden'; // migrate to document.body\n };\n\n const resetScroll = () => {\n if (isModal && lockScroll)\n document.getElementsByTagName('body')[0].style.overflow = 'auto';\n };\n const focusContentOnOpen = () => {\n const focusableEls = contentRef?.current?.querySelectorAll(\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]'\n );\n const firstEl = Array.prototype.slice.call(focusableEls)[0];\n firstEl?.focus();\n };\n\n useImperativeHandle(ref, () => ({\n open: () => {\n openPopup();\n },\n close: () => {\n closePopup();\n },\n toggle: () => {\n togglePopup();\n },\n }));\n\n // set Position\n const setPosition = () => {\n if (isModal || !isOpen) return;\n if (!triggerRef?.current || !triggerRef?.current || !contentRef?.current)\n return; /// show error as one of ref is undefined\n const trigger = triggerRef.current.getBoundingClientRect();\n const content = contentRef.current.getBoundingClientRect();\n\n const cords = calculatePosition(\n trigger,\n content,\n position,\n arrow,\n {\n offsetX,\n offsetY,\n },\n keepTooltipInside\n );\n contentRef.current.style.top = `${cords.top + window.scrollY}px`;\n contentRef.current.style.left = `${cords.left + window.scrollX}px`;\n if (arrow && !!arrowRef.current) {\n arrowRef.current.style.transform = cords.transform;\n arrowRef.current.style.setProperty('-ms-transform', cords.transform);\n arrowRef.current.style.setProperty(\n '-webkit-transform',\n cords.transform\n );\n arrowRef.current.style.top =\n arrowStyle.top?.toString() || cords.arrowTop;\n arrowRef.current.style.left =\n arrowStyle.left?.toString() || cords.arrowLeft;\n }\n };\n // hooks\n useOnEscape(closePopup, closeOnEscape); // can be optimized if we disabled for hover\n useTabbing(contentRef, isOpen && isModal);\n useRepositionOnResize(setPosition, repositionOnResize);\n useOnClickOutside(\n !!trigger ? [contentRef, triggerRef] : [contentRef],\n closePopup,\n closeOnDocumentClick && !nested\n ); // we need to add a ne\n // render the trigger element and add events\n const renderTrigger = () => {\n const triggerProps: any = {\n key: 'T',\n ref: triggerRef,\n 'aria-describedby': popupId.current,\n };\n const onAsArray = Array.isArray(on) ? on : [on];\n for (let i = 0, len = onAsArray.length; i < len; i++) {\n switch (onAsArray[i]) {\n case 'click':\n triggerProps.onClick = togglePopup;\n break;\n case 'right-click':\n triggerProps.onContextMenu = onContextMenu;\n break;\n case 'hover':\n triggerProps.onMouseEnter = onMouseEnter;\n triggerProps.onMouseLeave = onMouseLeave;\n break;\n case 'focus':\n triggerProps.onFocus = onMouseEnter;\n triggerProps.onBlur = onMouseLeave;\n break;\n default:\n }\n }\n\n if (typeof trigger === 'function') {\n const comp = trigger(isOpen);\n return !!trigger && React.cloneElement(comp, triggerProps);\n }\n\n return !!trigger && React.cloneElement(trigger, triggerProps);\n };\n\n const addWarperAction = () => {\n const popupContentStyle = isModal\n ? styles.popupContent.modal\n : styles.popupContent.tooltip;\n\n const childrenElementProps: any = {\n className: `popup-content ${\n className !== ''\n ? className\n .split(' ')\n .map(c => `${c}-content`)\n .join(' ')\n : ''\n }`,\n style: {\n ...popupContentStyle,\n ...contentStyle,\n pointerEvents: 'auto', //closeOnDocumentClick && nested ? 'auto' : 'none',\n },\n ref: contentRef,\n onClick: (e: any) => {\n e.stopPropagation();\n },\n };\n if (!modal && on.indexOf('hover') >= 0) {\n childrenElementProps.onMouseEnter = onMouseEnter;\n childrenElementProps.onMouseLeave = onMouseLeave;\n }\n return childrenElementProps;\n };\n\n const renderContent = () => {\n return (\n <div\n {...addWarperAction()}\n key=\"C\"\n role={isModal ? 'dialog' : 'tooltip'}\n id={popupId.current}\n >\n {arrow && !isModal && (\n <div ref={arrowRef} style={styles.popupArrow}>\n <svg\n data-testid=\"arrow\"\n className={`popup-arrow ${\n className !== ''\n ? className\n .split(' ')\n .map(c => `${c}-arrow`)\n .join(' ')\n : ''\n }`}\n viewBox=\"0 0 32 16\"\n style={{\n position: 'absolute',\n ...arrowStyle,\n }}\n >\n <path d=\"M16 0l16 16H0z\" fill=\"currentcolor\" />\n </svg>\n </div>\n )}\n {children && typeof children === 'function'\n ? children(closePopup, isOpen)\n : children}\n </div>\n );\n };\n\n const overlay = !(on.indexOf('hover') >= 0);\n const ovStyle = isModal ? styles.overlay.modal : styles.overlay.tooltip;\n\n const content = [\n overlay && (\n <div\n key=\"O\"\n data-testid=\"overlay\"\n data-popup={isModal ? 'modal' : 'tooltip'}\n className={`popup-overlay ${\n className !== ''\n ? className\n .split(' ')\n .map(c => `${c}-overlay`)\n .join(' ')\n : ''\n }`}\n style={{\n ...ovStyle,\n ...overlayStyle,\n pointerEvents:\n (closeOnDocumentClick && nested) || isModal ? 'auto' : 'none',\n }}\n onClick={closeOnDocumentClick && nested ? closePopup : undefined}\n tabIndex={-1}\n >\n {isModal && renderContent()}\n </div>\n ),\n\n !isModal && renderContent(),\n ];\n\n return (\n <>\n {renderTrigger()}\n {isOpen && ReactDOM.createPortal(content, getRootPopup())}\n </>\n );\n }\n);\n\nexport default Popup;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import React from \"react\";\nimport Slider from \"react-slick\";\nimport \"./SimpleSlider.scss\";\nimport ModalPic1 from \"../../assets/images/ModalPic1.jpg\";\nimport ModalPic2 from \"../../assets/images/ModalPic2.png\";\nimport ModalPic3 from \"../../assets/images/ModalPic3.png\";\nimport ModalPic4 from \"../../assets/images/ModalPic4.png\";\nimport Cookies from \"universal-cookie\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useState } from \"react\";\n\nconst SimpleSlider = ({ handleClick }) => {\n const cookies = new Cookies();\n const [newCookie, setNewCookie] = useState(\"\");\n\n const setAcceptCookies = () => {\n let uuid = uuidv4();\n cookies.set(\"access_token_accept\", uuid, {\n path: \"/\",\n expires: new Date(Date.now() + 8.64e7),\n });\n setNewCookie(uuid);\n };\n\n const setSkipCookies = () => {\n let uuid = uuidv4();\n cookies.set(\"access_token_skip\", uuid, {\n path: \"/\",\n expires: new Date(Date.now() + 8.64e7),\n });\n setNewCookie(uuid);\n }\n\n var settings = {\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n };\n \n return (\n <Slider {...settings}>\n <div className=\"first-slider\">\n <div>\n <img src={ModalPic1} alt=\"solkart.no\" />\n </div>\n <div>\n <h1>Velkommen til Solkart</h1>\n <p>\n Denne nettsiden vil automatisk utforme planer for installasjon av\n solcellepaneler pÃ¥ hjemmetaket ditt og gi deg kostnadsoverslag i\n løpet av sekunder.\n </p>\n </div>\n </div>\n <div className=\"second-slider\">\n <div>\n <img src={ModalPic2} alt=\"solkart.no\" />\n </div>\n <div>\n <h1> Klikk pÃ¥ taket du vil montere</h1>\n <p>\n Søk pÃ¥ adressen din. NÃ¥r du finner huset ditt pÃ¥ kartet, velg\n hvilken side av taket du vil installere solcellepanelene pÃ¥. Jo mer\n rødlig fargen pÃ¥ taksiden er, jo sterkere energiproduksjon\n </p>\n </div>\n </div>\n <div className=\"second-slider\">\n <div>\n <img src={ModalPic3} alt=\"solkart.no\" />\n </div>\n <div>\n <h1> Velg taktype</h1>\n <p>\n NÃ¥r du har klikket pÃ¥ taksiden din, mÃ¥ du velge taktype. Klikk pÃ¥\n den for Ã¥ gÃ¥ videre til neste trinn.\n </p>\n </div>\n </div>\n <div className=\"second-slider\">\n <div>\n <img src={ModalPic4} alt=\"solkart.no\" className=\"fourth-pic\" />\n </div>\n <div>\n <h1>Vi bruker informasjonskapsler</h1>\n <p>\n Vi benytter informasjonskapsler pÃ¥{\" \"}\n <a\n href=\"https://www.solcellespesialisten.no/personvern\"\n target=\"_blank\"\n >\n solkart.no\n </a>{\" \"}\n for Ã¥ kunne tilpasse tjenesten bedre. Les mer her.\n </p>\n <div>\n <button\n onClick={() => {\n setAcceptCookies();\n handleClick();\n }}\n >\n Aksepter\n </button>\n <button\n onClick={() => {\n setSkipCookies();\n handleClick();\n }}\n >\n Avvis\n </button>\n </div>\n </div>\n </div>\n </Slider>\n );\n};\n\nexport default SimpleSlider;\n","import React from \"react\";\nimport Popup from \"reactjs-popup\";\nimport SimpleSlider from \"../SimpleSlider/SimpleSlider\";\nimport \"./PopupModal.scss\";\nimport Cookies from \"universal-cookie\";\nimport { useState } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useEffect } from \"react\";\n\nconst PopupModal = () => {\n const cookies = new Cookies();\n const [newCookie, setNewCookie] = useState(\"\");\n const access_token_skip = cookies.get(\"access_token_skip\");\n\n useEffect(() => {\n setNewCookie(access_token_skip);\n }, [access_token_skip]);\n\n return newCookie === undefined ? (\n <Popup modal nested open={true}>\n {(close) => (\n <div className=\"modal\">\n <div className=\"content\">\n <SimpleSlider handleClick={() => close()} />\n </div>\n <div className=\"actions\">\n <button\n className=\"button\"\n onClick={() => {\n let uuid = uuidv4();\n cookies.set(\"access_token_skip\", uuid, {\n path: \"/\",\n expires: new Date(Date.now() + 8.64e7),\n });\n close();\n // setNewCookie(uuid);\n }}\n >\n Skip\n </button>\n </div>\n </div>\n )}\n </Popup>\n ) : null;\n};\n\nexport default PopupModal;\n","export const OrangeCloseicon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"13\"\n viewBox=\"0 0 14 13\"\n fill=\"none\"\n >\n <path\n d=\"M8.53906 6.5L12.5625 2.51562L13.3828 1.69531C13.5 1.57812 13.5 1.38281 13.3828 1.22656L12.5234 0.367188C12.3672 0.25 12.1719 0.25 12.0547 0.367188L7.25 5.21094L2.40625 0.367188C2.28906 0.25 2.09375 0.25 1.9375 0.367188L1.07812 1.22656C0.960938 1.38281 0.960938 1.57812 1.07812 1.69531L5.92188 6.5L1.07812 11.3438C0.960938 11.4609 0.960938 11.6562 1.07812 11.8125L1.9375 12.6719C2.09375 12.7891 2.28906 12.7891 2.40625 12.6719L7.25 7.82812L11.2344 11.8516L12.0547 12.6719C12.1719 12.7891 12.3672 12.7891 12.5234 12.6719L13.3828 11.8125C13.5 11.6562 13.5 11.4609 13.3828 11.3438L8.53906 6.5Z\"\n fill=\"#F67736\"\n />\n </svg>\n );\n };\n ","import { OrangeCloseicon } from \"../icons/OrangeCloseicon\";\nimport \"./Cookie.scss\";\nimport Cookies from \"universal-cookie\";\nimport { useState } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useEffect } from \"react\";\n\nconst Cookie = () => {\n const cookies = new Cookies();\n const [newCookie, setNewCookie] = useState(\"\");\n const [show, setShow] = useState(false);\n const access_token_skip = cookies.get(\"access_token_skip\");\n const access_token_reject = cookies.get(\"access_token_reject\");\n\n useEffect(() => {\n setNewCookie(access_token_skip);\n }, [access_token_skip, access_token_reject]);\n\n const setCookies = (status) => {\n let uuid = uuidv4();\n if (status === \"accept\") {\n cookies.set(\"access_token_accept\", uuid, {\n path: \"/\",\n expires: new Date(Date.now() + 8.64e7),\n });\n cookies.remove(\"access_token_skip\");\n } else {\n cookies.set(\"access_token_reject\", uuid, {\n path: \"/\",\n expires: new Date(Date.now() + 180000),\n });\n }\n setNewCookie(uuid);\n };\n\n return newCookie !== undefined && !show ? (\n <div className=\"cookie-section\">\n <p>\n Ved Ã¥ klikke \"Godta\", godtar du bruken av informasjonskapsler pÃ¥ enheten\n din i samsvar med vÃ¥re retningslinjer for <span>personvern</span> og\n informasjonskapsler.\n </p>\n <div className=\"cookie-accept-reject\">\n <button\n onClick={() => {\n setCookies(\"accept\");\n }}\n >\n Aksepter\n </button>\n <button\n onClick={() => {\n setShow(true)\n setCookies(\"reject\");\n }}\n >\n <OrangeCloseicon />\n </button>\n </div>\n </div>\n ) : null;\n};\n\nexport default Cookie;\n","import React, { useState, useEffect } from \"react\";\nimport { Route, Routes, useLocation } from \"react-router-dom\";\nimport { useDispatch } from \"react-redux\";\nimport { AnimatePresence } from \"framer-motion\";\nimport Cookies from \"universal-cookie\";\n\nimport Home from \"../pages/Home/Home\";\nimport About from \"../pages/About/About\";\nimport Solutions from \"../pages/Solutions/Solutions\";\nimport Contact from \"../pages/Contact/Contact\";\nimport SubmissionView from \"../pages/SubmissionView/SubmissionView\";\nimport SearchResults from \"../pages/SearchResults/SearchResults\";\nimport Offer from \"../pages/Offer/Offer\";\nimport Unsubscribe from \"../pages/Unsubscribe/Unsubscribe\";\nimport Header from \"../components/Header/Header\";\nimport Footer from \"../components/Footer/Footer\";\nimport HeaderForIframe from \"../components/HeaderForIframe/HeaderForIframe\";\nimport PopupModal from \"../components/PopupModal/PopupModal\";\nimport Cookie from \"../components/Cookie/Cookie\";\nimport { setPartnerId } from \"../store/Order/action\";\nimport { getPartnerId } from \"../api/getPartnerId\";\n\nconst Router = () => {\n const cookies = new Cookies();\n const location = useLocation();\n const dispatch = useDispatch();\n const access_token_accept = cookies.get(\"access_token_accept\");\n const access_token_reject = cookies.get(\"access_token_reject\");\n const [newAcceptCookie, setNewAcceptCookie] = useState(\"\");\n const [newRejectCookie, setNewRejectCookie] = useState(\"\");\n const [currentPartner, setCurrentPartner] = useState(\"\");\n\n useEffect(() => {\n const { pathname } = location;\n switch (pathname) {\n case \"/\":\n document.title =\n \"Hjem | Finn solcelleanlegg til ditt tak pÃ¥ Solkart.no\";\n break;\n case \"/about\":\n document.title =\n \"Om Solkart.no | Finn solcelleanlegg til ditt tak pÃ¥ Solkart.no\";\n break;\n case \"/solutions\":\n document.title =\n \"Løsninger | Finn solcelleanlegg til ditt tak pÃ¥ Solkart.no\";\n break;\n case \"/contact\":\n document.title =\n \"Kontakt oss | Finn solcelleanlegg til ditt tak pÃ¥ Solkart.no\";\n break;\n case \"/offer\":\n document.title =\n \"Rekkefølge | Finn solcelleanlegg til ditt tak pÃ¥ Solkart.no\";\n break;\n default:\n break;\n }\n });\n\n useEffect(() => {\n setNewAcceptCookie(access_token_accept);\n setNewRejectCookie(access_token_reject);\n }, [access_token_accept, access_token_reject]);\n\n useEffect(() => {\n if (window.location.href === \"https://solkart.no/?admin=1\") {\n window.location.href = \"http://classic.solkart.no/?admin=1\";\n }\n\n if (window.location.href.indexOf(\"nolimits=1\") > -1) {\n sessionStorage.setItem(\"noLimits\", true);\n } else {\n let getNoLimits = sessionStorage.getItem(\"noLimits\");\n if (getNoLimits === \"true\") {\n sessionStorage.removeItem(\"noLimits\");\n }\n }\n\n let partnerId = getPartnerId(window.location.href);\n if (partnerId !== undefined) {\n dispatch(setPartnerId(partnerId));\n setCurrentPartner(partnerId);\n } else {\n setCurrentPartner(undefined);\n }\n }, []);\n\n return (\n <>\n {newAcceptCookie === undefined && newRejectCookie === undefined ? (\n <PopupModal />\n ) : (\n \"\"\n )}\n {currentPartner === undefined ? <Header /> : <HeaderForIframe />}\n <AnimatePresence wait initial={false}>\n <Routes location={location} key={location.key}>\n <Route path=\"/\" element={<Home />}></Route>\n <Route path=\"/about\" element={<About />}></Route>\n <Route path=\"/solutions\" element={<Solutions />}></Route>\n <Route path=\"/contact\" element={<Contact />}></Route>\n <Route path=\"/contact/view\" element={<SubmissionView />}></Route>\n <Route path=\"/search\" element={<SearchResults />}></Route>\n <Route path=\"/offer\" element={<Offer />}></Route>\n <Route path=\"/unsubscribe/:id\" element={<Unsubscribe />}></Route>\n </Routes>\n </AnimatePresence>\n <Footer />\n {newAcceptCookie === undefined && newRejectCookie === undefined ? (\n <Cookie />\n ) : (\n \"\"\n )}\n </>\n );\n};\n\nexport default Router;\n","export function getPartnerId(url) {\n let partners = [\n { id: 10021, name: \"finnas\" },\n { id: 10011, name: \"siggerud\" },\n { id: 10024, name: \"elbil\" },\n ];\n\n if (url.match(/\\d/)) {\n console.log(\"url\", url.indexOf(\"nolimits=1\"));\n if (url.indexOf(\"nolimits=1\") === -1) {\n return 10005;\n }\n } else {\n let partnerName = url.split(\"=\");\n let partnerId = partners.find((el) => el.name === partnerName[1]);\n if (partnerId !== undefined) {\n return partnerId.id;\n }\n }\n}\n","import Routes from \"./routes/Routes\";\nimport \"./App.scss\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nfunction App() {\n return (\n <BrowserRouter>\n <Routes />\n </BrowserRouter>\n );\n}\n\nexport default App;\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","export default {\n address: {},\n checkedAddress: {},\n // latlng: {},\n finalAddress: {},\n municipality: \"\",\n};\n","import {\n SET_ADDRESS,\n SET_ADDRESS_LATLNG,\n SET_CHECKED_ADDRESS,\n SET_FINAL_ADDRESS,\n SET_MUNICIPALITY,\n} from \"./types\";\nimport AddressState from \"./state\";\n\nconst Reducer = (state = AddressState, options) => {\n switch (options.type) {\n case SET_ADDRESS:\n state.address = options.address;\n break;\n case SET_CHECKED_ADDRESS:\n state.checkedAddress = options.checkedAddress;\n break;\n case SET_FINAL_ADDRESS:\n state.finalAddress = options.finalAddress;\n break;\n // case SET_ADDRESS_LATLNG:\n // state.latlng = options.latlng;\n // break;\n case SET_MUNICIPALITY:\n state.municipality = options.municipality;\n break;\n default:\n break;\n }\n\n return { ...state };\n};\n\nexport default Reducer;\n","export default {\n roofTypes: {},\n roofInfo: {},\n roofIntegrated: \"\",\n};\n","import RoofState from \"./state\";\nimport { SET_ROOF_INFO, SET_ROOF_INTEGRATED, SET_ROOF_TYPES } from \"./types\";\n\nconst Reducer = (state = RoofState, options) => {\n switch (options.type) {\n case SET_ROOF_TYPES:\n state.roofTypes = options.roofTypes;\n break;\n case SET_ROOF_INFO:\n state.roofInfo = options.roofInfo;\n break;\n case SET_ROOF_INTEGRATED:\n state.roofIntegrated = options.roofIntegrated;\n break;\n default:\n break;\n }\n\n return { ...state };\n};\n\nexport default Reducer;\n","export default {\n show: \"step1\",\n showCookie: false,\n};\n","import { SET_SHOW, SET_SHOW_COOKIE } from \"./types\";\nimport ShowState from \"./state\";\n\nconst Reducer = (state = ShowState, options) => {\n switch (options.type) {\n case SET_SHOW:\n state.show = options.show;\n break;\n case SET_SHOW_COOKIE:\n state.showCookie = options.showCookie;\n break;\n default:\n break;\n }\n\n return { ...state };\n};\n\nexport default Reducer;\n","export default {\n panelCount: \"\",\n orderRoofType: \"\",\n roofOrderInfo: [],\n customerInfo: {},\n panelType: \"\",\n orderInfo: {},\n roofInformation: {},\n SFNumber: \"\",\n comment: \"\",\n order: {},\n enovaSupport: \"\",\n partnerId: 10004,\n};\n","import OrderState from \"./state\";\nimport {\n SET_COMMENT,\n SET_CUSTOMER_INFO,\n SET_ENOVE,\n SET_ORDER,\n SET_ORDER_INFO,\n SET_ORDER_PANEL_COUNT,\n SET_ORDER_ROOF_INFO,\n SET_ORDER_ROOF_TYPE,\n SET_PANEL_TYPE,\n SET_PARTNER_ID,\n SET_ROOF_INFORMATION,\n SET_SFNumber,\n} from \"./types\";\n\nconst Reducer = (state = OrderState, options) => {\n switch (options.type) {\n case SET_ORDER_PANEL_COUNT:\n state.panelCount = options.panelCount;\n break;\n case SET_ORDER_ROOF_INFO:\n state.roofOrderInfo = options.roofOrderInfo;\n break;\n case SET_CUSTOMER_INFO:\n state.customerInfo = options.customerInfo;\n break;\n case SET_ORDER_ROOF_TYPE:\n state.orderRoofType = options.orderRoofType;\n break;\n case SET_PANEL_TYPE:\n state.panelType = options.panelType;\n break;\n case SET_ORDER_INFO:\n state.orderInfo = options.orderInfo;\n break;\n case SET_ROOF_INFORMATION:\n state.roofInformation = options.roofInformation;\n break;\n case SET_ORDER:\n state.order = options.order;\n break;\n case SET_SFNumber:\n state.SFNumber = String(options.SFNumber);\n break;\n case SET_COMMENT:\n state.comment = options.comment;\n break;\n case SET_ENOVE:\n state.enovaSupport = options.enovaSupport;\n break;\n case SET_PARTNER_ID:\n state.partnerId = options.partnerId;\n break;\n default:\n break;\n }\n\n return { ...state };\n};\n\nexport default Reducer;\n","import { combineReducers } from \"redux\";\nimport AddressReducer from \"./Address/reducer\";\nimport RoofReducer from \"./Roof/reducer\";\nimport ShowReducer from \"./Show/reducer\";\nimport OrderReducer from \"./Order/reducer\";\n\nexport default combineReducers({\n Address: AddressReducer,\n Roof: RoofReducer,\n Show: ShowReducer,\n Order: OrderReducer,\n});\n","import { applyMiddleware, createStore } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport reducers from \"./reducers\"\n\nexport const store = createStore(reducers, applyMiddleware(thunk))","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { Provider } from \"react-redux\";\nimport App from \"./App\";\nimport {store} from './store'\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n <Provider store={store}>\n <App />\n </Provider>\n);\n"],"names":["module","exports","self","FormData","window","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","default","conversions","Math","PI","value","sourceUnit","targetUnit","precision","Error","converted","pow","parseInt","round","globalScope","ONE","MAX_DIGITS","Decimal","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","floor","mathpow","isDecimal","BASE","MAX_SAFE_INTEGER","MAX_E","P","add","x","y","carry","d","e","k","len","xd","yd","Ctor","constructor","pr","s","slice","ceil","reverse","unshift","pop","checkInt32","min","max","digitsToString","ws","indexOfLastWord","str","w","getZeroString","absoluteValue","abs","this","comparedTo","cmp","j","xdL","ydL","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","equals","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","log","base","r","wpr","ln","minus","sub","subtract","modulo","mod","q","times","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","n","t","toExponential","indexOf","mul","rL","shift","toDecimalPlaces","todp","rm","toFixed","toInteger","toint","toNumber","toPower","sign","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","valueOf","val","toJSON","multiplyInteger","temp","compare","a","b","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c","c0","numerator","x2","charAt","parseDecimal","replace","search","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","arr","config","obj","p","v","ps","clone","test","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","set","define","QueryHandler","require","each","MediaQuery","query","isUnconditional","handlers","mql","matchMedia","listener","currentTarget","assess","addListener","constuctor","addHandler","handler","qh","matches","on","removeHandler","h","destroy","splice","clear","removeListener","action","Util","isFunction","MediaQueryDispatch","queries","browserIsIncapable","register","options","shouldDegrade","match","unregister","deferSetup","setup","initialised","off","unmatch","target","collection","fn","has","prefix","Events","EE","context","once","emitter","event","TypeError","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","name","names","getOwnPropertySymbols","concat","listeners","l","ee","listenerCount","emit","a1","a2","a3","a4","a5","args","undefined","removeAllListeners","prefixed","HAS_WEAKSET_SUPPORT","WeakSet","keys","sameValueZeroEqual","isPlainObject","isPromiseLike","then","isReactElement","$$typeof","getNewCacheFallback","values","getNewCache","createCircularEqualCreator","isEqual","comparator","_comparator","cache","isCacheableA","isCacheableB","hasA","hasB","areArraysEqual","meta","index","areMapsEqual","isValueEqual","size","matchedIndices_1","forEach","aValue","aKey","hasMatch_1","matchIndex_1","bValue","bKey","OWNER","Function","bind","areObjectsEqual","keysA","reactElementA","reactElementB","areRegExpsEqual","source","global","ignoreCase","multiline","unicode","sticky","lastIndex","areSetsEqual","matchedIndices_2","hasMatch_2","matchIndex_2","HAS_MAP_SUPPORT","Map","HAS_SET_SUPPORT","Set","createComparator","createIsEqual","aShape","bShape","Date","getTime","RegExp","deepEqual","shallowEqual","circularDeepEqual","circularShallowEqual","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","Symbol","for","f","g","m","u","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","camel2hyphen","obj2mq","mq","features","feature","isDimension","extend","dest","src","F","proto","lastId","stamp","_leaflet_id","throttle","time","lock","wrapperFn","later","setTimeout","wrapNum","range","includeMax","falseFn","formatNum","num","trim","splitWords","split","setOptions","getParamString","existingUrl","uppercase","params","encodeURIComponent","toUpperCase","templateRe","template","data","array","el","emptyImageUrl","getPrefixed","lastTime","timeoutDefer","timeToCall","requestFn","requestAnimationFrame","cancelFn","cancelAnimationFrame","id","clearTimeout","requestAnimFrame","immediate","cancelAnimFrame","Class","checkDeprecatedMixinEvents","L","Mixin","Util.isArray","console","warn","stack","props","NewClass","Util.setOptions","initialize","callInitHooks","parentProto","__super__","Util.create","statics","Util.extend","_initHooks","_initHooksCalled","include","parentOptions","mergeOptions","addInitHook","init","types","_on","Util.splitWords","_off","removeAll","_once","_listens","newListener","ctx","_firingCount","Util.falseFn","fire","propagate","listens","sourceTarget","_propagateEvent","_fn","_eventParents","addEventParent","Util.stamp","removeEventParent","layer","propagatedFrom","addEventListener","removeEventListener","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","Point","trunc","toPoint","Bounds","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","isNaN","toLatLng","lon","point","_add","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","contains","min2","max2","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","bounds","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","pad","bufferRatio","heightBuffer","widthBuffer","sw2","ne2","sw","_southWest","ne","_northEast","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","Util.formatNum","other","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","cos","CRS","latLngToPoint","latlng","zoom","projectedPoint","projection","project","scale","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","LN2","getProjectedBounds","infinite","transform","wrapLng","Util.wrapNum","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","R","latlng1","latlng2","rad","lat1","lat2","sinDLat","sin","sinDLon","atan2","earthRadius","SphericalMercator","MAX_LATITUDE","atan","Transformation","_a","_b","_c","_d","toTransformation","EPSG3857","code","EPSG900913","svgCreate","document","createElementNS","pointsToPath","rings","closed","len2","Browser","svg","style","documentElement","ie","ielt9","edge","navigator","webkit","userAgentContains","android","android23","webkitVer","exec","userAgent","androidStock","opera","chrome","gecko","safari","phantom","opera12","win","platform","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobile","orientation","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","pointer","touchNative","TouchEvent","touch","L_NO_TOUCH","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","opts","get","canvas","createElement","getContext","createSVGRect","inlineSvg","innerHTML","firstChild","namespaceURI","vml","shape","behavior","adj","mac","linux","toLowerCase","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","pEvent","touchstart","touchmove","touchend","touchcancel","handle","_onPointerStart","_handlePointer","_pointers","_pointerDocListener","addPointerListener","_addPointerDocListener","removePointerListener","_globalPointerDown","pointerId","_globalPointerMove","_globalPointerUp","pointerType","MSPOINTER_TYPE_MOUSE","touches","changedTouches","MSPOINTER_TYPE_TOUCH","DomEvent.preventDefault","makeDblclick","prop","newEvent","detail","isTrusted","_simulated","delay","addDoubleTapListener","last","simDblclick","sourceCapabilities","firesTouchEvents","path","DomEvent.getPropagationPath","some","HTMLLabelElement","attributes","HTMLInputElement","HTMLSelectElement","now","dblclick","removeDoubleTapListener","disableTextSelection","enableTextSelection","_userSelect","_outlineElement","_outlineStyle","TRANSFORM","testProp","TRANSITION","TRANSITION_END","getElementById","getStyle","currentStyle","defaultView","css","getComputedStyle","tagName","className","container","appendChild","remove","parent","parentNode","removeChild","empty","toFront","lastChild","toBack","insertBefore","hasClass","classList","getClass","addClass","setClass","removeClass","Util.trim","baseVal","correspondingElement","setOpacity","opacity","_setOpacityIE","filter","filterName","filters","item","Enabled","Opacity","setTransform","offset","pos","setPosition","_leaflet_pos","left","top","getPosition","DomEvent.on","DomEvent.off","userSelectProperty","disableImageDrag","enableImageDrag","preventOutline","element","tabIndex","restoreOutline","outline","getSizedParentNode","offsetWidth","offsetHeight","body","getScale","rect","getBoundingClientRect","width","height","boundingClientRect","addOne","eventsKey","batchRemove","removeOne","Util.indexOf","filterFn","mouseSubst","mouseenter","mouseleave","wheel","originalHandler","passive","isExternalTarget","attachEvent","detachEvent","stopPropagation","originalEvent","_stopped","cancelBubble","disableScrollPropagation","disableClickPropagation","preventDefault","returnValue","stop","getPropagationPath","ev","composedPath","getMousePosition","clientX","clientY","clientLeft","clientTop","wheelPxFactor","getWheelDelta","wheelDeltaY","deltaY","deltaMode","deltaX","deltaZ","wheelDelta","related","relatedTarget","err","PosAnimation","run","newPos","duration","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","DomUtil.getPosition","_offset","_startTime","_animate","_step","_complete","_animId","Util.requestAnimFrame","elapsed","_runFrame","_easeOut","progress","DomUtil.setPosition","Util.cancelAnimFrame","crs","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","Util.bind","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_zoomAnimated","DomUtil.TRANSITION","_createAnimProxy","_proxy","DomUtil.TRANSITION_END","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","noMoveStart","setZoom","zoomIn","delta","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","padding","paddingBR","paddingBottomRight","getBoundsZoom","Infinity","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","DomUtil.addClass","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","from","to","startZoom","w0","w1","u1","rho","rho2","sq","sinh","cosh","tanh","r0","easeOut","start","S","frame","_flyToFrame","_move","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","paddedBounds","paddedSize","invalidateSize","oldSize","_lastCenter","newSize","oldCenter","debounceMoveend","locate","_locateOptions","timeout","watch","_handleGeolocationError","message","onResponse","_handleGeolocationResponse","onError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","error","_container","coords","latitude","longitude","accuracy","timestamp","HandlerClass","enable","_containerId","DomUtil.remove","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","DomUtil.create","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","se","boundsSize","snap","scalex","scaley","_size","clientWidth","clientHeight","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","DomEvent.getMousePosition","mouseEventToLayerPoint","mouseEventToLatLng","DomUtil.get","_onScroll","_fadeAnimated","position","DomUtil.getStyle","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","supressEvent","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","onOff","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","targets","isHover","srcElement","dragging","_draggableMoved","DomEvent.isExternalTarget","_isClickDisabled","DomUtil.preventOutline","_fireDOMEvent","_mouseEvents","canvasTargets","synth","filtered","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","enabled","moved","boxZoom","disable","whenReady","callback","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","right","DomUtil.removeClass","proxy","mapPane","DomUtil.TRANSFORM","DomUtil.setTransform","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","_tempFireZoomEvent","createMap","Control","map","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","control","corners","_controlContainer","createCorner","vSide","hSide","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","acceptableHeight","offsetTop","collapse","setAttribute","DomEvent.disableClickPropagation","DomEvent.disableScrollPropagation","section","link","_layersLink","href","title","_baseLayersList","_separator","_overlaysList","overlay","sort","setZIndex","DomUtil.empty","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","display","_createRadioElement","checked","radioHtml","radioFragment","input","label","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","html","DomEvent.stop","zoomControl","Scale","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","miles","feet","maxFeet","text","ratio","pow10","ukrainianFlag","Attribution","_attributions","attributionControl","getAttribution","addAttribution","_addAttribution","removeAttribution","setPrefix","attribs","prefixAndAttribs","attribution","Handler","_enabled","addHooks","removeHooks","_lastCode","START","Draggable","clickTolerance","dragStartTarget","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","DomUtil.hasClass","which","button","DomUtil.disableImageDrag","DomUtil.disableTextSelection","_moving","first","sizedParent","DomUtil.getSizedParentNode","_startPoint","_parentScale","DomUtil.getScale","mouseevent","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_lastEvent","_updatePosition","noInertia","DomUtil.enableImageDrag","DomUtil.enableTextSelection","simplify","tolerance","sqTolerance","_simplifyDP","_reducePoints","pointToSegmentDistance","p1","p2","_sqClosestPointOnSegment","closestPointOnSegment","markers","Uint8Array","_simplifyDPStep","newPoints","sqDist","maxSqDist","reducedPoints","prev","_sqDist","clipSegment","useLastCode","codeOut","newCode","codeA","_getBitCode","codeB","_getEdgeIntersection","dx","dy","dot","isFlat","_flat","polylineCenter","halfDist","segDist","dist","clipPolygon","clippedPoints","edges","_code","LineUtil._getBitCode","LineUtil._getEdgeIntersection","polygonCenter","area","LineUtil.isFlat","LonLat","Mercator","R_MINOR","tmp","con","ts","tan","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","method","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","methodName","getLayer","getLayers","zIndex","layerGroup","FeatureGroup","setStyle","bringToFront","bringToBack","featureGroup","Icon","popupAnchor","tooltipAnchor","crossOrigin","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","img","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","icon","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","_stripUrl","strip","re","idx","querySelector","MarkerDrag","marker","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","origin","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","Marker","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","autoPanOnFocus","draggable","latLng","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","getIcon","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","_panOnFocus","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","opt","DomUtil.setOpacity","iconOpts","_getPopupAnchor","_getTooltipAnchor","Path","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_updateBounds","_bringToBack","_path","_project","_clickTolerance","CircleMarker","radius","setRadius","getRadius","_point","r2","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","circleMarker","Circle","legacyOptions","_mRadius","half","latR","bottom","lngR","acos","circle","Polyline","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","minDistance","minPoint","closest","LineUtil._sqClosestPointOnSegment","jLen","_parts","LineUtil.polylineCenter","_defaultShape","addLatLng","_convertLatLngs","result","flat","_rings","_projectLatlngs","_rawPxBounds","projectedBounds","ring","_clipPoints","segment","parts","LineUtil.clipSegment","_simplifyPoints","LineUtil.simplify","_updatePoly","part","LineUtil.pointToSegmentDistance","polyline","LineUtil._flat","Polygon","PolyUtil.polygonCenter","clipped","PolyUtil.clipPolygon","polygon","GeoJSON","geojson","addData","geometries","geometry","coordinates","geometryToLayer","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","geoLayer","properties","featureLayer","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","toGeoJSON","geoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","errorOverlayUrl","url","_url","_image","_initImage","styleOpts","DomUtil.toFront","DomUtil.toBack","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","onload","onerror","_overlayOnError","image","errorUrl","imageOverlay","VideoOverlay","autoplay","loop","keepAspectRatio","muted","playsInline","vid","onloadeddata","sourceElements","getElementsByTagName","sources","videoOverlay","video","SVGOverlay","svgOverlay","DivOverlay","content","_source","_content","openOn","close","toggle","_prepareOpen","_removeTimeout","getContent","setContent","visibility","_updateContent","_updateLayout","isOpen","node","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","_initOverlay","OverlayClass","old","Popup","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","popup","DomEvent.stopPropagation","closeOnClick","closePopupOnClick","preclick","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","whiteSpace","scrolledClass","marginBottom","containerHeight","containerWidth","layerPos","containerPos","openPopup","_popupHandlersAdded","click","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","keyCode","Tooltip","direction","permanent","tooltip","_setPosition","subX","subY","tooltipPoint","tooltipWidth","tooltipHeight","openTooltip","closeTooltip","bindTooltip","_tooltip","isTooltipOpen","unbindTooltip","_initTooltipInteractions","_tooltipHandlersAdded","_moveTooltip","_openTooltip","_addFocusListeners","mousemove","_setAriaDescribedByOnLayer","toggleTooltip","setTooltipContent","getTooltip","_addFocusListenersOnLayer","moving","DivIcon","bgPos","backgroundPosition","divIcon","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","tileZoom","_clampZoom","_updateLevels","viewprereset","_invalidateAll","Util.throttle","createTile","getTileSize","children","edgeZIndex","isFinite","nextFrame","willPrune","tile","current","loaded","fade","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","Number","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","y2","z2","coords2","_tileCoordsToKey","animating","_setView","noPrune","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","translate","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","queue","margin","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","gridLayer","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","referrerPolicy","_onTileRemove","noRedraw","done","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","Util.template","getAttribute","tilePoint","complete","Util.emptyImageUrl","tileLayer","TileLayerWMS","defaultWmsParams","service","request","styles","format","transparent","version","wmsParams","realRetina","_crs","_wmsVersion","parseFloat","projectionKey","bbox","setParams","tileLayerWMS","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","currentCenterPoint","_center","topLeftOffset","Canvas","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","order","_order","_drawLast","next","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_clear","clearRect","save","restore","beginPath","clip","_drawing","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","clickedLayer","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","SVG","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","rectangle","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","threshold","limit","worldWidth","halfWidth","newX1","newX2","newX","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","mousedown","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","_panKeys","codes","_zoomKeys","altKey","ctrlKey","metaKey","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","DomEvent.getWheelDelta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","tapHoldDelay","tapHold","tapTolerance","TapHold","_holdTimeout","_cancel","_isTapValid","_cancelClickPrevent","_simulateEvent","cancelClickPrevent","simulatedEvent","MouseEvent","bubbles","cancelable","view","dispatchEvent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","_animRequest","moveFn","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","root","objectToString","nativeMax","nativeMin","isObject","isObjectLike","isSymbol","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","flush","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","baseCreate","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","LodashWrapper","chainAll","__chain__","__index__","__values__","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","WeakMap","iteratee","predicate","resIndex","baseIndexOf","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","string","object","objectCreate","baseForOwn","baseEach","createBaseEach","computed","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","keysFunc","symbolsFunc","getRawTag","symToStringTag","toStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","baseIsEqualDeep","baseIsEqual","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","nativeCeil","end","step","overRest","setToString","metaMap","baseSetData","constant","baseSetToString","comparer","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","isCommon","seen","outer","seenIndex","stringToPath","baseSlice","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","coreJsData","placeholder","eachFunc","iterable","createCtor","isBind","castSlice","hasUnicode","stringToArray","strSymbols","chr","thisBinding","createHybrid","createRecurry","getHolder","replaceHolders","findIndexFunc","composeArgs","composeArgsRight","countHolders","reorder","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","baseRange","isIterateeCall","toFinite","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","noop","createBind","createCurry","createPartial","getData","mergeData","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","symbolValueOf","tag","byteLength","byteOffset","buffer","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","realNames","otherFunc","isKeyable","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","ctorString","reWrapDetails","reSplitDetails","hasFunc","reHasUnicode","nativeCreate","reWrapComment","details","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","getFuncName","lodash","funcName","maskSrcKey","uid","IE_PROTO","assocIndexOf","getMapData","memoize","PLACEHOLDER","WRAP_ARY_FLAG","srcBitmask","newBitmask","isCombo","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","binding","otherArgs","copyArray","indexes","oldArray","shortOut","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","nativeNow","count","lastCalled","remaining","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","arrayEach","wrapFlags","pair","createWrap","curry","guard","timeWaiting","arrayEvery","baseEvery","find","createFind","defaultValue","baseHasIn","hasPath","baseIsArguments","stubFalse","Buffer","isNumber","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseAssignValue","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseProperty","basePropertyDeep","createRange","baseSome","baseOrderBy","baseRest","sortBy","INFINITY","remainder","baseTrim","baseUniq","upperFirst","createCaseFirst","wrapperClone","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isDate","res","arrLen","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","matched","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","toISOString","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","propIsEnumerable","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","B","iterator","C","D","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","G","H","isReactComponent","setState","forceUpdate","I","isPureReactComponent","J","K","ref","__self","__source","_owner","O","Q","keyPrefix","T","U","V","escape","aa","X","N","Y","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","isValidElement","lazy","_ctor","_status","_result","memo","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","Qa","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","configurable","enumerable","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","ob","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","tb","menuitem","br","col","embed","hr","keygen","param","track","wbr","ub","vb","is","wb","xb","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","persist","isPersistent","wd","eventPhase","timeStamp","td","ud","vd","Ad","pageX","pageY","getModifierState","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Meta","Shift","Pd","Qd","repeat","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","targetTouches","Xd","Yd","wheelDeltaX","Zd","$d","ae","be","documentMode","ce","de","fe","ge","he","le","email","password","tel","me","oe","pe","qe","te","ue","ve","we","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","of","pf","qf","rf","random","sf","capture","tf","uf","parentWindow","vf","wf","na","xa","$a","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","eh","fh","gh","ih","jh","kh","nh","_reactInternals","lh","mh","oh","shouldComponentUpdate","ph","state","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","deps","si","ti","ui","vi","wi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useInsertionEffect","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","autoFocus","createTextNode","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","dl","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","_typeof","PrevArrow","NextArrow","_react","_interopRequireDefault","_classnames","_innerSliderUtils","__esModule","_extends","ownKeys","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","writable","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_React$PureComponent","_super","clickHandler","prevClasses","prevHandler","currentSlide","slideCount","slidesToShow","prevArrowProps","customProps","prevArrow","_React$PureComponent2","_super2","nextClasses","nextHandler","canGoNext","nextArrowProps","nextArrow","_default","accessibility","adaptiveHeight","afterChange","appendDots","dots","arrows","autoplaySpeed","beforeChange","centerMode","centerPadding","cssEase","customPaging","dotsClass","easing","edgeFriction","focusOnSelect","initialSlide","lazyLoad","onEdge","onInit","onLazyLoadError","onReInit","pauseOnDotsHover","pauseOnFocus","pauseOnHover","responsive","rows","rtl","slide","slidesPerRow","slidesToScroll","swipe","swipeEvent","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","waitForAnimate","Dots","spec","_this$props","onMouseEnter","onMouseOver","onMouseLeave","dotCount","mouseEvents","_rightBound","rightBound","clamp","_leftBound","leftBound","dotOptions","autoplaying","currentDirection","currentLeft","edgeDragged","initialized","lazyLoadedList","listHeight","listWidth","scrolling","slideHeight","slideWidth","swipeLeft","swiped","swiping","touchObject","startX","startY","curX","curY","trackStyle","trackWidth","targetSlide","InnerSlider","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_React$Component","_this","list","elem","getHeight","slidesToLoad","getOnDemandLazySlides","onLazyLoad","listRef","trackRef","updateState","adaptHeight","autoPlay","lazyLoadTimer","setInterval","progressiveLazyLoad","ro","onWindowResized","callbackTimers","observe","onfocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","clearInterval","timer","autoplayTimer","disconnect","checkImagesLoad","setTrackStyle","didPropsChange","changeSlide","pause","debouncedResize","resizeWindow","isTrackMounted","updatedState","initializedState","slideIndex","targetLeft","getTrackLeft","getTrackCSS","_trackWidth","_trackLeft","childrenWidths","preClones","getPreClones","postClones","getPostClones","_i2","_trackStyle","currentWidth","childrenCount","trackLeft","images","imagesCount","loadedCount","prevClickHandler","_index","dontAnimate","asNavFor","_slideHandler","slideHandler","asNavForIndex","innerSlider","firstBatch","nodes","clickable","keyHandler","ontouchmove","verticalSwiping","disableBodyScroll","swipeStart","swipeMove","swipeEnd","triggerSlideHandler","enableBodyScroll","nextIndex","playType","play","pauseType","trackProps","extractObject","onTrackOver","onTrackLeave","selectHandler","dotProps","onDotsLeave","onDotsOver","arrowProps","verticalHeightStyle","centerPaddingStyle","listStyle","listProps","onMouseDown","onMouseMove","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","touchEnd","onTouchCancel","onKeyDown","innerSliderProps","unslick","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","_innerSlider","_json2mq","_defaultProps","enquire","canUseDOM","Slider","slickPrev","slickNext","slickGoTo","breakpoint","_responsiveMediaHandlers","_this2","breakpoints","breakpt","bQuery","media","settings","newProps","_this3","resp","newChildren","newSlide","row","innerSliderRefHandler","getSlideClasses","slickActive","slickCenter","slickCloned","getKey","fallbackKey","renderSlides","slides","preCloneSlides","postCloneSlides","startIndex","lazyStartIndex","endIndex","lazyEndIndex","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","preCloneNo","_len","_key","handleRef","checkSpecKeys","checkNavigable","slidesOnRight","slidesOnLeft","siblingDirection","safePreventDefault","lazySlidesOnRight","lazySlidesOnLeft","getWidth","getTrackAnimateCSS","getTotalSlides","getSwipeDirection","getSlideCount","getRequiredLazySlides","getNavigableIndexes","lowerBound","upperBound","onDemandSlides","requiredSlides","xDist","yDist","swipeAngle","canGo","newObject","listNode","trackNode","centerPaddingAdj","finalSlide","animationLeft","finalLeft","animationSlide","indexOffset","previousInt","slideOffset","previousTargetSlide","curLeft","swipeLength","verticalSwipeLength","positionOffset","swipeDirection","touchSwipeLength","onSwipe","minSwipe","activeSlide","counter","navigables","prevNavigable","swipedSlide","slickList","every","offsetLeft","currentIndex","keysArray","reduce","trackHeight","trackChildren","WebkitTransition","WebkitTransform","msTransform","slidesToOffset","targetSlideIndex","trackElem","childNodes","_ref","_ref2","_hasClass","replaceClassName","origClass","classToRemove","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_Transition","CSSTransition","onEnter","appearing","getClassNames","removeClasses","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","isStringClassNames","_proto","_this$getClassNames6","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","originalArgs","_child$props","inProp","in","_React$Children$toArr","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","Transition","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","childProps","_propTypes","_ChildMapping","TransitionGroup","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","jsx","jsxs","_defaultValue","_globalName","startTransition","unstable_act","_postcssValueParser2","_parser","_reducer2","_stringifier2","MATCH_CALC","walk","contents","ast","parser","parse","reducedAst","_cssUnitConverter","_cssUnitConverter2","convertAbsoluteLength","flip","_convert","_convert2","operator","convertMathExpression","_node","op","flipValue","isValueType","reduceAddSubExpression","reduceDivisionExpression","reduceMultiplicationExpression","reduceMathExpression","calc","_reducer","prec","JisonParserError","hash","stacktrace","exception","ex2","captureStackTrace","rv","trace","hasPartialLrUpgradeOnConflict","errorRecoveryTokenDiscardCount","symbols_","terminals_","TERROR","EOF","originalQuoteName","originalParseError","cleanupAfterParse","constructParseErrorInfo","yyMergeLocationInfo","__reentrant_call_depth","__error_infos","__error_recovery_infos","quoteName","id_str","getSymbolName","describeSymbol","terminal_descriptions_","collect_expected_token_set","do_not_describe","tokenset","check","state_descriptions_","table","productions_","rule","performAction","yystate","yysp","yyvstack","lexer","$","goto","bt","defaultActions","bda","parseError","ExceptionClass","recoverable","sstack","vstack","sp","NO_ACTION","__lexer__","sharedState_yy","pre_parse","post_parse","pre_lex","post_lex","fastLex","assert","yyGetSharedState","dst","shallow_copy_noclobber","resultValue","invoke_post_methods","do_not_nuke_errorinfos","cleanupAfterLex","ex","expected","pei","errStr","yytext","token_id","line","yylineno","new_state","newState","symbol_stack","state_stack","value_stack","stack_pointer","rec","yyrulelen","this_production","lex","yyval","_$","retval","setInput","canIUse","errSymbolDescr","showPosition","ntsymbol","JisonLexerError","ERROR","__currentRuleSet__","__decompressed","_backtrack","_input","_more","_signaled_error_token","conditionStack","yyleng","yylloc","constructLexErrorInfo","show_input_position","prettyPrintRange","pos_str","loc","yyerror","lineno_msg","lexerErrorsAreRecoverable","extra_error_attributes","last_column","first_line","first_column","last_line","rules","rule_re","conditions","rule_ids","rule_regexes","rule_new_ids","__rule_regexes","__rule_count","editRemainingInput","cpsArg","slice_len","lines","ch2","unput","pre","pre_lines","more","reject","backtrack_lexer","less","pastInput","maxSize","maxLines","upcomingInput","maxPrefix","maxPostfix","deriveLocationInfo","actual","preceding","following","context_loc","context_loc2","l0","l1","lineno_display_width","log10","ws_prefix","nonempty_line_indexes","lno","errpfx","clip_start","MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT","clip_end","intermediate_line","describeYYLLOC","display_range_too","l2","c1","c2","r1","test_match","indexed_rule","backup","match_str","match_str_len","tempMatch","_currentRules","trackPosition","topState","pendingInput","activeCondition","conditionStackDepth","begin","condition","pushState","popState","stateStackSize","yyrulenumber","YY_START","simpleCaseActionClusters","inclusive","Parser","ValueParser","openParentheses","closeParentheses","singleQuote","doubleQuote","backslash","slash","comma","colon","star","escapePos","whitespacePos","balanced","before","after","sourceIndex","unclosed","stringifyNode","custom","buf","customResult","EXP","dotted","sciPos","containsNumber","MapShim","getIndex","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","timeoutCallback","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","objA","objB","compareContext","keysB","bHasOwnProperty","valueA","valueB","dec","decode","tryDecode","enc","encode","fieldContentRegExp","maxAge","domain","expires","toUTCString","httpOnly","secure","sameSite","decodeURIComponent","inst","useSyncExternalStoreWithSelector","hasValue","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","leafPrototypes","getProto","ns","def","definition","globalThis","nmd","paths","nc","batch","getBatch","ReactReduxContext","useReduxContext","notInitialized","refEquality","createSelectorHook","useDefaultReduxContext","selector","equalityFn","store","subscription","getServerState","selectedState","addNestedSub","getState","useSelector","nullListeners","notify","createSubscription","parentSub","unsubscribe","handleChangeWrapper","onStateChange","trySubscribe","subscribe","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","serverState","contextValue","previousState","Context","React","createStoreHook","useStore","createDispatchHook","useDefaultStore","newBatch","Action","useDispatch","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_s","_e","_x","_r","_arr","_n","iter","_toPropertyKey","hint","prim","toPrimitive","_construct","Parent","_wrapNativeSuper","_cache","Wrapper","initializeConnect","ResultType","PopStateEventType","getHistoryState","usr","createLocation","pathname","parsePath","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","handlePop","listen","Push","historyState","Replace","replaceState","go","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","caseSensitive","startsWith","invariant","joinPaths","computeScore","paramRe","isSplat","segments","initialScore","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","warning","endsWith","paramNames","regexpSource","_","paramName","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","nextChar","cond","getInvalidPathError","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","ErrorResponse","statusText","isRouteErrorResponse","checkIfSnapshotChanged","latestGetSnapshot","prevValue","nextValue","DataStaticRouterContext","DataRouterContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","RouteErrorContext","useInRouterContext","useLocation","getPathContributingMatches","useNavigate","routePathnamesJson","activeRef","navigate","relative","OutletContext","useResolvedPath","_temp2","DefaultErrorElement","useDataRouterState","DataRouterStateHook","UseRouteError","thisRoute","errors","useRouteError","lightgrey","preStyles","backgroundColor","codeStyles","fontStyle","DataRouterHook","RenderErrorBoundary","errorInfo","RenderedRoute","routeContext","dataStaticRouterContext","errorElement","_deepestRenderedBoundaryId","_renderMatches","parentMatches","dataRouterState","renderedMatches","errorIndex","findIndex","reduceRight","getChildren","hookName","AwaitRenderStatus","Outlet","useOutlet","Route","_props","Router","_ref4","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","navigationContext","trailingPathname","Routes","_ref5","dataRouterContext","dataRouterStateContext","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","useRoutes","router","createRoutesFromChildren","neverSettledPromise","treePath","loader","hasErrorBoundary","shouldRevalidate","defaultTimestep","getCurrentTime","onNextFrame","useDefaultElapsed","runNextFrame","isProcessing","stepsOrder","steps","acc","toRun","toRunNextFrame","numToRun","flushNextFrame","toKeepAlive","schedule","addToCurrentFrame","frameData","createRenderStep","sync","keepAlive","startLoop","cancelSync","processStep","stepId","processFrame","getFrameData","useIsMounted","allowArrayLike","it","normalCompletion","didErr","_e2","PresenceContext","useConstant","PopChildMeasure","childRef","isPresent","sizeRef","PopChild","motionPopId","head","sheet","insertRule","PresenceChild","initial","onExitComplete","presenceAffectsLayout","presenceChildren","newChildrenMap","childId","LayoutGroupContext","useUnmountEffect","warned","warnOnce","getChildKey","AnimatePresence","exitBeforeEnter","forcedRenderCount","setForcedRenderCount","forceRender","useForceUpdate","forceRenderLayoutGroup","filteredChildren","onlyElements","childrenToRender","exiting","presentChildren","allChildren","isInitialRender","updateChildLookup","presentKeys","targetKeys","numPresent","insertionIndex","removeIndex","presentChild","readCookie","cleanValue","cleanupCookieValue","doNotParse","isParsingCookie","__assign","Cookies","cookies","changeListeners","HAS_DOCUMENT_COOKIE","cookie","parseCookies","_updateBrowserValues","parseOptions","_emitChange","getAll","name_1","finalOptions","addChangeListener","removeChangeListener","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","Searchicon","xmlns","viewBox","SET_ADDRESS","SET_CHECKED_ADDRESS","SET_FINAL_ADDRESS","SET_MUNICIPALITY","setAddress","address","_objectSpread2","kindOf","thing","kindOfTest","typeOfTest","isArrayBuffer","isFile","isBlob","isFileList","isURLSearchParams","allOwnKeys","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","isFormData","isArrayBufferView","isView","isBoolean","isStream","pipe","merge","assignValue","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","forEachEntry","matchAll","regExp","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","toFiniteNumber","AxiosError","response","utils","description","fileName","lineNumber","columnNumber","axiosError","cause","isVisitable","removeBrackets","renderKey","predicates","formData","envFormData","metaTokens","option","visitor","defaultVisitor","useBlob","Blob","append","convertValue","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializedParams","serializeFn","serialize","hashmarkIndex","InterceptorManager","fulfilled","rejected","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isStandardBrowserEnv","product","protocols","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","write","toGMTString","read","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","urlParsingNode","resolveURL","protocol","host","hostname","port","requestURL","parsed","CanceledError","__CANCEL__","ignoreDuplicateOf","$internals","$defaults","normalizeHeader","header","normalizeValue","matchHeaderValue","findKey","AxiosHeaders","headers","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","asStrings","rawHeaders","parseHeaders","accessor","accessors","defineAccessor","accessorName","arg1","arg2","arg3","buildAccessors","samplesCount","firstSampleTS","bytes","timestamps","chunkLength","startedAt","bytesCount","passed","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","lengthComputable","progressBytes","rate","estimated","xhrAdapter","onCanceled","requestData","requestHeaders","responseType","cancelToken","signal","setContentType","XMLHttpRequest","auth","username","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","validateStatus","settle","responseText","open","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ontimeout","timeoutErrorMessage","transitional","transitionalDefaults","xsrfValue","withCredentials","isURLSameOrigin","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","aborted","parseProtocol","send","adapters","http","httpAdapter","xhr","nameOrAdapter","adapter","DEFAULT_CONTENT_TYPE","getDefaultAdapter","transformRequest","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","helpers","toURLEncodedForm","formSerializer","_FormData","env","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","maxContentLength","maxBodyLength","common","transformData","fns","isCancel","throwIfCancellationRequested","throwIfRequested","dispatchRequest","reason","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","VERSION","validators","deprecatedWarnings","validator","formatMessage","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","configOrUrl","boolean","function","defaultHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","axios","createInstance","defaultConfig","Cancel","all","promises","spread","isAxiosError","formToJSON","SET_SHOW","SET_SHOW_COOKIE","setShow","show","SET_ORDER_PANEL_COUNT","SET_ORDER_ROOF_TYPE","SET_ORDER_ROOF_INFO","SET_CUSTOMER_INFO","SET_PANEL_TYPE","SET_ORDER_INFO","SET_ROOF_INFORMATION","SET_SFNumber","SET_COMMENT","SET_ORDER","SET_ENOVE","SET_PARTNER_ID","setOrderPanelCount","panelCount","setOrderRoofInfo","roofOrderInfo","setPanelType","panelType","setOrderInfo","orderInfo","setRoofInformation","roofInformation","setUserComment","comment","SET_ROOF_TYPES","SET_ROOF_INFO","SET_ROOF_INTEGRATED","getRoofTypes","roofTypes","setRoofInfo","roofInfo","getRoofInfo","checkedAddress","offerUrl","fromEntries","replacedGeometri","geometri","getNoLimits","sessionStorage","getItem","offerObj","helning","retning","lengde","bredde","areal2d","areal3d","eaveheight","typetak","produkttype","partnerId","partnerid","kalkulertrinn","voucherCode","vouchercode","paneler","placeholderText","setPlaceholderText","shows","setShows","searchResult","setSearchResult","finalResult","setFinalResult","finalText","setFinalText","searchText","fetch","Accept","apiResult","searchResultToAdress","suggestions","Options","suggestion","PayLoad","Posisjon","AdresseMatrikkelNummer","matrikkelId","Text","MatrikkelNummer","onBlur","onChange","searchAddress","setItem","searchData","homeImage","Arrowicon","CrossfadeImage","_Component","topSrc","bottomOpacity","bottomSrc","oldSrc","newSrc","containerClass","timingFunction","_state","defaultStyle","BrowserRouter","historyRef","createPath","Link","reloadDocument","preventScrollReset","rest","_temp","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","mailto","text1","showText","text2","text3","texts","setTexts","curImg","setCurImg","slideImages","slide4","caption","slide1","slide2","slide3","slide5","interval","readMore","cloneTexts","txt","propertie","cloud","panel","system","rec1","rec2","rec3","rec4","rec5","rec6","premiumPanel","performancePanel","economyPanel","Phoneicon","Envelopeicon","Globeicon","Buildingicon","contactViewImage","extendContext","extra","freeze","LeafletContext","LeafletProvider","useLeafletContext","useMap","MapContainerComponent","forwardedRef","boundsOptions","setContext","mapRef","LeafletMap","__version","createLeafletContext","MapContainer","createElementObject","createElementHook","updateElement","elementRef","propsRef","createContainerComponent","useElement","ContainerComponent","useLayersControlElement","layersControl","LayersControl","positionRef","createControlledLayer","addLayerToControl","parentContext","setLayer","layerToAdd","layerToRemove","layerContainer","useEventHandlers","eventHandlers","eventHandlersRef","withPane","useLayerLifecycle","createLayerHook","attributionRef","useAttribution","createPathHook","optionsRef","pathOptions","usePathOptions","createTileLayerComponent","LeafComponent","createLeafComponent","updateGridLayer","BaseLayer","Overlay","LeafletTileLayer","createPathComponent","LeafletPolygon","overlayContainer","WMSTileLayer","createLayerComponent","LeafletMarker","getMapCoordinates","getResponse","teig","Geometri","eave","getRoofEave","newGeometri","getNewGeometri","getElevation","masl","eaveMasl","eaveHeight","success","failure","newPunkter","PunktHoyder","newHeight","newArray","coordinate","getAddressFromLatLng","municipality","setlatlng","markerLatlng","setMarkerLatlng","setAddressName","setIsDisabled","setCoordinates","purpleOptions","Address","apitoken","SetViewOnClick","municipalityByLatlng","Houseicon","Lightbulbicon","Buildingorangeicon","road","house_number","county","Leftarrowicon","Closeicon","getRandomValues","crypto","msCrypto","rnds8","rng","byteToHex","bth","rnds","bytesToUuid","fails","require$$0","NATIVE_BIND","functionCall","$propertyIsEnumerable","NASHORN_BUG","objectPropertyIsEnumerable","bitmap","FunctionPrototype","uncurryThisWithBind","functionUncurryThisRaw","uncurryThisRaw","stringSlice","classofRaw","require$$1","functionUncurryThis","classof","require$$2","$Object","indexedObject","isNullOrUndefined","$TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","IS_HTMLDDA","argument","isCallable","aFunction","namespace","isPrototypeOf","Deno","versions","v8","V8_VERSION","symbolConstructorDetection","getBuiltIn","require$$3","$String","tryToString","aCallable","defineGlobalProperty","SHARED","sharedModule","copyright","license","hasOwnProperty_1","uncurryThis","postfix","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","wellKnownSymbol","getMethod","ordinaryToPrimitive","pref","TO_PRIMITIVE","exoticToPrim","toPropertyKey","EXISTS","documentCreateElement","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","definePropertyModule","createNonEnumerableProperty","getDescriptor","PROPER","functionToString","inspectSource","sharedKey","NATIVE_WEAK_MAP","hiddenKeys","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","enforce","getterFor","TYPE","CONFIGURABLE_FUNCTION_NAME","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","mathTrunc","toIntegerOrInfinity","toLength","lengthOfArrayLike","toAbsoluteIndex","integer","createMethod","IS_INCLUDES","$this","internalObjectKeys","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","replacement","isForced","detection","POLYFILL","NATIVE","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","copyConstructorProperties","exceptions","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","isConstructor","SPECIES","$Array","arraySpeciesConstructor","originalArray","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","filterReject","enumBugKeys","objectKeys","objectDefineProperties","Properties","activeXDocument","definePropertiesModule","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","NullProtoObject","ActiveXObject","iframeDocument","iframe","NullProtoObjectViaIFrame","UNSCOPABLES","ArrayPrototype","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","$find","addToUnscopables","FIND","SKIPS_HOLES","HIDE","REBUILD","SHOW","dispatchGlobalEvent","eventName","CustomEvent","createEvent","initEvent","checkStatus","dataEventOff","isCapture","currentItem","hideTooltip","setUntargetItems","getTargetArray","showTooltip","targetArray","customListeners","bodyListener","forId","lastTarget","respectEffect","_options$respectEffec","_options$customEvent","customEvent","tip","parentElement","isCustomEvent","isTargetBelongsToTooltip","getEffect","makeProxy","findCustomEvents","dataAttribute","getBody","place","desiredPlace","effect","getDimensions","tipWidth","tipHeight","targetWidth","targetHeight","getCurrentOffset","mouseX","mouseY","defaultOffset","getDefaultPosition","extraOffsetX","extraOffsetY","windowWidth","innerWidth","windowHeight","innerHeight","getParent","parentTop","parentLeft","getTipOffsetLeft","offsetX","getTipOffsetTop","offsetY","outsideRight","getTipOffsetRight","outsideBottom","getTipOffsetBottom","outside","outsideLeft","outsideTop","placeIsInside","newPlace","chosen","_iterator","choose","isNewState","targetTop","disToMouse","currentParent","computedStyle","getPropertyValue","TipContent","regexp","parseAria","ariaObj","nodeList","defaultColors","dark","background","border","arrow","light","DEFAULT_PADDING","DEFAULT_RADIUS","generateTooltipStyle","uuid","customColors","hasBorder","colors","textColor","borderColor","arrowColor","arrowRadius","tooltipRadius","generateStyle","getDefaultPopupColors","getPopupColors","ReactTooltip","hide","CONSTANT","rebuild","globalRebuild","mount","unbindListener","bindListener","globalShow","hasTarget","globalHide","staticMethods","bindWindowEvents","resizeHide","onWindowResize","unbindWindowEvents","windowListener","ele","customBindListener","_this$state","eventOff","dataEvent","customListener","customUnbindListener","_this$state2","bodyMode","isBodyMode","bindBodyListener","possibleCustomEvents","possibleCustomEventsOff","customEvents","customEventsOff","unbindBodyListener","bodyModeListeners","updateTooltip","targetEventOff","borderClass","customRadius","extraClass","delayHide","delayShow","currentEvent","ariaProps","isEmptyTip","originTooltip","isMultiline","delayShowLoop","delayHideLoop","delayReshow","intervalUpdateContent","methodArray","insecure","disableInternalStyle","injectStyles","clearTimer","removeScrollListener","tooltipRef","domRoot","msMatchesSelector","mozMatchesSelector","escaped","nodeListToArray","shadowRoot","_this$props2","globalEventOff","unbindBasicListener","isCaptureMode","bindRemovalTracker","_this$props3","unbindRemovalTracker","_this$props4","getTipContent","isGlobalCall","_this$props5","switchToSolid","FocusEvent","scrollHide","overridePosition","reshowDelay","delayUpdate","addScrollListener","updatePosition","_this$props6","afterShow","disableProp","getTooltipContent","eventTarget","mouseOnToolTip","delayTime","isInvisible","_this5","isScroll","_this$props7","afterHide","isMyElement","resetState","isVisible","_this6","listenForTooltipExit","removeListenerForTooltipExit","hideTooltipOnScroll","callbackAfter","_this7","_this8","_this$state3","tooltipClass","hasCustomColors","supportedWrappers","wrapperClassName","htmlContent","_this9","class","newAriaProps","_class2","WebKitMutationObserver","MozMutationObserver","mutations","m1","mutation","m2","removedNodes","removalTracker","_class","TooltipComponentBack","TooltipComponentClose","TooltipComponentForward","Roof","Order","newRoofTypes","setNewRoofTypes","roofId","setRoofId","checkeAddress","setCheckeAddress","newLatlng","setNewLatlng","roofName","roofid","chAddress","newTypes","Helning","oneType","sendRoofInfo","orderRoofType","newAdress","newAdress1","newAdress2","newAdress3","finalAddress","roof","imgsrc","Arrowdownicon","getRoofCalculation","finalRoof","kwpCount","kwp","enova","netP","pris","lcoeC","kwtAar","SVGContainerPropKeys","SVGElementPropKeys","EventKeys","filterProps","includeEvents","isSvg","inputProps","_isObject","adaptEventHandlers","newHandler","adaptEventsOfChild","getEventHandlerOfChild","Surface","others","svgView","layerClass","setRafTimeout","currTime","shouldUpdate","_toArray","_arrayWithHoles","_iterableToArray","_nonIterableRest","createAnimateManager","handleChange","shouldStop","_style","_styles","curr","restStyles","_handleChange","PREFIX_LIST","IN_LINE_PREFIX_LIST","IN_COMPATIBLE_PROPERTY","mapObject","translateStyle","isTransition","camelName","styleVal","generatePrefixStyle","getTransitionVal","_slicedToArray","_iterableToArrayLimit","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","ACCURACY","cubicBezierFactor","multyTime","cubicBezier","derivativeCubicBezier","newParams","configBezier","x1","y1","_easing$1$split$0$spl","_easing$1$split$0$spl2","curveX","curveY","derCurveX","rangeValue","bezier","_t","evalT","derVal","isStepper","configSpring","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","alpha","needContinue","calStepperVals","preVals","nextStepVals","_easing2","velocity","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","currStyle","finalStyle","Animate","_PureComponent","handleStyleChange","changeStyle","canBegin","runAnimation","shouldReAnimate","isTriggered","manager","stopJSAnimation","_newState","unSubscribe","onAnimationEnd","onAnimationStart","startAnimation","configUpdate","configEasing","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","newStyle","propsTo","runStepAnimation","onAnimationReStart","stateStyle","cloneContainer","_container$props","_container$props$styl","parseDurationOfSingleTransition","AnimateGroupChild","isAppearing","appearOptions","enterOptions","handleStyleActive","leaveOptions","parseTimeout","AnimateGroup","leave","mathSign","isPercent","_isString","_isNumber","_isNaN","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","getAnyElementOfObject","interpolateNumber","numberA","numberB","findEntryInArray","specifiedKey","specifiedValue","_get","defaultFormatter","_isArray","DefaultTooltipContent","formatter","itemStyle","itemSorter","items","_sortBy","finalItemStyle","paddingTop","paddingBottom","finalFormatter","formatted","contentStyle","labelClassName","labelStyle","labelFormatter","finalLabelStyle","hasLabel","_isNil","finalLabel","wrapperCN","labelCN","renderContent","Global","isSsr","CLS_PREFIX","defaultUniqBy","dataKey","boxWidth","boxHeight","dismissed","dismissedAtCoordinate","wrapperNode","getTranslate","tooltipDimension","viewBoxDimension","allowEscapeViewBox","restricted","unrestricted","updateBBox","preventScroll","box","_classNames","translateX","translateY","isAnimationActive","animationDuration","animationEasing","filterNull","finalPayload","_uniqBy","_isFunction","getUniqPayload","payloadUniqBy","hasPayload","wrapperStyle","outerStyle","pointerEvents","useTranslate3d","cls","role","cursorStyle","cursor","trigger","tau","draw","moveTo","lineTo","tan30","tan30_2","kr","kx","ky","sqrt3","x0","y0","epsilon","tauEpsilon","_x0","_y0","_x1","_y1","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","ccw","cw","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","sizeType","symbolFactory","_upperFirst","getSymbolFactory","shapeSymbol","angle","calculateAreaSize","cx","cy","getPath","registerSymbol","SIZE","DefaultLegendContent","inactiveColor","sixthSize","thirdSize","inactive","legendIcon","iconProps","layout","marginRight","svgStyle","verticalAlign","renderIcon","align","textAlign","renderItems","Legend","chartWidth","hPos","vPos","chartHeight","getBBoxSnapshot","onBBoxUpdate","_box3","otherProps","Basis","BasisClosed","BasisOpen","LinearClosed","Linear","slope3","h0","h1","s0","s1","slope2","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","areaStart","_line","areaEnd","lineStart","lineEnd","_x2","_x3","_x4","_y2","_y3","_y4","_t0","_y","px","py","i0","i1","defined","curve","curveLinear","defined0","pointX","pointY","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","Curve","lineFunction","baseLine","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","shapeLine","pathRef","realPath","Cross","radianToDegree","angleInRadian","polarToCartesian","getAngleOfPoint","anotherPoint","distanceBetweenPoints","reverseFormatAngleOfSetor","startAngle","endAngle","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","innerRadius","outerRadius","inRange","_formatAngleOfSector","_ref3","formatAngleOfSector","formatAngle","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","getDeltaAngle","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","Sector","forceCornerRadius","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","Dot","getRectanglePath","maxRadius","ySign","xSign","clockWise","newRadius","_newRadius","isInRectangle","minX","maxX","minY","maxY","totalLength","getTotalLength","animationBegin","isUpdateAnimationActive","currWidth","currHeight","currY","REACT_BROWSER_EVENT_MAP","getDisplayName","Comp","lastChildren","lastResult","findAllByType","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","isChildrenEqual","nextChildren","prevChildren","isSingleChildEqual","nextChild","renderByOrder","renderMap","elements","results","stringCache","widthCache","cacheCount","SPAN_STYLE","STYLE_LIST","MEASUREMENT_SPAN_ID","getStyleString","autoCompleteStyle","getStringSize","styleString","cacheKey","measurementSpan","measurementSpanStyle","styleKey","BREAKING_SPACES","calculateWordWidths","words","breakAll","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","needCalculate","scaleToFit","wordWidths","initialWordsWithComputedWith","shouldLimitLines","calculate","currentLine","newLine","originalResult","trimmedResult","tempText","doesOverflow","findLongestLine","iterations","middle","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","textAnchor","verticalAnchor","capHeight","textProps","wordsByLines","startDy","reduceCSSCalc","transforms","prevWidth","prevScaleToFit","prevStyle","prevBreakAll","renderRadialLabel","labelProps","attrs","labelAngle","deltaAngle","startPoint","endPoint","dominantBaseline","Label","_props$className","textBreakAll","getLabel","isPolarLabel","isPolar","positionAttrs","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfPolarLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","getAttrsOfCartesianLabel","parseViewBox","labelViewBox","parseLabel","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","CartesianAxis","layerReference","fontSize","letterSpacing","restProps","viewBoxOld","restPropsOld","htmlLayer","tick","tx","ty","tickSize","mirror","tickMargin","finalTickSize","tickCoord","axisLine","needHeight","needWidth","ticks","tickLine","tickFormatter","finalTicks","getTicks","getTickTextAnchor","getTickVerticalAnchor","axisProps","customTickProps","tickLineProps","_this2$getTickLineCoo","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","renderTickItem","ticksGenerator","_this$props8","noTicksProps","renderAxisLine","renderTicks","minTickGap","getNumberIntervalTicks","getTicksStart","getTicksEnd","preserveEnd","sizeKey","unitSize","tailContent","tailSize","tailGap","isShow","gap","initRange","initInterpolator","interpolator","implicit","unknown","copy","band","bandwidth","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","restArgs","newArgs","compose","firstFn","tailsFn","newA","uninterpolateNumber","uninterpolateTruncation","rangeStep","getDigitCount","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","Arithmetic","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","tickCount","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_ref6","_getValidInterval3","_getValidInterval4","_ref7","_ref8","_getValidInterval5","_getValidInterval6","e10","e5","e2","tickIncrement","power","tickStep","step0","step1","lo","mid","ascending","ascendingComparator","numbers","valueof","ascendingBisect","bisector","bisectRight","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","basis","v0","v1","v2","v3","t2","t3","channels","displayable","formatHsl","linear","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","genericArray","reA","reB","am","bm","bs","one","zero","isNumberArray","numberArray","bimap","interpolate","d0","d1","polymap","bisect","transformer","piecewise","interpolateValue","clamper","invert","interpolateRound","continuous","prefixExponent","formatSpecifier","specifier","FormatSpecifier","formatDecimalParts","coefficient","toLocaleString","formatRounded","formatPrefix","prefixes","grouping","thousands","group","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","transformLog","transformExp","transformLogn","transformExpn","reflect","loggish","logs","pows","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","quickselect","newLeft","newRight","swap","quantile","Float64Array","value0","subarray","quantileSorted","value1","invertExtent","quantiles","quantize","formatLocale","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","previous","getMilliseconds","getUTCSeconds","getSeconds","getMinutes","getHours","setHours","setDate","sunday","monday","tuesday","wednesday","thursday","friday","saturday","utcMinute","setUTCSeconds","utcHour","getUTCHours","utcDay","setUTCHours","setUTCDate","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","utcYear","ticker","tickIntervals","tickInterval","utcWeek","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","utcFormat","pads","numberRe","percentRe","requoteRe","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseYear","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","timeDay","timeYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","utcTime","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","stackValue","stackSeries","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","_flatMap","_min","_max","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newParse","utcParse","defaultLocale","getMainColorOfGraphicItem","_item$props","getLegendProps","legendData","formattedGraphicalItems","legendWidth","legendContent","legendItem","sectors","iconType","legendType","_item$props2","getWithHeight","getDomainOfErrorBars","axisType","errorBars","errorBarChild","isErrorBarRelevantForAxis","entryValue","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","getDomainOfItemsWithSameAxis","domains","isCategoricalAxis","getCoordinatesOfGrid","hasMin","hasMax","getTicksOfAxis","axis","isGrid","isAll","duplicateDomain","offsetForBand","realScaleType","niceTicks","scaleContent","isCategorical","categoricalDomain","combineEventHandlers","defaultHandler","parentHandler","childHandler","customizedHandler","arg4","EPS","STACK_OFFSET_MAP","positive","negative","none","stackOffsetNone","silhouette","wiggle","s2","sij0","s3","getStackedData","stackItems","offsetType","dataKeys","orderNone","offsetNone","oz","sz","shapeStack","stackOrderNone","getTicksOfScale","originalDomain","scaleType","tickValues","calculateDomainOfTicks","_domain","getCateCoordinateOfLine","bandSize","allowDuplicatedCategory","matchedTick","getDomainOfStackGroups","stackGroups","stackId","stackedData","getDomainOfSingle","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","cur","parseDomainOfCategoryAxis","calculatedDomain","axisChild","_isEqual","getTooltipItem","graphicalItem","_graphicalItem$props","tooltipType","chartType","isTouch","Brush","leaveTimer","travellerDragStartHandlers","handleDrag","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleTouchMove","handleDragEnd","detachDragEndListener","handleLeaveWrapper","leaveTimeOut","handleEnterSlideOrTraveller","isTextActive","handleLeaveSlideOrTraveller","handleSlideDragStart","slideMoveStartX","attachDragEndListener","handleTravellerDragStart","endX","scaleValues","minIndex","getIndexInRange","maxIndex","travellerWidth","newIndex","movingTravellerId","brushMoveStartX","_this$setState","isFullGap","chartElement","compact","travellerX","traveller","travellerProps","renderTraveller","_this$props9","getTextOfTick","_this$props10","alwaysShowText","_this$state4","isPanoramic","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","lineY","renderDefaultTraveller","updateId","prevData","prevUpdateId","prevTravellerWidth","prevX","scalePoint","_range","createScale","ifOverflowMatches","alwaysShow","ifOverflow","rectWithPoints","ScaleHelper","bandAware","_offset2","createLabeledScales","scales","coord","_mapValues","isInRange","_every","ReferenceDot","clipPathId","isX","isY","xAxis","yAxis","getCoordinate","clipPath","renderDot","isFront","xAxisId","yAxisId","ReferenceLine","fixedX","fixedY","endPoints","isFixedX","isFixedY","isSegment","_props$viewBox","yCoord","xCoord","_orientation","_coord","_points","_points2","_some","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","renderLine","rectWithCoords","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","rangeMin","rangeMax","getRect","renderRect","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","valueKey","finalDomain","key1","key2","value2","eventCenter","setMaxListeners","SYNC_EVENT","ORIENT_MAP","originCoordinate","isFinit","defer","deferClear","clearImmediate","getDisplayedData","graphicalItems","dataStartIndex","dataEndIndex","itemsData","itemData","chartData","activeIndex","activeLabel","tooltipAxis","displayedData","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_ticks$length","unsortedTicks","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","calculateActiveTickIndex","activePayload","activeCoordinate","_angle","getActiveCoordinate","activeTooltipIndex","getAxisMapByAxes","axes","axisIdKey","stackOffset","axisMap","duplicate","hasDuplicate","errorBarsDomain","parseErrorBarsOfAxis","hasStack","axisDomain","getAxisMap","_ref4$axisType","AxisComp","Axis","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","prevLegendBBox","_ref5$xAxisMap","xAxisMap","_ref5$yAxisMap","yAxisMap","offsetH","offsetV","brushBottom","legendBox","legendProps","newOffset","appendOffsetOfLegend","valueAccessor","_last","LabelList","idProps","parseLabelList","ErrorBar","dataPointFormatter","svgProps","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","ckeckPropsLabel","explicitChilren","implicitLabelList","Line","mainCurve","isAnimationFinished","getStrokeDasharray","lineLength","remainLength","restLength","remainLines","emptyLines","handleAnimationEnd","handleAnimationStart","curveDom","errorBarItems","dataPoint","needClip","customDotProps","renderDotItem","dotsProps","curveProps","animationId","animateNewValues","prevPoints","prevPointsDiffFactor","stepData","prevPointIndex","interpolatorX","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","renderCurveWithAnimation","hasSinglePoint","renderCurve","renderErrorBar","renderDots","prevAnimationId","curPoints","linesUnit","dotItem","activeDot","getComposedData","xAxisTicks","yAxisTicks","XAxis","reversed","YAxis","LineChart","chartName","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","formatAxisMap","getFormatItems","currentState","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasBar","hasGraphicalBarItem","sizeList","globalSize","_ref5$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","cateAxisId","barItems","selfSize","cateId","stackList","getBarSizeList","formattedItems","childMaxBarSize","numericAxisId","axisObj","_objectSpread6","cateAxis","cateTicks","itemIndex","getStackedDataOfItem","itemIsBar","barPosition","_getBandSizeOfAxis","barBandSize","_ref6$sizeList","realBarGap","useFull","fullBarSize","newRes","originalSize","getBarPosition","_objectSpread7","composedFn","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","reverseStackOrder","_getAxisNameByLayout2","_items","_item$props3","childGroup","getStackGroupsByAxisId","legendBBox","ticksObj","tooltipAxisBandSize","tooltipTicksGenerator","CategoricalChartWrapper","uniqueChartId","legendInstance","deferId","clearDeferId","handleLegendBBoxUpdate","handleReceiveSyncEvent","cId","chartId","syncId","applySyncEvent","handleBrushChange","_ref9","triggerSyncEvent","handleMouseEnter","mouse","getMouseInfo","_nextState","triggeredAfterMouseMove","handleItemMouseEnter","activeItem","tooltipPayload","tooltipPosition","handleItemMouseLeave","handleMouseMove","handleMouseLeave","cancelThrottledTriggerAfterMouseMove","handleOuterEvent","getReactEventByType","handleClick","_nextState2","handleMouseDown","handleMouseUp","handleTouchStart","handleTouchEnd","verticalCoordinatesGenerator","_ref10","horizontalCoordinatesGenerator","_ref11","axesTicksGenerator","renderCursor","tooltipEventType","getTooltipEventType","cursorComp","getCursorRectangle","_this$getCursorPoints","getCursorPoints","cursorProps","payloadIndex","renderPolarAxis","axisOption","renderXAxis","renderAxis","renderYAxis","renderGrid","_find","renderPolarGrid","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","renderLegend","legend","renderTooltip","tooltipItem","_this$state5","renderBrush","_this$state6","renderReferenceElement","_this$state7","_element$props2","renderActivePoints","_ref12","activePoint","basePoint","isRange","_item$item$props","renderActiveDot","renderGraphicChild","filterFormatItem","_this$state8","_item$item$props2","itemEvents","onCLick","renderCustomized","throttleDelay","_throttle","_isBoolean","eventType","containerOffset","pageYOffset","pageXOffset","getOffset","calculateChartCoordinate","_this$state9","xScale","yScale","xValue","yValue","toolTipData","_this$state10","_this$state11","_cx","_cy","innerPoint","outerPoint","_this$state12","tooltipEvents","_maxListeners","syncMethod","_this$state13","validateChartX","validateChartY","axisOptions","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$xAxisMap$","_this$state$yAxisMap","_this$state$yAxisMap$","chartXY","itemDisplayName","activeBarItem","_activeBarItem","CartesianGrid","Bar","Area","Radar","RadialBar","Scatter","Pie","Funnel","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Customized","renderClipPath","parseEventsOfWrapper","defaultState","prevHeight","prevLayout","prevStackOffset","prevMargin","_defaultState","keepFromPrevState","updatesToState","newUpdateId","generateCategoricalChart","ids","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","halfBand","_parseScale","d3Scales","parseScale","checkDomainOfScale","finalAxis","horizontalPoints","horizontal","renderLineItem","verticalPoints","verticalFill","verticalPointsUpdated","colorIndex","horizontalFill","horizontalPointsUpdated","renderHorizontal","renderVertical","renderHorizontalStripes","renderVerticalStripes","lineItem","antallPaneler","produksjon","getWindow","doc","docElem","client","CustomContext","_ref$classPrefix","classPrefix","addPrefix","mergeClasses","withClassPrefix","rootPrefix","ProgressBar","_extends2","_props$as","_props$classPrefix","_props$end","_props$start","_useClassNames","useClassNames","getGlobal","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","requestAnimationFramePolyfill","timeDelay","DOMMouseMoveTracker","onMove","onMoveEnd","domNode","isDraggingStatus","animationFrameID","eventMoveToken","eventUpToken","moveEvent","isDragging","didMouseMove","captureMouseMoves","releaseMouseMoves","cancelAnimationFramePolyfill","msPattern","hyphenate","_removeStyle","_style$removeProperty","removeProperty","removeStyle","hyphenateStyleName","cssText","visible","_props$arrow","toFnRef","mergeRefs","refA","refB","rangeStyles","Input","readOnly","Handle","onDragStart","onDragMove","onDragEnd","dataRange","dateKey","_useState","setActive","rootRef","handleClasses","mouseMoveTracker","_mouseMoveTracker$cur","setTooltipPosition","tooltipElement","addStyle","handleDragMove","_deltaX","_deltaY","_mouseMoveTracker$cur2","_rootRef$current","_rootRef$current2","getMouseMoveTracker","_mouseMoveTracker$cur3","_rootRef$current3","precisionMath","Mark","renderMark","Graduated","activeIndexs","graduatedItems","_classes","pass","_mark","lastMark","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokenValue","addSuffix","comparison","formatRelativeLocale","yesterday","today","tomorrow","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultWidth","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","localize","ordinalNumber","dirtyNumber","rem100","abbreviated","wide","short","dayPeriod","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","valueCallback","parsePattern","parseResult","buildFormatLongFn","Calendar","formattedMonthPattern","formattedDayPattern","dateLocale","formatDistance","formatLong","full","long","medium","formatRelative","weekStartsOn","firstWeekContainsDate","emptyMessage","Plaintext","unfilled","notSelected","notUploaded","Pagination","skip","DatePicker","DateRangePicker","last7Days","Picker","noResultsText","searchPlaceholder","checkAll","InputPicker","newItem","createOption","Uploader","inited","emptyFile","CloseButton","closeLabel","Breadcrumb","expandText","Toggle","requiredArgs","required","argStr","dirtyDate","addMilliseconds","dirtyAmount","amount","subMilliseconds","MILLISECONDS_IN_DAY","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","formatters","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","lightFormatters","signedWeekYear","startOfYearTimestamp","difference","getUTCDayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","Setter","_utcDate","ValueSetter","_Setter","validateValue","subPriority","DateToSystemTimezoneSetter","_Setter2","timestampIsSet","convertedDate","dateString","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","DayOfYearParser","setUTCDay","dirtyDay","currentDay","dayIndex","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","_createForOfIteratorHelper","notWhitespaceRegExp","mergeObject","overrideLocale","_locale$Calendar2","_locale$Calendar4","_useContext","_useContext$locale","_useContext$rtl","formatDate","parseDate","toasters","componentLocale","defaultFormatDate","formatStr","_locale$Calendar","dirtyFormatStr","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","defaultParseDate","formatString","_locale$Calendar3","dirtyDateString","dirtyFormatString","dirtyReferenceDate","subFnOptions","setters","usedTokens","_loop","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","controlledValue","controlledRef","uncontrolledValue","setUncontrolledValue","useCustom","_props$localeKey","localeKey","_props$placeholder","sliderPropTypes","handleClassName","handleTitle","barClassName","handleStyle","plaintext","graduated","onChangeCommitted","getAriaValueText","ariaLabel","ariaLabelledby","ariaValuetext","Componnet","_props$min","_props$tooltip","_props$step","_props$defaultValue","valueProp","_props$max","maxProp","barRef","getValidValue","checkValue","_useControlled","useControlled","getBarHeight","getBarWidth","getValueByOffset","barHeight","barWidth","getValueByPosition","barOffset","offsetValue","handleChangeValue","handleChangeCommitted","handleKeyDown","increaseKey","decreaseKey","maxValue","setMaxValue","increment","setIncrement","antallPanelers","differences","commonDiff","found","lcoe","setLcoe","Intl","NumberFormat","anProd","MotionConfigContext","transformPagePoint","isStatic","reducedMotion","MotionContext","LazyContext","useVisualElement","visualState","createVisualElement","visualElement","lazyContext","presenceContext","reducedMotionConfig","visualElementRef","presenceId","blockInitialAnimation","syncRender","animationState","animateChanges","notifyUnmount","isRefObject","isVariantLabel","isAnimationControls","variantProps","isControllingVariants","isVariantNode","variants","useCreateMotionContext","inherit","getCurrentTreeVariants","variantLabelsAsDependency","createDefinition","propNames","isEnabled","featureDefinitions","measureLayout","hover","tap","inView","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","VisualElementHandler","setProps","React__default","SwitchLayoutGroupContext","motionComponentSymbol","createMotionComponent","preloadedFeatures","projectionNodeConstructor","useRender","useVisualState","loadFeatures","ForwardRefComponent","externalRef","configAndProps","layoutId","useLayoutId","projectionId","lazyStrictMode","initialLayoutGroupConfig","useMotionRef","layoutGroupId","createMotionProxy","createConfig","customMotionComponentConfig","componentCache","_target","lowercaseSVGElements","isSVGComponent","scaleCorrectors","transformPropOrder","transformProps","isForcedMotionValue","isMotionValue","getVelocity","translateAlias","transformPerspective","sortTransformProps","isCSSVariable","getValueAsType","sanitize","floatRegex","colorRegex","singleColorRegex","createUnitType","degrees","vw","progressPercentage","int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","paddingRight","paddingLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","translateZ","perspective","originX","originY","originZ","numOctaves","buildHTMLStyles","latestValues","transformTemplate","vars","transformKeys","transformOrigin","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","transformIsDefault","enableHardwareAcceleration","allowTransformNone","transformString","buildTransform","createHtmlRenderState","copyRawValuesOnly","useStyle","useInitialMotionValues","transformValues","useHTMLProps","htmlProps","dragListener","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","validMotionProps","isValidMotionProp","isValidProp","shouldForward","isDom","forwardMotionProps","filteredProps","calcOrigin","dashKeys","camelKeys","buildSVGAttrs","attrX","attrY","pathLength","pathSpacing","pathOffset","dimensions","pxOriginX","pxOriginY","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","createSvgRenderState","useSVGProps","visualProps","rawStyles","createUseRender","elementProps","camelToDash","renderHTML","styleProp","getProjectionStyles","camelCaseAttributes","renderSVG","renderState","_styleProp","scrapeMotionValuesFromProps","newValues","scrapeMotionValuesFromProps$1","resolveVariantFromProps","currentValues","currentVelocity","isKeyframesTarget","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","mix","toValue","isCustomValue","makeUseVisualState","make","createRenderState","onMount","makeLatestValues","makeState","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","resolved","transitionEnd","valueTarget","AnimationType","svgMotionConfig","htmlMotionConfig","addDomEvent","useDomEvent","isMouseEvent","isTouchEvent","filterPrimaryPointer","eventHandler","defaultPagePoint","pointFromTouch","pointType","primaryTouch","pointFromMouse","extractEventInfo","wrapHandler","shouldFilterPrimaryPointer","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","createLock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","createHoverEvent","Hover","isNodeOrChild","combineFunctions","transformers","observerCallbacks","fireObserverCallback","fireAllObserverCallbacks","observeIntersection","rootInteresectionObserver","lookupRoot","rootObservers","IntersectionObserver","initIntersectionObserver","thresholdNames","useIntersectionObserver","shouldObserve","rootMargin","isIntersecting","isInView","hasEnteredView","InView","getProps","onViewportEnter","onViewportLeave","useMissingIntersectionObserver","makeRenderlessComponent","hook","gestureAnimations","whileInView","viewport","onTap","onTapStart","onTapCancel","whileTap","hasPressListeners","isPressing","cancelPointerEndListeners","eventOptions","onPointerDown","removePointerEndListener","checkPointerEnd","Tap","onPointerUp","onPointerCancel","whileFocus","Focus","onHoverStart","onHoverEnd","whileHover","usePresence","shallowCompare","prevLength","__rest","safeMin","findSpring","envelope","derivative","bounce","mass","dampingRatio","undampedFreq","exponentialDecay","calcAngularFreq","initialGuess","approximateRoot","stiffness","durationKeys","physicsKeys","isSpringType","spring","restSpeed","restDelta","springOptions","isResolvedFromDuration","derived","getSpringOptions","resolveSpring","resolveVelocity","createSpring","initialVelocity","initialDelta","undampedAngularFreq","angularFreq","dampedAngularFreq","freqForT","isBelowVelocityThreshold","isBelowDisplacementThreshold","flipTarget","needsInterpolation","toFromDifference","isColorString","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","alpha$1","hue","saturation","lightness","hueToRgb","hslaToRgba","mixLinearColor","fromExpo","toExpo","colorTypes","getColorType","notAnimatable","mixColor","fromColorType","toColorType","fromColor","toColor","blended","colorToken","numberToken","analyse","numColors","tokenised","createTransformer","numValues","convertNumbersToZero","complex","getAnimatableNone","isNum","getMixer","mixComplex","mixArray","blendValue","fromThis","mixObject","numNumbers","numRGB","numHSL","originStats","targetStats","mixNumber","createMixers","customMixer","mixers","mixerFactory","detectMixerFactory","numMixers","mixer","easingFunction","fastInterpolate","slowInterpolate","inputLength","lastInputIndex","mixerIndex","foundMixerIndex","progressInRange","isClamp","reverseEasing","mirrorEasing","createBackIn","easeIn","easeInOut","circIn","circOut","circInOut","backIn","backOut","backInOut","anticipate","backEasing","createAnticipate","bounceOut","bounceIn","defaultEasing","keyframes","convertOffsetToTimes","createInterpolator","decay","timeConstant","modifyTarget","amplitude","ideal","loopElapsed","framesync","passTimestamp","driverControls","latest","interpolateFromNumber","driver","repeatMax","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate","repeatCount","computedDuration","isComplete","isForwardPlayback","animator","detectAnimationFromOptions","reverseElapsed","hasRepeatDelayElapsed","velocityPerSecond","frameDuration","secondsToMilliseconds","calcBezier","getSlope","kSampleStepSize","mX1","mY1","mX2","mY2","sampleValues","Float32Array","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","easingLookup","bounceInOut","easingDefinitionToFunction","isAnimatable","underDampedSpring","criticallyDampedSpring","linearTween","defaultTransitions","maxDefaults","applyDefaultFilter","functionRegex","functions","defaultValueTypes","outlineColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","defaultValueType","instantAnimationState","convertTransitionToAnimationOptions","yoyo","isEasingArray","getDelayFromTransition","getValueTransition","getPopmotionAnimationOptions","hydrateKeyframes","when","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","getAnimation","valueTransition","isTargetAnimatable","getZeroUnit","isOriginAnimatable","currentAnimation","bounceStiffness","bounceDamping","isOutOfBounds","boundaryNearest","startSpring","boundary","heading","finalTarget","potentialUnitType","delayTimer","controls","isNumericalString","isZeroValueString","addUniqueItem","removeItem","SubscriptionManager","subscriptions","numSubscriptions","MotionValue","timeDelta","lastUpdated","updateSubscribers","velocityUpdateSubscribers","renderSubscribers","canTrackVelocity","updateAndNotify","scheduleVelocityCheck","velocityCheck","hasAnimated","isFloat","passiveEffect","stopAnimation","clearAnimation","motionValue","testValueType","dimensionValueTypes","findDimensionValueType","valueTypes","findValueType","resolveVariant","forEachValue","getCurrent","setMotionValue","addValue","setTarget","makeTargetAnimatable","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","readValue","setBaseTarget","getOriginFromTransition","getOrigin","transitionOrigin","isWillChangeMotionValue","animateVariant","variant","getDefaultTransition","transitionOverride","animateTarget","getChildAnimations","variantChildren","forwardDelay","animateChildren","willChange","animations","animationTypeState","shouldBlockAnimation","shouldReduceMotion","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","notifyAnimationComplete","sortNodePosition","protectedKeys","needsAnimating","shouldBlock","variantPriorityOrder","Exit","reversePriorityOrder","numAnimationTypes","animateList","notifyAnimationStart","resolvedDefinition","animateVisualElement","createAnimationState","createTypeState","createState","buildResolvedTypeValues","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","checkVariantsDidChange","shouldAnimateType","definitionList","resolvedValues","prevResolvedValues","allKeys","markToAnimate","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setAnimateFunction","makeAnimator","safeToRemove","isPoint","isPoint3D","distance1D","xDelta","yDelta","zDelta","PanSession","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","isPanStarted","isDistancePastThreshold","onStart","handlePointerMove","transformPoint","handlePointerUp","onEnd","onSessionEnd","panInfo","initialInfo","onSessionStart","removeListeners","subtractPoint","lastDevicePoint","startDevicePoint","timestampedPoint","lastPoint","calcLength","isNear","maxDistance","calcAxisDelta","originPoint","calcBoxDelta","calcRelativeAxis","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","defaultElastic","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","hasTranslate","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","translateAxis","transformAxis","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","measureViewportBox","bottomRight","transformBoxPoints","elementDragControls","VisualElementDragControls","openGlobalLock","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","dragPropagation","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","updateAxis","panSession","getTransformPagePoint","shouldDrag","axisValue","applyConstraints","dragConstraints","prevConstraints","resolveRefConstraints","layoutBox","calcRelativeConstraints","resolveDragElastic","relativeConstraints","rebaseAxisConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","rootProjectionNode","viewportBox","scroll","measurePageBox","measuredConstraints","calcViewportConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","momentumAnimations","startAxisValueAnimation","dragKey","externalMotionValue","boxProgress","sourceLength","updateScroll","updateLayout","stopPointerListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","scalePositionWithinConstraints","stopLayoutUpdateListener","hasLayoutChanged","lockThreshold","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","updateHandlers","groupDragControls","dragControls","addListeners","prefersReducedMotion","hasReducedMotionListener","initPrefersReducedMotion","motionMediaQuery","setReducedMotionPreferences","createLifecycles","managers","propSubscriptions","lifecycles","clearAllListeners","updatePropListeners","propListener","updateMotionValuesFromProps","existingValue","latestValue","getStaticValue","removeValue","featureNames","numFeatures","treeType","renderInstance","readValueFromInstance","removeValueFromRenderState","removeFromVariantTree","valueSubscriptions","prevMotionValues","baseTarget","initialValues","triggerBuild","notifyUpdate","bindToMotionValue","removeOnChange","removeOnRenderRequest","onRenderRequest","scheduleRender","initialMotionValues","newInstance","addVariantChild","renderedProps","ProjectionNodeConstructor","getLatestValues","layoutScroll","alwaysMeasureLayout","animationType","initialPromotionConfig","closestVariantNode","getClosestVariantNode","getLayoutId","setStaticValue","setVisibility","canMutate","valueFromInitial","getVariant","startAtParent","numVariantProps","cssVariableRegex","parseCSSVariable","getVariableValue","BoundingBoxDimension","positionalKeys","isPositionalKey","setAndResetVelocity","isNumOrPxType","getPosFromMatrix","matrix","getTranslateFromMatrix","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","removeNonTranslationalTransform","removedTransforms","positionalValues","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","targetBbox","unitConversion","hasPositionalKey","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","scrollY","convertedTarget","checkAndConvertChangedValueTypes","parseDomVariant","resolveCSSVariables","htmlConfig","domElement","defaultType","resetTransform","restoreTransform","mutableState","htmlVisualElement","svgVisualElement","createDomVisualElement","pixelsToPercent","pixels","correctBorderRadius","correct","varToken","correctBoxShadow","treeScale","projectionDelta","original","containsCSSVariables","cssVariables","averageScale","cssVariable","MeasureLayoutWithContext","correctors","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","didUpdate","layoutDependency","willUpdate","promote","relegate","getStack","members","isLead","promoteContext","scheduleCheckAfterUnmount","deregister","applyTo","boxShadow","layoutFeatures","isAnimating","borders","numBorders","asNumber","isPx","mixValues","follow","lead","shouldCrossfadeOpacity","isOnlyMember","easeCrossfadeIn","opacityExit","easeCrossfadeOut","borderLabel","followRadius","leadRadius","radiusName","compress","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEquals","NodeStack","prevLead","indexOfNode","member","preserveFollowOpacity","resumeFrom","preserveOpacity","animationValues","isShared","isUpdating","isLayoutDirty","crossfade","resumingFrom","buildProjectionTransform","latestTransform","xTranslate","yTranslate","elementScaleX","elementScaleY","compareByDepth","FlatTree","isDirty","transformAxes","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","isTreeAnimating","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","potentialNodes","checkUpdateFailed","clearAllSnapshots","updateProjection","resolveTargetDelta","calcProjection","hasProjected","animationProgress","sharedNodes","registerPotentialNode","subscriptionManager","unblockTimeout","resizeUnblockUpdate","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","setAnimationOrigin","animationOptions","preRender","isUpdateBlocked","resetRotation","shouldNotifyListeners","startUpdate","prevTransformTemplateValue","updateSnapshot","notifyListeners","unblockUpdate","clearMeasurements","mountNodeEarly","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","measured","measure","removeTransform","removeElementScroll","roundBox","layoutCorrected","notifyLayoutMeasure","isScrollRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","boxWithoutScroll","rootScroll","transformOnly","withTransforms","boxWithoutTransform","targetDelta","scheduleUpdateProjection","relativeParent","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","calcRelativeBox","applyTransform","attemptToResolveRelativeTarget","pendingAnimation","getLead","isSharedTransition","treeLength","applyTreeDeltas","projectionDeltaWithTransform","prevTreeScaleX","prevTreeScaleY","prevProjectionTransform","projectionTransform","notifyAll","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","setTargetDelta","mixBox","completeAnimation","exitAnimationComplete","shouldAnimatePositionOnly","xLength","yLength","shouldPreserveFollowOpacity","hasRotate","resetValues","emptyStyles","valuesToRender","applyTransformsToTarget","corrected","hasListeners","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","notifyBeforeLayoutMeasure","removeLeadSnapshot","mixAxis","searchNode","roundAxis","isCloseTo","DocumentProjectionNode","HTMLProjectionNode","documentNode","featureBundle","motion","createDomMotionConfig","use","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","reactPropsRegex","strings","interpolations","EMPTY_ARRAY","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","throwStyledComponentsError","DefaultGroupedTag","groupSizes","Uint32Array","indexOfGroup","insertRules","oldBuffer","throwStyledError","ruleIndex","clearGroup","deleteRule","getGroup","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","registerName","rehydrateSheetFromTag","getNonce","__webpack_nonce__","makeStyleTag","hasAttribute","findLastStyleTag","__VERSION__","nonce","CSSOMTag","styleSheets","ownerNode","getSheet","_error","cssRules","TextTag","refNode","VirtualTag","SHOULD_REHYDRATE","isServer","useCSSOMInjection","StyleSheet","globalStyles","gs","server","rehydrateSheet","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clearRules","clearTag","outputSheet","AD_REPLACER_R","getAlphabeticChar","generateAlphabeticName","phash","isStaticRules","SEED","ComponentStyle","componentId","baseStyle","staticRulesId","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","styleSheet","stylis","cssStatic","flatten","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","plugins","Stylis","parsingRules","parseRulesPlugin","toSheet","block","selectors","parents","column","at","insertRulePlugin","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","lastIndexOf","parsedRules","plugin","StyleSheetContext","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","stylisInstance","resolvedName","getName","uppercaseCheck","uppercasePattern","prefixAndLowerCase","isFalsish","chunk","ruleSet","objToCssArray","isCss","unitless","addTag","interleave","originalConsoleError","providedTheme","theme","escapeRegex","dashesAtEnds","isTag","isValidKey","mixin","mixinDeep","ThemeContext","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","parentComponentId","generateComponentId","generateId","generateDisplayName","finalAttrs","shouldForwardProp","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardedComponent","componentAttrs","foldedComponentIds","resolvedAttrs","attrDef","resolvedAttrDef","useResolvedAttrs","determineTheme","generatedClassName","warnTooManyClasses","useInjectedStyle","refToForward","$as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","hoist","styled","constructWithOptions","componentConstructor","templateFunction","withConfig","StyledComponent","GlobalStyle","createStyles","removeStyles","renderStyles","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","raw","Loader","Discounticon","strokeLinecap","strokeLinejoin","gradientUnits","stopColor","showDropdown","setShowDropdown","showMore","setShowMore","setType","enovaSupport","setEnoveSupport","netPrice","setNetPrice","setFinalRoof","setComment","showType405","setShowType405","showType435","setShowType435","showType510","setShowType510","discount","setDiscount","setIsTyping","panelDiscount","setPanelDiscount","financingRequired","setFinancingRequired","showPopup","setShowPopup","tempFinalRoof","setEnova","changePaenlType","forutsetninger","takType","handleAskApply","validVoucher","handleAskQuote","overflowY","Solkarthvit","cols","rel","isObjectType","isDateObject","isCheckBoxInput","getNodeParentName","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","formState","localProxyFormState","isRoot","defaultValues","_defaultValues","_proxyFormState","formStateData","isEmptyObject","useSubscribe","subject","_names","formValues","isGlobal","fieldName","watchAll","validateAllFieldCriteria","tempPath","newValue","focusFieldBy","fields","fieldsNames","currentField","isBlurEvent","watchName","fieldArrayErrors","defaultResult","validResult","defaultReturn","getValidateError","isMessage","validationData","isRegex","inputValue","shouldUseNativeValidation","isFieldArray","maxLength","minLength","valueAsNumber","inputRef","setCustomValidity","reportValidity","isRadio","isRadioInput","isCheckBox","isRadioOrCheckbox","isFileInput","appendErrorsCurry","appendErrors","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","getCheckboxValue","getRadioValue","getValueAndMessage","maxOutput","minOutput","valueDate","valueAsDate","exceedMin","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","HTMLElement","cloneObject","isWeb","FileList","tempObject","prototypeCopy","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isEmptyArray","unset","previousObjRef","updatePath","childObject","objectRef","currentPaths","currentPathsLength","createSubject","_observers","object1","object2","isPrimitive","keys1","keys2","val1","val2","owner","isHTMLElement","isConnected","markFieldsDirty","isParentNodeArray","objectHasFunction","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","setValueAs","getFieldValue","files","isMultipleSelect","selectedOptions","getFieldValueAs","_fields","criteriaMode","schemaErrorLookup","foundError","isTouched","isSubmitted","reValidateMode","shouldFocusError","createFormControl","delayErrorCallback","_formState","submitCount","isValidating","isSubmitting","isSubmitSuccessful","touchedFields","dirtyFields","_formValues","shouldUnregister","_stateFlags","unMount","validateFields","_subjects","validationModeBeforeSubmit","getValidationModes","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","_updateValid","shouldSkipRender","_executeSchema","executeBuiltInValidation","_updateFieldArray","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","argA","argB","unsetEmptyArray","getDirtyFields","_getDirty","updateErrors","updateValidAndValue","shouldSkipSetValueAs","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","isFieldDirty","isPreviousFieldTouched","isPreviousFormDirty","isPreviousFieldDirty","shouldRenderByError","fieldState","previousFieldError","shouldUpdateValid","delayError","updatedFormState","getResolverOptions","executeSchemaAndUpdateState","shouldOnlyCheckValid","valid","isFieldArrayRoot","validateField","fieldError","updateFieldArrayRootError","_removeUnmounted","live","getValues","_getWatch","generateWatchOutput","_getFieldArray","fieldReference","optionRef","checkboxRef","radioRef","shouldTouch","shouldValidate","setValues","fieldKey","cloneValue","isWatched","getEventValue","shouldSkipValidation","hasValidation","skipValidation","watched","previousErrorLookupResult","errorLookupResult","fieldNames","convertToArrayPayload","shouldFocus","getFieldState","clearErrors","inputName","setError","keepValue","keepError","keepDirty","keepTouched","keepDefaultValue","keepIsValid","disabledIsDefined","getRuleValue","fieldRef","radioOrCheckbox","isNameInFieldArray","handleSubmit","onValid","onInvalid","hasNoPromiseError","resetField","keepStateOptions","updatedValues","cloneUpdatedValues","keepDefaultValues","keepValues","keepDirtyValues","keepSubmitCount","keepIsSubmitted","keepErrors","setFocus","shouldSelect","select","Usericon","Addresscardicon","Housegreyicon","Buildinggreyicon","Cityicon","Envelopeiconmin","Phoneiconmin","municipalityAddress","setMunicipality","_formControl","updateFormState","shouldRenderFormState","getProxyFormState","useForm","addressName","municipal","onSubmit","customerData","orderData","newOrderInfo","kwh","kWh","customerInfo","customer","firstName","lastName","surname","companyName","phone","plantId","panelTypeId","roofTypeId","roofSlope","snowLoad","anleggsInformasjon","snolast","windLoad","vindlast","installationSize","kWhYear","budgetedTime","dagergjeldene","timergjeldene","city","by","postalCode","baseId","ruteplanlegger","travelDistance","distansemeter","travelTime","distansetid","price","materialPrice","materiell","installationPrice","montasje","electricianPrice","elektriker","enovaSubsidy","partnerPrice","partnerPris","htmlFor","til","adresse","postNummer","postSted","CompleteOrderPic","Show","useParams","isLoaded","setIsLoaded","OrderId","HouseImage","defaultStyles","WebkitOverflowScrolling","Sidebar","sidebarWidth","defaultSidebarWidth","touchIdentifier","touchStartX","touchCurrentX","dragSupported","overlayClicked","onScroll","saveSidebarRef","isIos","saveSidebarWidth","isTouching","identifier","ind","touchWidth","touchSidebarWidth","dragToggleDistance","onSetOpen","inCancelDistanceOnScroll","pullRight","sidebar","dragHandle","sidebarStyle","overlayStyle","useTouch","rootProps","rootClassName","rootId","hasBoxShadow","docked","percentage","dragHandleStyle","touchHandleWidth","sidebarClassName","sidebarId","overlayClassName","overlayId","contentClassName","contentId","sidebarOpen","setSidebarOpen","splitLocation","onSetSidebarOpen","changeShow","logoImage","clipRule","FooterLogoicon","xmlnsXlink","rx","patternContentUnits","Style","popupContent","modal","popupArrow","POSITION_TYPES","getCoordinatesForPosition","triggerBounding","ContentBounding","CenterTop","CenterLeft","arrowTop","arrowLeft","calculatePosition","keepTooltipInside","bestCoords","wrapperBox","boundingBox","getTooltipBoundary","contentBox","popupIdCounter","_ref$trigger","onOpen","_ref$onOpen","onClose","_ref$onClose","defaultOpen","_ref$defaultOpen","_ref$disabled","nested","_ref$nested","closeOnDocumentClick","_ref$closeOnDocumentC","repositionOnResize","_ref$repositionOnResi","closeOnEscape","_ref$closeOnEscape","_ref$on","_ref$contentStyle","arrowStyle","_ref$arrowStyle","_ref$overlayStyle","_ref$className","_ref$position","_ref$modal","lockScroll","_ref$lockScroll","_ref$arrow","_ref$offsetX","_ref$offsetY","mouseEnterDelay","_ref$mouseEnterDelay","mouseLeaveDelay","_ref$mouseLeaveDelay","_ref$keepTooltipInsid","setIsOpen","triggerRef","contentRef","arrowRef","focusedElBeforeOpen","popupId","isModal","timeOut","focusContentOnOpen","lockScrolll","resetScroll","onContextMenu","focusableEls","_contentRef$current","firstEl","cords","scrollX","els","firstFocusableEl","lastFocusableEl","useTabbing","useRepositionOnResize","useOnClickOutside","popupContentStyle","childrenElementProps","addWarperAction","ovStyle","triggerProps","onAsArray","onFocus","comp","renderTrigger","ReactDOM","PopupRoot","getRootPopup","randomUUID","unsafeStringify","native","setNewCookie","ModalPic1","ModalPic2","ModalPic3","ModalPic4","uuidv4","setAcceptCookies","setSkipCookies","newCookie","access_token_skip","OrangeCloseicon","access_token_reject","setCookies","access_token_accept","newAcceptCookie","setNewAcceptCookie","newRejectCookie","setNewRejectCookie","currentPartner","setCurrentPartner","partnerName","getPartnerId","setPartnerId","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","funcs","createThunkMiddleware","extraArgument","thunk","withExtraArgument","AddressState","roofIntegrated","RoofState","showCookie","ShowState","SFNumber","OrderState","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","AddressReducer","RoofReducer","ShowReducer","OrderReducer","middlewares","_dispatch","middlewareAPI","middleware","applyMiddleware"],"sourceRoot":""}