{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/array.js","../node_modules/@fullcalendar/common/vdom.js","api/EventSourceApi.ts","util/dom-manip.ts","util/dom-event.ts","util/misc.ts","datelib/marker.ts","structs/event-instance.ts","util/object.ts","structs/recurring-event.ts","datelib/duration.ts","datelib/formatting-utils.ts","util/array.ts","util/memoize.ts","datelib/formatting-native.ts","datelib/zoned-marker.ts","datelib/DateFormatter.ts","datelib/formatting-cmd.ts","datelib/formatting-func.ts","datelib/formatting.ts","options.ts","structs/event-store.ts","util/html.ts","component/event-ui.ts","structs/constraint.ts","structs/event-parse.ts","util/date.ts","datelib/date-range.ts","component/event-rendering.ts","structs/date-span.ts","calendar-utils.ts","structs/event-mutation.ts","ViewApi.ts","structs/event-source-parse.ts","reducers/current-date.ts","CalendarApi.tsx","api/EventApi.ts","datelib/calendar-system.ts","datelib/parsing.ts","datelib/env.ts","global-locales.ts","datelib/locale.ts","structs/business-hours.ts","util/table-styling.tsx","util/geom.ts","component/event-splitting.ts","component/date-rendering.tsx","common/nav-link.ts","util/scrollbar-side.ts","util/scrollbar-width.ts","util/dom-geom.ts","util/promise.ts","common/Emitter.ts","common/PositionCache.ts","common/scroll-controller.ts","theme/Theme.ts","ScrollResponder.ts","ViewContext.ts","vdom-util.tsx","component/DateComponent.ts","plugin-system.ts","theme/StandardTheme.ts","structs/view-def.ts","common/render-hook.tsx","common/ViewRoot.tsx","structs/view-config.tsx","structs/view-spec.ts","DateProfileGenerator.ts","reducers/eventSources.ts","reducers/eventStore.ts","reducers/date-selection.ts","reducers/selected-event.ts","reducers/event-drag.ts","reducers/event-resize.ts","toolbar-parse.ts","util/requestJson.ts","option-change-handlers.ts","global-plugins.ts","event-sources/array-event-source.ts","event-sources/func-event-source.ts","event-sources/json-feed-event-source.ts","event-sources/json-feed-event-source-refiners.ts","structs/recurring-event-simple.ts","structs/recurring-event-simple-refiners.ts","dates-set.ts","event-crud.ts","util/DelayedRunner.ts","util/TaskRunner.ts","reducers/title-formatting.ts","reducers/CalendarDataManager.ts","reducers/options.ts","reducers/view-type.ts","reducers/date-profile.ts","component/CalendarDataProvider.ts","seg-hierarchy.ts","interactions/interaction.ts","interactions/ElementDragging.ts","global-config.ts","structs/drag-meta.ts","ToolbarSection.tsx","Toolbar.tsx","ViewContainer.tsx","interactions/EventClicking.ts","interactions/EventHovering.ts","CalendarContent.tsx","CalendarRoot.tsx","common/table-utils.ts","common/table-cell-util.tsx","common/TableDateCell.tsx","common/TableDowCell.tsx","NowTimer.ts","common/DayHeader.tsx","common/DaySeriesModel.ts","common/DayTableModel.ts","common/slicing-utils.ts","validation.ts","scrollgrid/Scroller.tsx","util/RefMap.ts","scrollgrid/util.tsx","scrollgrid/SimpleScrollGrid.tsx","common/EventRoot.tsx","common/StandardEvent.tsx","common/NowIndicatorRoot.tsx","common/DayCellContent.tsx","common/DayCellRoot.tsx","common/bg-fill.tsx","common/WeekNumberRoot.tsx","common/Popover.tsx","common/MorePopover.tsx","common/MoreLinkRoot.tsx","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.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/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/tslib/tslib.es6.js","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../../src/utils.ts","../../src/FormikContext.tsx","../../src/Formik.tsx","../../src/Field.tsx","../../src/Form.tsx","../../src/connect.tsx","../../src/FieldArray.tsx","../../src/ErrorMessage.tsx","../../src/FastField.tsx","../node_modules/prop-types/index.js","../node_modules/@nivo/arcs/node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","../node_modules/@nivo/pie/node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","../node_modules/@react-spring/shared/node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","../node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","../node_modules/react-datepicker/dist/react-datepicker.min.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/immer.ts","../../src/utils/env.ts","../../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../src/utils/weak-maps.ts","../../src/create-editor.ts","../../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/utils/string.ts","../../src/interfaces/element.ts","../../src/interfaces/editor.ts","../../src/interfaces/location.ts","../../src/interfaces/node.ts","../../src/interfaces/operation.ts","../../src/interfaces/path.ts","../../src/interfaces/path-ref.ts","../../src/interfaces/point.ts","../../src/interfaces/point-ref.ts","../../src/interfaces/range.ts","../../src/interfaces/range-ref.ts","../../src/interfaces/scrubber.ts","../../src/utils/deep-equal.ts","../../src/interfaces/text.ts","../../src/transforms/general.ts","../../src/transforms/node.ts","../../src/transforms/selection.ts","../../src/transforms/text.ts","../../src/transforms/index.ts","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../src/theming/propTypes.js","../../src/theming/defaultTheme.js","../../src/theming/extend.js","../../src/motion/context.js","../../src/motion/hooks.js","../../src/hooks/useAnimatedPath.js","../../src/lib/colors/quantize.js","../../src/props/curve.js","../../src/lib/colors/index.js","../../src/props/colors.js","../../src/props/stack.js","../../src/props/defs.js","../../src/props/treeMap.js","../../src/defaults/index.js","../../src/props/index.js","../../src/hooks/useDimensions.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../../src/hooks/useMeasure.js","../../src/hooks/useValueFormatter.js","../../src/theming/context.js","../../src/hooks/usePartialTheme.js","../../src/components/ConditionalWrapper.js","../../src/components/Container.js","../../src/components/ResponsiveWrapper.js","../../src/components/defs/gradients/index.js","../../src/components/defs/gradients/LinearGradient.js","../../src/components/defs/patterns/PatternDots.js","../../src/lib/polar/utils.js","../../src/lib/bridge.js","../../src/components/defs/patterns/PatternLines.js","../../src/components/defs/patterns/PatternSquares.js","../../src/components/defs/patterns/index.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/components/defs/Defs.js","../../src/components/SvgWrapper.js","../../src/components/dots/DotsItemSymbol.js","../../src/components/cartesian/markers/CartesianMarkersItem.js","../../src/components/dots/DotsItem.js","../../src/components/cartesian/markers/CartesianMarkers.js","../../src/lib/propertiesConverters.js","../../src/lib/interactivity/detect.js","../../src/lib/interactivity/index.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../src/lib/defs.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/popper-lite.js","../../../js/src/dom/selector-engine.js","../../../js/src/util/index.js","../../../js/src/dom/data.js","../../../js/src/dom/event-handler.js","../../../js/src/base-component.js","../../../js/src/alert.js","../../../js/src/button.js","../../../js/src/dom/manipulator.js","../../../js/src/carousel.js","../../../js/src/collapse.js","../../../js/src/dropdown.js","../../../js/src/util/scrollbar.js","../../../js/src/util/backdrop.js","../../../js/src/modal.js","../../../js/src/offcanvas.js","../../../js/src/util/sanitizer.js","../../../js/src/tooltip.js","../../../js/src/popover.js","../../../js/src/scrollspy.js","../../../js/src/tab.js","../../../js/src/toast.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/d3-shape/src/math.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/lodash/last.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/d3-time/src/duration.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@react-spring/web/dist/react-spring-web.esm.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../src/FileSaver.js","../node_modules/d3-time/src/interval.js","EventDragging.ts","View.ts","ResourceEventConfigAdder.ts","structs/resource-source-def.ts","structs/resource-source-parse.ts","reducers/resourceSource.ts","structs/resource.ts","reducers/resourceStore.ts","api/ResourceApi.ts","api/CalendarApi-extend.ts","common/ResourceSplitter.ts","api/EventApi-extend.ts","resources-crud.ts","common/ResourceLabelRoot.tsx","resource-sources/resource-array.ts","resource-sources/resource-func.ts","resource-sources/resource-json-feed.ts","common/ResourceCell.tsx","common/ResourceDayHeader.tsx","common/ResourceIndex.ts","common/AbstractResourceDayTableModel.tsx","common/ResourceDayTableModel.ts","common/DayResourceTableModel.ts","common/VResourceJoiner.ts","common/VResourceSplitter.ts","common/resource-hierarchy.ts","main.ts","reducers/resources.ts","reducers/resourceEntityExpansions.ts","DateSelecting.ts","ExternalElementDragging.ts","../node_modules/d3-scale/src/init.js","../node_modules/d3-shape/src/constant.js","../node_modules/@fullcalendar/core/locales-all.js","../../src/vdom.ts","../../src/main.tsx","../node_modules/moment/moment.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/lodash/get.js","../node_modules/react-dom/index.js","../node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","../node_modules/@nivo/arcs/node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","../node_modules/@nivo/pie/node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","../node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/lodash-es/_root.js","dnd/PointerDragging.ts","dnd/ElementMirror.ts","ScrollGeomCache.ts","ElementScrollGeomCache.ts","WindowScrollGeomCache.ts","dnd/AutoScroller.ts","dnd/FeaturefulElementDragging.ts","OffsetTracker.ts","interactions/HitDragging.ts","utils.ts","interactions/DateClicking.ts","interactions/DateSelecting.ts","interactions/EventDragging.ts","interactions/EventResizing.ts","interactions/UnselectAuto.ts","interactions-external/ExternalElementDragging.ts","interactions-external/ExternalDraggable.ts","interactions-external/InferredElementDragging.ts","interactions-external/ThirdPartyDraggable.ts","../node_modules/is-plain-object/dist/is-plain-object.mjs","AllDaySplitter.ts","TimeColsAxisCell.tsx","TimeBodyAxis.tsx","TimeColsView.tsx","TimeColsSlatsCoords.ts","TimeColsSlatsBody.tsx","TimeColsSlats.tsx","TimeColsSeg.ts","TimeColMoreLink.tsx","seg-web.ts","event-placement.ts","TimeColEvent.tsx","TimeColMisc.tsx","TimeCol.tsx","TimeColsContent.tsx","TimeCols.tsx","DayTimeColsSlicer.ts","DayTimeCols.tsx","time-slat-meta.ts","DayTimeColsView.tsx","../node_modules/@nivo/arcs/node_modules/@react-spring/web/dist/react-spring-web.esm.js","../node_modules/lodash/isArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","ListViewHeaderRow.tsx","ListViewEventRow.tsx","ListView.tsx","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","TableView.tsx","TableSeg.ts","TableCellTop.tsx","event-rendering.ts","TableBlockEvent.tsx","TableListItemEvent.tsx","TableCellMoreLink.tsx","TableCell.tsx","TableRow.tsx","Table.tsx","DayTableSlicer.tsx","DayTable.tsx","DayTableView.tsx","TableDateProfileGenerator.ts","../node_modules/axios/lib/utils.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/lodash/isObjectLike.js","license.tsx","../../weekday.ts","../../helpers.ts","../../dateutil.ts","../../types.ts","../../iterresult.ts","../../callbackiterresult.ts","../../../../src/nlp/i18n.ts","../../../../src/nlp/totext.ts","../../../../src/nlp/parsetext.ts","../../../../src/nlp/index.ts","../../datetime.ts","../../parseoptions.ts","../../parsestring.ts","../../datewithzone.ts","../../optionstostring.ts","../../cache.ts","../../masks.ts","../../../../src/iterinfo/yearinfo.ts","../../../../src/iterinfo/index.ts","../../../../src/iterinfo/monthinfo.ts","../../../../src/iterinfo/easter.ts","../../../../src/iter/poslist.ts","../../../../src/iter/index.ts","../../rrule.ts","../../rrulestr.ts","../../rruleset.ts","../../iterset.ts","event-refiners.ts","scroll-left-norm.tsx","ScrollListener.ts","StickyScrolling.ts","ClippedScroller.tsx","ScrollSyncer.ts","ScrollGrid.tsx","timeline-date-profile.ts","TimelineHeaderThInner.tsx","TimelineHeaderTh.tsx","TimelineHeaderRows.tsx","TimelineCoords.ts","TimelineHeader.tsx","TimelineSlatCell.tsx","TimelineSlatsBody.tsx","TimelineSlats.tsx","TimelineLaneBg.tsx","TimelineLaneSlicer.ts","TimelineEvent.tsx","TimelineLaneMoreLink.tsx","TimelineLane.tsx","TimelineGrid.tsx","TimelineView.tsx","ExpanderIcon.tsx","spreadsheet-cell-util.ts","SpreadsheetIndividualCellInner.tsx","SpreadsheetIndividualCell.tsx","SpreadsheetGroupCell.tsx","SpreadsheetRow.tsx","SpreadsheetGroupRow.tsx","SpreadsheetHeader.tsx","ResourceTimelineLaneMisc.tsx","ResourceTimelineLane.tsx","DividerRow.tsx","ResourceTimelineLanesBody.tsx","ResourceTimelineLanes.tsx","ResourceTimelineGrid.tsx","ResourceTimelineViewLayout.tsx","ResourceTimelineView.tsx","../node_modules/d3-shape/src/noop.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/history/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/lodash/_root.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../src/TooltipWrapper.tsx","../../src/Chip.tsx","../../src/BasicTooltip.tsx","../../src/TableTooltip.tsx","../../src/CrosshairLine.tsx","../../src/Crosshair.tsx","../../src/context.ts","../../src/hooks.ts","../../src/Tooltip.tsx","../../src/TooltipProvider.tsx","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../src/setStatic.ts","../../src/shallowEqual.ts","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../src/compose.ts","../../src/utils/pick.ts","../../src/withPropsOnChange.ts","../../src/defaultProps.ts","../../src/setPropTypes.ts","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/lodash/isFunction.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/d3-scale/node_modules/d3-format/src/exponent.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/react-fast-compare/index.js","../node_modules/d3-color/src/color.js","../node_modules/lodash/_baseGetTag.js","../node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-color/src/define.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/property-expr/index.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../src/index.ts","../node_modules/scroll-into-view-if-needed/es/index.js","../../src/utils/environment.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/components/string.tsx","../../src/components/leaf.tsx","../../src/utils/range-list.ts","../../src/hooks/use-content-key.ts","../../src/components/text.tsx","../../src/components/element.tsx","../../src/hooks/use-slate-static.tsx","../../src/hooks/use-decorate.ts","../../src/hooks/use-selected.ts","../../src/hooks/use-children.tsx","../../src/utils/hotkeys.ts","../../src/hooks/use-read-only.ts","../../src/hooks/use-slate.tsx","../../src/utils/dom.ts","../../src/components/editable.tsx","../../src/components/android/diff-text.ts","../../src/utils/key.ts","../../src/plugin/react-editor.ts","../../src/components/android/mutation-detection.ts","../../src/components/android/android-input-manager.ts","../../src/components/android/use-mutation-observer.ts","../../src/components/android/use-restore-dom.tsx","../../src/components/android/use-android-input-manager.ts","../../src/components/android/use-track-user-input.ts","../../src/components/android/android-editable.tsx","../../src/hooks/use-focused.ts","../../src/hooks/use-slate-selector.tsx","../../src/components/slate.tsx","../../src/utils/lines.ts","../../src/plugin/with-react.ts","../../src/utils/constants.ts","../node_modules/lodash/set.js","../node_modules/lodash/_getNative.js","../node_modules/react-is/index.js","../node_modules/lodash/has.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../../src/Enum.js","../../src/Utility.js","../../src/Tokenizer.js","../../src/Parser.js","../../src/Prefixer.js","../../src/Serializer.js","../../src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-a8309070.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.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/defineProperty.js","../node_modules/react-select/dist/index-4bd03571.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.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/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/Select-dbb12e54.esm.js","../node_modules/react-select/dist/stateManager-845a3300.esm.js","../node_modules/react-select/dist/react-select.esm.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/extends.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_copyObject.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/is-hotkey/lib/index.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/sequential.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/eq.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/keys.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseGet.js","../node_modules/define-properties/index.js","../node_modules/lodash/keysIn.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/lodash/uniqBy.js","../node_modules/redux/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/redux/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/@nivo/pie/node_modules/@react-spring/web/dist/react-spring-web.esm.js","../node_modules/axios/lib/defaults.js","../node_modules/process/browser.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isBuffer.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/identity.js","../node_modules/react-motion/lib/stripStyle.js","../node_modules/@react-spring/core/dist/react-spring-core.esm.js","../node_modules/@nivo/arcs/node_modules/@react-spring/core/dist/react-spring-core.esm.js","../node_modules/@nivo/pie/node_modules/@react-spring/core/dist/react-spring-core.esm.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/isBuffer.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/lodash/mapValues.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/lodash/debounce.js","../node_modules/d3-array/src/range.js","../node_modules/d3-scale/src/band.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/month.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-scale/src/time.js","../node_modules/@nivo/scales/node_modules/d3-time/src/interval.js","../node_modules/@nivo/scales/node_modules/d3-time/src/millisecond.js","../node_modules/@nivo/scales/node_modules/d3-time/src/duration.js","../node_modules/@nivo/scales/node_modules/d3-time/src/second.js","../node_modules/@nivo/scales/node_modules/d3-time/src/minute.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcMinute.js","../node_modules/@nivo/scales/node_modules/d3-time/src/hour.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcHour.js","../node_modules/@nivo/scales/node_modules/d3-time/src/week.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcWeek.js","../node_modules/@nivo/scales/node_modules/d3-time/src/month.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcMonth.js","../node_modules/@nivo/scales/node_modules/d3-time/src/year.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcYear.js","../../src/timeHelpers.ts","../../src/linearScale.ts","../../src/pointScale.ts","../../src/bandScale.ts","../../src/timeScale.ts","../node_modules/d3-scale/src/utcTime.js","../../src/compute.ts","../../src/logScale.ts","../../src/symlogScale.ts","../../src/ticks.ts","../../src/components/AxisTick.tsx","../../src/components/Axis.tsx","../../src/props.ts","../../src/components/Axes.tsx","../../src/components/GridLine.tsx","../../src/components/GridLines.tsx","../../src/components/Grid.tsx","../../src/canvas.ts","../../src/AnnotationNote.tsx","../../src/AnnotationLink.tsx","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../../src/CircleAnnotationOutline.tsx","../../src/DotAnnotationOutline.tsx","../../src/RectAnnotationOutline.tsx","../../src/Annotation.tsx","../../src/svg/LegendSvgItem.tsx","../../src/svg/symbols/SymbolCircle.tsx","../../src/svg/symbols/SymbolDiamond.tsx","../../src/svg/symbols/SymbolSquare.tsx","../../src/svg/symbols/SymbolTriangle.tsx","../../src/svg/LegendSvg.tsx","../../src/svg/BoxLegendSvg.tsx","../../src/schemes/categorical.ts","../../src/schemes/diverging.ts","../../src/schemes/sequential.ts","../../src/schemes/all.ts","../../src/schemes/cyclical.ts","../../src/schemes/interpolators.ts","../../src/inheritedColor.ts","../../../../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../src/ordinalColorScale.ts","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/stack.js","../../src/BarAnnotations.tsx","../../src/BarLegends.tsx","../../src/BarTooltip.tsx","../../src/BarItem.tsx","../../src/compute/common.ts","../../src/compute/grouped.ts","../../src/compute/stacked.ts","../../src/compute/legends.ts","../../src/Bar.tsx","../../src/BarCanvas.tsx","../../src/ResponsiveBar.tsx","../../src/ResponsiveBarCanvas.tsx","../node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","../node_modules/date-fns/esm/locale/fr/index.js","../node_modules/date-fns/esm/locale/fr/_lib/match/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/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/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/react-motion/lib/react-motion.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/object-assign/index.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getSymbols.js","../node_modules/function-bind/index.js","../node_modules/call-bind/index.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseRest.js","../node_modules/react-motion/lib/mapToZero.js","../node_modules/react-motion/lib/stepper.js","../node_modules/react-motion/node_modules/performance-now/lib/performance-now.js","../node_modules/raf/index.js","../node_modules/react-motion/lib/shouldStopAnimation.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/warning/warning.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/path-to-regexp/index.js","../node_modules/lodash/snakeCase.js","../../utils/isBrowser.js","../../utils/debounce.js","../../utils/isFunction.js","../../utils/getStyleComputedProperty.js","../../utils/getParentNode.js","../../utils/getScrollParent.js","../../utils/getReferenceNode.js","../../utils/isIE.js","../../utils/getOffsetParent.js","../../utils/getRoot.js","../../utils/findCommonOffsetParent.js","../../utils/isOffsetContainer.js","../../utils/getScroll.js","../../utils/includeScroll.js","../../utils/getBordersSize.js","../../utils/getWindowSizes.js","../../utils/getClientRect.js","../../utils/getBoundingClientRect.js","../../utils/getOffsetRectRelativeToArbitraryNode.js","../../utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../utils/isFixed.js","../../utils/getFixedPositionOffsetParent.js","../../utils/getBoundaries.js","../../utils/computeAutoPlacement.js","../../utils/getReferenceOffsets.js","../../utils/getOuterSizes.js","../../utils/getOppositePlacement.js","../../utils/getPopperOffsets.js","../../utils/find.js","../../utils/runModifiers.js","../../utils/findIndex.js","../../methods/update.js","../../utils/isModifierEnabled.js","../../utils/getSupportedPropertyName.js","../../methods/destroy.js","../../utils/getWindow.js","../../utils/setupEventListeners.js","../../methods/enableEventListeners.js","../../methods/disableEventListeners.js","../../utils/removeEventListeners.js","../../utils/isNumeric.js","../../utils/setStyles.js","../../modifiers/computeStyle.js","../../utils/isModifierRequired.js","../../methods/placements.js","../../utils/clockwise.js","../../modifiers/flip.js","../../modifiers/offset.js","../../modifiers/index.js","../../methods/defaults.js","../../modifiers/shift.js","../../modifiers/preventOverflow.js","../../modifiers/keepTogether.js","../../modifiers/arrow.js","../../utils/getOppositeVariation.js","../../modifiers/inner.js","../../modifiers/hide.js","../../utils/getRoundedOffsets.js","../../modifiers/applyStyle.js","../../utils/setAttributes.js","../../index.js","../node_modules/@hypnosphi/create-react-context/lib/index.js","../node_modules/lodash/isString.js","../node_modules/lodash/without.js","../node_modules/lodash/isEqual.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/direction/index.js","../node_modules/lodash/throttle.js","../node_modules/lodash/uniq.js","../node_modules/lodash/omit.js","../node_modules/lodash/isNumber.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/value.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_hasUnicode.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/call-bind/callBound.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/polyfill.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/react-motion/lib/presets.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/axios/index.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/mapKeys.js","../node_modules/toposort/index.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/deep-equal/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/attr-accept/dist/es/index.js","../../src/constants.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/isStaticRules.js","../../src/models/Keyframes.js","../../src/models/StyledComponent.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/lodash/merge.js","../node_modules/lodash/pick.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcYear.js","../../src/history.ts","../../src/history-editor.ts","../../src/with-history.ts","../node_modules/lodash/sortBy.js","../node_modules/lodash/isDate.js","../node_modules/lodash/filter.js","../node_modules/react-phone-input-2/lib/lib.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/arc.js","../../src/arc_labels/ArcLabel.tsx","../../src/arcTransitionMode.ts","../../src/centers.ts","../../src/arc_labels/ArcLabelsLayer.tsx","../../src/arc_link_labels/ArcLinkLabel.tsx","../../src/arc_link_labels/compute.ts","../../src/arc_link_labels/useArcLinkLabelsTransition.ts","../../src/arc_link_labels/ArcLinkLabelsLayer.tsx","../../src/ArcShape.tsx","../../src/interpolateArc.ts","../../src/ArcsLayer.tsx","../../src/useArcsTransition.ts","../../src/useArcGenerator.ts","../../src/scales/ordinalColorScale.ts","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../../src/PieLegends.tsx","../../src/PieTooltip.tsx","../node_modules/d3-shape/src/pie.js","../../src/boundingBox.ts","../../src/Arcs.tsx","../../src/Pie.tsx","../../src/ResponsivePie.tsx","../node_modules/file-selector/node_modules/tslib/tslib.es6.js","../../file.ts","../../file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","ResourceDayTableJoiner.ts","ResourceDayTable.tsx","ResourceDayTableView.tsx","ResourceDayTimeColsJoiner.ts","ResourceDayTimeCols.tsx","ResourceDayTimeColsView.tsx","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/defaultLocale.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/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.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/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.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/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.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/_baseIsEqualDeep.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/deburr.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/words.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/classnames/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/date-fns/esm/subHours/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/react-popper/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/object-keys/implementation.js","../node_modules/is-arguments/index.js","../node_modules/has-symbols/shams.js","../node_modules/function-bind/implementation.js","../node_modules/has/src/index.js","../node_modules/object-is/index.js","../node_modules/object-is/shim.js","../node_modules/is-regex/index.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/is-date-object/index.js","../node_modules/@hypnosphi/create-react-context/lib/implementation.js","../node_modules/gud/index.js","../node_modules/moment/locale/fr.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_baseDifference.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_basePick.js","../node_modules/lodash/_basePickBy.js","../node_modules/lodash/flatten.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/now.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/noop.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_baseIsDate.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseUnset.js","../node_modules/lodash/_parent.js","../node_modules/lodash/_customOmitClone.js","../node_modules/lodash/_baseFilter.js","../node_modules/react-motion/lib/Motion.js","../../src/performance-now.coffee","../node_modules/react-motion/lib/StaggeredMotion.js","../node_modules/react-motion/lib/TransitionMotion.js","../node_modules/react-motion/lib/mergeDiff.js","../node_modules/react-motion/lib/spring.js","../node_modules/react-motion/lib/reorderKeys.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/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/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","../node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","../node_modules/d3-scale/node_modules/d3-format/src/identity.js","../node_modules/d3-scale/node_modules/d3-format/src/locale.js","../node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","../node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/number.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js"],"names":["module","exports","require","_slicedToArray","arr","i","Array","isArray","Symbol","iterator","Object","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","length","err","unsupportedIterableToArray","TypeError","map","set","Map","_","Set","baseClone","src","circulars","clones","nodeType","cloneNode","Date","getTime","RegExp","clone","from","entries","values","obj","create","key","idx","findIndex","toString","prototype","errorToString","Error","regExpToString","symbolToString","SYMBOL_REGEXP","printNumber","val","printSimpleValue","quoteStrings","typeOf","name","call","replace","tag","slice","isNaN","toISOString","printValue","result","JSON","stringify","this","mixed","default","required","oneOf","notOneOf","notType","path","type","originalValue","isCast","msg","defined","string","min","max","matches","email","url","uuid","trim","lowercase","uppercase","number","lessThan","moreThan","positive","negative","integer","date","boolean","isValue","object","noUnknown","array","assign","__isYupSchema__","Condition","refs","options","has","then","otherwise","is","check","every","fn","args","pop","schema","branch","concat","resolve","base","ref","getValue","parent","context","apply","isSchema","toArray","_extends","target","arguments","source","hasOwnProperty","strReg","ValidationError","errorOrErrors","field","errors","inner","forEach","isError","message","captureStackTrace","params","label","runTests","cb","endEarly","tests","sort","callback","fired","once","count","nestedErrors","test","prefixes","Reference","isContext","isSibling","prefix","getter","__isYupRef","createValidation","config","validate","_ref","sync","rest","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","item","Ref","isRef","createError","overrides","nextParams","mapValues","error","formatError","ctx","_ref2","Promise","validOrError","OPTIONS","part","substr","getIn","lastPart","lastPartDebug","_part","isBracket","innerType","parseInt","fields","_type","parentPath","ReferenceSet","list","size","description","describe","add","delete","newItems","removeItems","BaseSchema","deps","conditions","_whitelist","_blacklist","exclusiveTests","transforms","withMutation","typeError","locale","spec","strip","strict","abortEarly","recursive","nullable","presence","_value","_mutate","getPrototypeOf","_typeError","_whitelistError","_blacklistError","cloneDeep","meta","before","combined","mergedSpec","merge","v","_typeCheck","reduce","condition","resolvedSchema","_cast","assert","isType","formattedValue","formattedResult","rawValue","_options","getDefault","initialTests","maybeCb","_validate","reject","validateSync","defaultValue","_getDefault","def","isStrict","exclusive","s","_isPresent","filter","isNullable","opts","isExclusive","dep","enums","valids","join","invalids","n","c","method","alias","optional","notRequired","Mixed","BooleanSchema","transform","String","Boolean","valueOf","isAbsent","rEmail","rUrl","rUUID","isTrimmed","objStringTag","StringSchema","strValue","regex","excludeEmptyString","search","toLowerCase","toUpperCase","NumberSchema","parsed","NaN","parseFloat","Number","less","more","isInteger","_method","avail","truncate","Math","isoReg","invalidDate","DateSchema","timestamp","struct","numericKeys","minutesOffset","exec","k","UTC","parse","isoParse","param","cast","limit","prepareParam","INVALID_DATE","sortFields","excludes","edges","nodes","addNode","depPath","node","split","toposort","reverse","Infinity","some","ii","_err$path","sortByKeyOrder","a","b","isObject","unknown","known","defaultSort","ObjectSchema","_sortErrors","_nodes","_excludedEdges","shape","_options$stripUnknown","stripUnknown","props","intermediateValue","innerOptions","__validating","isChanged","prop","exists","fieldValue","inputValue","fieldSpec","nextFields","schemaOrRef","dft","getDefaultFromShape","additions","first","second","picked","to","fromGetter","newObj","noAllow","unknownKeys","allow","mapKeys","transformKeys","camelCase","snakeCase","ArraySchema","_opts","castArray","castElement","_options$abortEarly","_options$recursive","index","original","rejector","FullCalendarVDom","Component","createElement","createRef","render","Fragment","createContext","createPortal","flushSync","unmountComponentAtNode","internalEventSource","remove","dispatch","sourceId","refetch","sourceIds","isRefetch","publicId","format","removeElement","el","parentNode","removeChild","elementClosest","selector","closest","document","documentElement","contains","elementMatches","parentElement","matchesSelector","msMatchesSelector","findElements","container","containers","HTMLElement","allMatches","querySelectorAll","j","findDirectChildren","parents","childNodes","children","childNode","PIXEL_PROP_RE","applyStyle","propName","applyStyleProp","style","getEventTargetViaRoot","ev","composedPath","getElRoot","getRootNode","guid","getUniqueDomId","preventDefault","listenBySelector","eventType","handler","attachedHandler","matchedChild","buildDelegationHandler","addEventListener","removeEventListener","transitionEventNames","whenTransitionDone","realCallback","eventName","createAriaClickAttrs","onClick","createAriaKeyboardAttrs","tabIndex","onKeyDown","guidNumber","disableCursor","body","classList","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","parseFieldSpecs","input","token","specs","tokens","charAt","substring","order","func","compareByFieldSpecs","obj0","obj1","fieldSpecs","cmp","compareByFieldSpec","flexibleCompare","localeCompare","padStart","len","formatWithOrdinals","formatter","fallbackText","str","arg","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","querySelector","contentWidthEl","getBoundingClientRect","width","DAY_IDS","addWeeks","m","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","diffWholeDays","timeAsMs","round","startOfDay","getUTCFullYear","getUTCMonth","getUTCDate","weekOfGivenYear","marker","year","dow","doy","firstWeekStart","firstWeekOffset","dayStart","days","floor","fwd","getUTCDay","dateToLocalArray","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","isValidDate","createEventInstance","defId","range","forcedStartTzo","forcedEndTzo","instanceId","mergeProps","propObjs","complexPropsMap","dest","complexObjs","unshift","filterHash","hash","filtered","mapHash","newHash","arrayToHash","hashValuesToArray","isPropsEqual","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","collectFromHash","startIndex","endIndex","step","res","expandRecurring","eventStore","framingRange","dateEnv","pluginHooks","defs","instances","instance","recurringDef","duration","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","expandRecurringRanges","recurringTypes","start","end","eventDef","markers","typeId","expand","typeData","subtract","INTERNAL_UNITS","PARSE_RE","createDuration","unit","sign","years","months","milliseconds","parseString","parseObject","month","day","hours","hour","minutes","minute","seconds","millisecond","ms","weeks","week","specifiedWeeks","asCleanDays","dur","addDurations","d0","d1","multiplyDuration","d","asRoughDays","asRoughMs","asRoughMinutes","asRoughSeconds","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoTimeString","doIso","abs","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","memoizeArraylike","currentArgSets","currentResults","newArgSets","currentLen","newLen","splice","memoizeHashlike","currentArgHash","currentResHash","newArgHash","newResHash","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","ca","getMarkerYear","getMarkerMonth","getMarkerDay","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","before0","after0","i1","found1","before1","after1","after","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","num","weekText","weekTextLong","display","parts","simpleNumberFormat","direction","formatWeekNumber","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","cmdStr","cmdFormatter","createFormatter","NativeFormatter","CmdFormatter","FuncFormatter","parseEvents","rawEvents","eventSource","allowOpenRange","eventRefiners","buildEventRefiners","tuple","parseEvent","eventTupleToStore","getRelevantEvents","newStore","filterEventStoreDefs","lookDef","def0","def1","groupId","createEmptyEventStore","mergeEventStores","store0","store1","filterFunc","parseClassNames","raw","EVENT_UI_REFINERS","editable","startEditable","durationEditable","constraint","identity","overlap","className","classNames","color","backgroundColor","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","refined","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","defaultAllDay","allDayGuess","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","nextDayThreshold","startDay","endDay","endTimeMS","isMultiDayRange","visibleRange","diffDates","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","diffDayAndTime","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesEqual","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","ui","origRange","normalRange","slicedRange","isStart","isEnd","invertedRange","bg","fg","hasBgRendering","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","_seg","eventRange","extendedProps","id","computeSegDraggable","transformers","isDraggableTransformers","transformer","computeSegStartResizable","eventResizableFromStart","computeSegEndResizable","buildSegTimeText","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","displayEventTime","displayEventEnd","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","hasEnd","forcedTzo","getSegMeta","todayRange","nowDate","segRange","isPast","isFuture","isToday","buildEventRangeKey","getSegAnchorAttrs","href","emitter","eventInteractive","interactive","hasHandlers","trigger","event","jsEvent","view","viewApi","STANDARD_PROPS","parseDateSpan","defaultDuration","span","refineProps","standardProps","extra","startMeta","createMarkerMeta","endMeta","isTimeUnspecified","parseOpenDateSpan","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildRangeApiWithTimeZone","omitTime","buildRangeApi","toDate","startStr","formatIso","endStr","fabricateEventRange","dateSpan","refineEventDef","parseEventDef","triggerDateSelect","selection","pev","__assign_1","buildDateSpanApiWithContext","origEvent","calendarApi","dateSpanTransforms","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","mutation","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","startDelta","endDelta","copy","eventDefMutationAppliers","applier","forceEventDuration","forceAllDay","clearEnd","datesDelta","getCurrentData","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","events","eventDataTransform","success","failure","parseEventSource","refiners","rawObj","buildEventSourceRefiners","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","getNow","nowInput","createNowMarker","createMarker","currentDataManager","action","batchRendering","updateSize","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","on","handlerName","currentCalendarOptionsRefiners","console","warn","off","changeView","viewType","dateOrRange","unselect","dateMarker","zoomTo","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","header","viewsWithButtons","footer","singleUnit","prev","prevYear","state","addYears","currentDate","nextYear","today","calendarOptions","now","gotoDate","zonedDateInput","incrementDate","deltaInput","delta","formatDate","settings","select","dateOrObj","endDate","selectionInput","dateSelection","triggerDateUnselect","addEvent","eventInput","sourceInput","_def","_instance","triggerEventAdd","EventSourceApi","eventSources","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","currentData","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","refetchEvents","scrollToTime","timeInput","time","_context","setProp","EVENT_DATE_REFINERS","EVENT_NON_DATE_REFINERS","mutate","setExtendedProp","setStart","startInput","granularity","maintainDuration","setEnd","endInput","setDates","instanceRange","moveStart","moveEnd","moveDates","setAllDay","allDayMaintainDuration","formatInput","relevantEvents","oldEvent","EventApi","asStore","title","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","theClass","arrayToMarker","GregorianCalendarSystem","ISO_RE","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","createCalendarSystem","weekDow","weekDoy","weekNumberCalculation","firstDay","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","diff","asRoughMonths","startOf","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","y","w","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","buttonText","closeHint","timeHint","eventHint","allDayText","moreLinkText","noEventsText","RAW_EN_LOCALE","buttonHints","viewHint","navLinkHint","moreLinkHint","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","en","rawLocale","buildLocale","inputSingular","available","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","parseBusinessHours","rawDefs","rawDef","refineInputs","pointInsideRect","point","rect","left","right","top","bottom","intersectRects","rect1","rect2","translateRect","deltaX","deltaY","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","position","innerHTML","height","appendChild","possible","offsetHeight","computeCanVGrowWithinCell","EMPTY_EVENT_STORE","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","info","buildEventUiForKey","keyInfo","buildEventUi","businessHours","eventSelection","dateSpans","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedEvents","mutatedKeysByDefId","mutatedEvents","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isDisabled","isOther","getDayClassNames","theme","getClass","getSlotClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","navLinks","zonedDate","handleInteraction","customAction","navLinkDayClick","navLinkWeekClick","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","outerEl","border","padding","overflow","firstChild","computeIsRtlScrollbarOnLeft","getScrollbarWidths","computeScrollbarWidthsForEl","computeScrollbarWidths","x","clientHeight","offsetWidth","clientWidth","computeEdges","getPadding","computedStyle","window","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","paddingLeft","paddingRight","paddingTop","paddingBottom","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","pageXOffset","pageYOffset","getClippingParents","overflowY","overflowX","unpromisify","isResolved","wrappedSuccess","wrappedFailure","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","originEl","els","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","scrollTop","scrollLeft","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","ScrollController","scroll","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","iconOverridePrefix","classes","getIconClass","isRtl","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","execFunc","scrollTime","scrollTimeReset","handleScrollRequest","request","queuedRequest","drain","fireInitialScroll","detach","update","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","shouldComponentUpdate","nextProps","nextState","debug","log","propEquality","stateEquality","safeSetState","newState","setState","addPropsEquality","addStateEquality","contextType","setRef","current","uid","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","createPlugin","reducers","isLoadingFuncs","contextInit","eventDefMemberAdders","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","views","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","pluginDefs","isAdded","hooks","addDefs","hooks1","hooks0","buildPluginHooks","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","component","defaults","rawOptions","buildViewDef","root","tableCellShaded","buttonGroup","button","buttonActive","close","rootElRef","handleRootEl","elRef","hookProps","didMount","willUnmount","ContentHook","content","defaultContent","backupElRef","innerElRef","innerContent","normalizeClassNames","CustomContentRenderContext","Consumer","renderId","renderInnerContent","componentDidMount","updateCustomContent","componentDidUpdate","componentWillUnmount","customContentInfo","destroy","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","rootEl","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","customClassNames","viewClassNames","viewDidMount","viewWillUnmount","parseViewConfigs","inputs","parseViewConfig","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","compileViewDefs","durationInput","durationUnit","singleUnitOverrides","json","durationInputMap","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","dateIncrement","build","buildNext","nextDate","validRange","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","showNonCurrentDates","adjustActiveRange","slotMinTime","slotMaxTime","buildDateIncrement","validRangeInput","simpleInput","refineRange","dayCount","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","usesMinMaxTime","dateAlignment","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","fallback","customAlignment","rangeInput","parseRange","hiddenDays","isHiddenDayHash","weekends","inc","initEventSources","addSources","rawSources","initialEvents","parseInitialSources","reduceEventSources","eventSourceHash","fetchDirtySources","fetchSourcesByIds","excludeStaticSources","fetchId","receiveResponse","computeEventSourcesLoading","doesSourceNeedRange","lazyFetching","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetch","eventSourceSuccess","xhr","eventSourceFailure","ignoreRange","reduceEventStore","subset","calEachTransform","sourceEachTransform","transformEachRawEvent","transformRawEvents","excludeEventsBySourceId","receiveRawEvents","expandRange","master","sub","filteredDefs","filteredInstances","excludeSubEventStore","refinedEvents","rawEvent","refinedEvent","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","headerToolbar","parseToolbar","footerToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","click","text","hint","textFallback","prevOrNext","navUnit","requestJson","successCallback","failureCallback","encodeParams","injectQueryStringParams","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","onerror","send","encodeURIComponent","globalPlugins","bind","extraParams","startParam","endParam","timeZoneParam","requestParams","customRequestParams","buildRequestParams","errorMessage","startRecur","endRecur","recurringData","clippedFramingRange","dowHash","dayMarker","endMarker","instanceStarts","instanceStart","expandRanges","html","currentEl","currentHtml","domNodes","currentDomNodes","newDomNodes","newNode","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","delay","isPaused","clearTimeout","tryDrain","setTimeout","pause","scope","resume","force","drained","clear","runTaskOption","queue","delayedRunner","DelayedRunner","task","completedTasks","shift","runTask","buildTitle","titleFormat","buildTitleFormat","titleRangeSeparator","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","Emitter","actionRunner","TaskRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","data","optionsData","currentViewType","currentViewData","initialDateInput","initialDate","getInitialDate","calendarContext","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","append","reduceDynamicOptionOverrides","reduceViewType","dp","reduceDateProfile","reduceCurrentDate","progressiveEventRendering","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","oldDateEnv","newDateEnv","rezoneEventStoreDates","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","defaultRangeSeparator","mergeRawOptions","locales","plugins","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","monthMode","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","themeSystem","DateProfileGenerator","ViewApi","eventDisplay","eventStartEditable","eventDurationEditable","eventConstraint","eventOverlap","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","viewName","handleData","dataManager","prevProps","newOptionOverrides","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","entry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","thickness","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","rects","groupIntersectingEntries","merges","filteredMerges","hungryMerge","searchVal","getItemVal","middleIndex","middleVal","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsToStore","interactionSettingsStore","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","DRAG_META_REFINERS","parseDragMeta","leftoverProps","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widget","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","disabled","groupClassName","startContent","endContent","model","extraClassName","forceLtr","centerContent","center","renderSection","availableWidth","handleEl","updateAvailableWidth","handleResize","aspectRatio","liquid","labeledById","handleSegClick","segEl","hasUrlContainer","defaultPrevented","location","Interaction","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","mouseLeaveEv","listenToHoverBySelector","publicEvName","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","interactions","TheInteractionClass","listeners","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","toolbarProps","viewVGrow","viewHeight","isHeightAuto","forPrint","contentHeight","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","handleBeforePrint","handleAfterPrint","computeFallbackHeaderFormat","datesRepDistinctDays","CLASS_NAME","renderInner","dayMeta","dayHeaderFormat","navLinkAttrs","colCnt","extraHookProps","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","role","colSpan","extraDataAttrs","isSticky","WEEKDAY_FORMAT","dateMeta","extraClassNames","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","createDayHeaderFormatter","dates","renderIntro","explicitFormat","dateCnt","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","ceil","dayOffset","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","row","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","eventSegs","extraArgs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","eventRanges","sliceEventRange","isComponentAllDay","removals","VISIBLE_HIDDEN_RE","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","maxHeight","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","getAll","computeShrinkWidth","chunkEls","largestWidth","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isHeader","expandRows","tableClassName","syncRowHeights","minWidth","tableMinWidth","tableColGroupNode","rowContent","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","colProps","sanitizeShrinkWidth","hasShrinkWidth","getScrollGridClassNames","getSectionClassNames","wholeTableVGrow","renderScrollShim","getStickyHeaderDates","stickyHeaderDates","getStickyFooterScrollbar","stickyFooterScrollbar","processCols","scrollerRefs","RefMap","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","outerContent","renderChunkTd","chunk","isLiquid","sectionKey","rowSyncHeights","reportRowHeightChange","scrollerEl","section","getSectionByKey","scrollerElRef","scrollbarWidth","scroller","harnessEl","timeText","isDraggable","disableDragging","isStartResizable","disableResizing","isEndResizable","isMirror","isDragging","isResizing","isDateSelecting","isSelected","standardClassNames","getEventClassNames","eventClassNames","eventContent","eventDidMount","eventWillUnmount","eventTimeFormat","defaultTimeFormat","innerProps","isAxis","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","DAY_NUM_FORMAT","refineDayCellHookProps","showDayNumber","extraProps","dayCellContent","dayNumberText","refineHookProps","dayCellClassNames","dataAttrs","dayCellDidMount","dayCellWillUnmount","renderFill","fillType","weekNumberFormat","defaultFormat","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","onClose","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","clippingParents","intersection","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","offsetParent","startDate","dayPopoverFormat","dayClassNames","extraDateSpan","dayEl","layer","linkElRef","isPopoverOpen","popoverId","handleClick","moreLinkClick","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","moreLinkClassNames","moreLinkContent","renderMoreLinkInner","moreLinkDidMount","moreLinkWillUnmount","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","pickLatestEnd","pickEarliestStart","seg0","seg1","ReactReduxContext","React","batch","nullListeners","notify","createListenerCollection","last","listener","get","subscribe","isSubscribed","Subscription","store","parentSub","unsubscribe","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","tryUnsubscribe","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","contextValue","useMemo","subscription","previousState","getState","Context","useReduxContext","useContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","useReducer","latestSubscriptionCallbackError","useRef","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","stack","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread2","getOwnPropertyDescriptors","defineProperties","defineProperty","_toConsumableArray","arrayLikeToArray","iter","extendStatics","setPrototypeOf","__proto__","p","__extends","__","constructor","__assign","t","__spreadArray","pack","ar","l","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","element","arrayMerge","sourceIsArray","destination","mergeObject","all","deepmerge_1","objectProto","nativeObjectToString","symToStringTag","toStringTag","getRawTag","isOwn","unmasked","e","objectToString","baseGetTag","overArg","getPrototype","isObjectLike","funcProto","Function","funcToString","objectCtorString","isPlainObject","proto","Ctor","listCacheClear","__data__","eq","other","assocIndexOf","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","stackClear","stackDelete","stackGet","stackHas","isFunction","coreJsData","maskSrcKey","IE_PROTO","isMasked","toSource","reIsHostCtor","reIsNative","baseIsNative","getNative","nativeCreate","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackSet","pairs","LARGE_ARRAY_SIZE","Stack","arrayEach","iteratee","baseAssignValue","assignValue","objValue","copyObject","customizer","isNew","newValue","baseTimes","baseIsArguments","propertyIsEnumerable","isArguments","reIsUint","isIndex","isLength","typedArrayTags","baseIsTypedArray","baseUnary","nodeIsTypedArray","nodeUtil","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isBuffer","skipIndexes","isPrototype","nativeKeys","baseKeys","isArrayLike","baseAssign","nativeKeysIn","baseKeysIn","isProto","keysIn","baseAssignIn","copyArray","arrayFilter","predicate","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","copySymbols","arrayPush","offset","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","WeakMap","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","isDeep","buffer","byteOffset","reFlags","cloneRegExp","regexp","symbolProto","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","objectCreate","baseCreate","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","argsTag","funcTag","objectTag","cloneableTags","bitmask","isFlat","isFull","isFunc","cloneBuffer","stacked","subValue","arrayMap","isSymbol","resolver","memoized","cache","Cache","memoizeCapped","rePropName","reEscapeChar","stringToPath","charCodeAt","match","quote","subString","toKey","baseToString","toPath","CLONE_DEEP_FLAG","isEmptyArray","isString","isEmptyChildren","isPromise","setIn","resVal","pathArray","currentPath","currentObj","nextPath","setNestedObjectValues","visited","response","FormikContext","FormikProvider","FormikConsumer","useFormikContext","formik","formikReducer","payload","touched","isEqual","isSubmitting","isValidating","submitCount","emptyErrors","emptyTouched","useFormik","validateOnChange","validateOnBlur","validateOnMount","isInitialValid","enableReinitialize","onSubmit","initialValues","initialErrors","initialTouched","initialStatus","isMounted","fieldRegistry","runValidateHandler","maybePromisedErrors","actualException","runValidationSchema","validationSchema","promise","validateData","prepareDataForValidation","validateYupSchema","yupError","yupToFormErrors","runSingleFieldLevelValidation","runFieldLevelValidations","fieldKeysWithValidation","f","fieldValidations","fieldErrorsList","curr","runAllValidations","fieldErrors","schemaErrors","validateErrors","validateFormWithHighPriority","useEventCallback","combinedErrors","resetForm","dispatchFn","maybePromisedOnReset","validateField","maybePromise","registerField","unregisterField","setTouched","shouldValidate","setErrors","setValues","resolvedValues","setFieldError","setFieldValue","executeChange","eventOrTextValue","checked","multiple","maybePath","currentValue","currentArrayOfValues","isValueInArray","valueProp","getValueForCheckbox","getSelectedValues","handleChange","setFieldTouched","executeBlur","outerHTML","handleBlur","setFormikState","stateOrCb","setStatus","setSubmitting","submitForm","isInstanceOfError","promiseOrUndefined","executeSubmit","_errors","handleSubmit","reason","imperativeMethods","validateForm","handleReset","getFieldMeta","initialValue","initialError","getFieldHelpers","setValue","setError","getFieldProps","isAnObject","nameOrOptions","valueState","onChange","onBlur","dirty","Formik","formikbag","innerRef","shouldClone","Field","as","legacyBag","form","asElement","Form","_action","onReset","connect","Comp","C","componentDisplayName","hoistNonReactStatics","insert","copyArrayLike","arrayLike","maxIndex","FieldArrayInner","updateArrayField","updateErrors","alterErrors","updateTouched","alterTouched","prevState","fieldError","fieldTouched","handlePush","swap","indexA","handleSwap","move","handleMove","handleInsert","handleReplace","handleUnshift","handleRemove","handlePop","tmp","arrayHelpers","restOfFormik","noop","defineHidden","writable","configurable","fun","und","each","eachProp","flush","items","createStringInterpolator$1","flushCalls","isSSR","navigator","userAgent","colors$1","skipAnimation","willAdvance","globals","freeze","raf","colors","createStringInterpolator","requestAnimationFrame","use","batchedUpdates","frameLoop","startQueue","currentFrame","prevFrame","priority","animation","onStart","flushStartQueue","startSafely","advance","onFrame","prevIndex","startUnsafely","includes","dt","nextFrame","idle","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","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","lightgrey","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","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","NUMBER","PERCENTAGE","rgb","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","q","hslToRgb","h","r","g","parse255","int","parse360","parse1","parsePercentage","colorToRgba","int32Color","normalizeColor","createInterpolator","output","extrapolate","outputRange","inputRange","extrapolateLeft","extrapolateRight","easing","findRange","inputMin","inputMax","outputMin","outputMax","interpolate","$get","$observers","hasFluidValue","getFluidValue","getFluidObservers","callFluidObservers","observers","observer","eventObserved","callFluidObserver","FluidValue","setFluidGetter","setHidden","addFluidObserver","observerAdded","removeFluidObserver","observerRemoved","namedColorRegex","numberRegex","colorRegex","unitRegex","rgbaRegex","cssVariableRegex","variableToRgba","parseCSSVariable","getPropertyValue","startsWith","rgbaRound","p1","p2","p3","p4","keyframes","interpolators","_output$find","missingUnit","find","called","warnInterpolate","deprecateInterpolate","warnDirectCall","deprecateDirectCall","isAnimatedString","useForceUpdate","useState","useIsMounted","random","useMemoOne","getResult","initial","committed","prevCache","areInputsEqual","useOnce","effect","emptyDeps","usePrev","prevRef","updateQueue","makeQueue","schedule","writeQueue","write","onStartQueue","onFrameQueue","onFinishQueue","onFinish","timeouts","timeout","cancel","__raf","findTimeout","throttle","lastArgs","queuedFn","throttled","nativeRaf","impl","performance","catch","ts","loop","prevTs","eachSafely","mounted","makeMountedRef","unmount","o","u","D","S","M","P","E","N","O","Y","T","I","L","F","R","A","W","B","H","K","Q","V","U","$","z","G","J","X","Z","ee","te","re","ae","ne","oe","se","ie","pe","le","de","ce","ue","fe","he","me","ye","ve","De","we","ke","ge","be","Ce","Se","Me","Pe","Ee","Ne","Oe","Ye","xe","Te","Ie","Le","Fe","Re","qe","Ae","We","Be","je","He","Ke","Qe","Ve","Ue","$e","ze","Ge","Je","Xe","Ze","et","tt","rt","at","nt","ot","st","it","pt","lt","ct","ut","ft","ht","mt","yt","vt","Dt","wt","gt","kt","bt","ReferenceError","Ct","St","Reflect","construct","sham","Proxy","_t","Mt","Pt","Et","Nt","dateTime","Ot","Yt","xt","It","Tt","Jt","Gt","awareOfUnicodeTokens","formatLong","Lt","Ft","Rt","qt","At","Wt","Bt","jt","Ht","Kt","Qt","Vt","Ut","$t","zt","global","__localeId__","__localeData__","Xt","Zt","er","tr","minDate","maxDate","excludeDates","includeDates","filterDate","pr","rr","nr","or","sr","ir","lr","dr","excludeTimes","includeTimes","filterTime","cr","minTime","maxTime","ur","fr","hr","mr","yr","vr","Dr","wr","kr","gr","startPeriod","endPeriod","br","Cr","yearsList","incrementYears","decrementYears","onCancel","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","renderOptions","Sr","_r","dropdownVisible","onSelectChange","renderSelectOptions","visibility","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","onSelect","setOpen","dropdownMode","renderScrollMode","renderSelectMode","Mr","monthNames","Pr","Er","useShortMonthInDropdown","Nr","Or","monthYearsList","dateFormat","scrollableMonthYearDropdown","Yr","xr","Tr","handleOnKeyDown","disabledKeyboardNavigation","isSameDay","selected","preSelection","highlightDates","selectsStart","selectsEnd","selectsRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isWeekend","isOutsideMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","getTabIndex","isInputFocused","activeElement","inline","shouldFocusDayInline","containerRef","focus","preventScroll","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","renderDayContents","getClassNames","handleMouseEnter","getAriaLabel","handleFocusDay","Ir","weekNumber","ariaLabelPrefix","Lr","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","Fr","orderInDisplay","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","onMonthClick","handleMonthNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthKeyDown","getMonthClassNames","onQuarterClick","getQuarterClassNames","showMonthYearPicker","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","Rr","timeClassName","injectTimes","intervals","openToDate","liClasses","centerLi","calcCenterPosition","monthRef","todayButton","showTimeSelectOnly","timeCaption","renderTimes","onTimeChange","offsetTop","qr","handleYearClick","yearItemNumber","onYearClick","getYearClassNames","Ar","setHours","setMinutes","timeString","customTimeInput","cloneElement","placeholder","timeInputLabel","renderTimeInput","Wr","showPopperArrow","arrowProps","Br","jr","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthAriaLabel","previousYearAriaLabel","previousYearButtonLabel","previousMonthButtonLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthAriaLabel","nextYearAriaLabel","nextYearButtonLabel","nextMonthButtonLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","monthDate","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","handleMonthMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","Hr","Kr","tabLoopRef","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","Qr","portalRoot","getElementById","portalId","setAttribute","Vr","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","targetComponent","popperOnKeyDown","Popper","modifiers","placement","popperContainer","Manager","preventOverflow","enabled","escapeWithReference","boundariesElement","Ur","$r","zr","Gr","getPreSelection","startOpen","preventFocus","focused","preventFocusTimeout","blur","cancelFocusInput","calcInitialState","lastPreSelectChange","Xr","setBlur","readOnly","preventOpenOnFocus","inputFocusTimeout","setFocus","onChangeRaw","isDefaultPrevented","Jr","strictParsing","setSelected","allowSameDay","focusSelectedMonth","onInputClick","calendar","componentNode","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInput","customInputRef","handleFocus","onInputKeyDown","autoFocus","placeholderText","autoComplete","ariaDescribedBy","ariaInvalid","ariaLabelledBy","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","onScroll","onCalendarOpen","onCalendarClose","clearPreventFocusTimeout","renderCalendar","renderDateInput","renderClearButton","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","registerLocale","setDefaultLocale","die","isDraft","DRAFT_STATE","isDraftable","DRAFTABLE","getArchtype","thing","type_","propOrOldValue","hasMap","hasSet","latest","copy_","base_","shallowCopy","descriptors","desc","deep","isFrozen","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","getCurrentScope","currentScope","usePatchesInScope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","targetObject","rootPath","assigned_","autoFreeze_","peek","getDescriptorFromProto","markChanged","prepareCopy","createProxy","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","revocable","revoke","proxy","createES5Proxy_","copyHelper","archType","hasSymbol","hasProxies","getOwnPropertyNames","deleteProperty","owner","recipe","defaultBase","self","_this","produce","_this2","hasError","ip","arg1","arg2","produceWithPatches","patches","inversePatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","currentImpl","hasChanges_","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","_defineProperty","DIRTY_PATHS","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","createEditor","editor","operations","marks","isInline","isVoid","Editor","PathRef","PointRef","RangeRef","oldDirtyPaths","oldDirtyPathKeys","dirtyPathKeys","dirtyPaths","Path","newDirtyPaths","getDirtyPaths","Transforms","addMark","Range","Text","deleteBackward","deleteForward","deleteFragment","getFragment","Node","insertBreak","always","insertSoftBreak","insertFragment","fragment","insertNode","insertText","normalizeNode","Element","voids","shouldHaveInlines","currentNode","child","isLast","loose","removeMark","levels","descendants","ancestors","previousPath","newPath","oldAncestors","newAncestors","newParent","newIndex","resultPath","_objectWithoutProperties","objectWithoutPropertiesLoose","sourceSymbolKeys","getCharacterDistance","isRTL","isLTR","codepoints","codepointsIteratorRTL","CodepointType","distance","gb12Or13","char","getCodepointType","intersects","endsWithEmojiZWJ","gb11","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","getWordDistance","dist","started","charDist","splitByCharacterDistance","isWordCharacter","remaining","nextChar","nextRemaining","char1","isLowSurrogate","char2","isHighSurrogate","charCode","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","NonBoundaryPairs","endingEmojiZWJ","endingRIs","numRIs","isElement","isAncestor","isElementList","isElementProps","isElementType","elementKey","IS_EDITOR_CACHE","above","mode","anchor","edge","hasBlocks","hasInlines","hasTexts","isBlock","isEditor","cachedIsEditor","Operation","Point","isEdge","isEmpty","isNormalizing","leaf","isText","block","pointAfterLocation","universal","Span","nodeEntries","pass","isLower","hit","emit","normalize","getDirtyPathKeys","popDirtyPath","allPaths","allPathKeys","dirtyPath","depth","hasPath","pathRef","affinity","unref","pathRefs","pointRef","pointRefs","isNewBlock","blockText","leafTextRemaining","leafTextOffset","isFirst","calcDistance","previous","pointBeforeLocation","rangeRef","rangeRefs","setNormalizing","unhangRange","endBlock","blockPath","skip","void","withoutNormalizing","isSpan","IS_NODE_LIST_CACHE","ancestor","Scrubber","childPath","common","descendant","extractProps","isNode","isNodeList","cachedResult","isNodeOperation","isOperation","isOperationList","isSelectionOperation","isTextOperation","inverse","inversePath","inverseNewPath","newProperties","properties","paths","another","av","compare","endsAfter","bs","bv","endsAt","endsBefore","equals","hasPrevious","isAfter","isBefore","isChild","isCommon","isDescendant","isParent","isPath","operationCanTransformPath","operation","relative","onp","isPoint","isAfterStart","isBeforeEnd","isBackward","isCollapsed","isExpanded","isForward","isRange","affinityAnchor","affinityFocus","_scrubber","setScrubber","isDeepEqual","omitText","isTextList","isTextProps","decorations","leaves","middle","NodeTransforms","insertNodes","hanging","isAtEnd","liftNodes","matchPath","parentNodeEntry","splitPath","mergeNodes","prevPath","commonPath","isPreviousSibling","emptyAncestor","hasSingleChildNest","emptyRef","prevNode","moveNodes","toRef","targets","removeNodes","setNodes","splitMode","endAtEndOfNode","startAtStartOfNode","hasChanges","splitNodes","deleteRange","beforeRef","voidMatch","afterPath","voidPath","afterRef","lowestPath","highestPath","unsetNodes","unwrapNodes","wrapNodes","firstPath","lastPath","commonNodeEntry","wrapperPath","wrapper","commonNode","SelectionTransforms","collapse","deselect","setPoint","setSelection","TextTransforms","furthestVoid","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startVoid","endVoid","startRef","endRef","startUnref","endUnref","inlineElementMatch","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","starts","middles","ends","starting","isInlineStart","isInlineEnd","middleRef","blockPathRef","startPoint","endPoint","truePath","preferNext","applyToDraft","_setPrototypeOf","_inheritsLoose","subClass","superClass","HashRouter","history","createHistory","resolveToLocation","currentLocation","normalizeToLocation","createLocation","forwardRefShim","forwardRef","LinkAnchor","navigate","ex","isModifiedEvent","forwardedRef","Link","RouterContext","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","exact","isActiveProp","isActive","locationProp","sensitive","styleProp","toLocation","escapedPath","classnames","joinClassnames","requiredArgs","textProps","fill","PropTypes","fontSize","fontFamily","axisThemePropType","domain","line","stroke","strokeWidth","strokeDasharray","isRequired","ticks","legend","gridThemePropType","legendsThemePropType","hidden","opacity","labelsThemePropType","dotsThemePropType","markersThemePropType","crosshairPropType","annotationsPropType","outlineWidth","outlineColor","link","outline","defaultTheme","background","axis","grid","legends","labels","dots","crosshair","annotations","lineColor","lineStrokeWidth","tooltip","borderRadius","boxShadow","basic","whiteSpace","alignItems","chip","table","tableCell","tableCellValue","fontWeight","strokeOpacity","fontProps","extendDefaultTheme","customTheme","motionConfigContext","MotionConfigProvider","animate","stiffness","damping","reactSpringConfig","presets","springConfig","mass","tension","friction","clamp","precision","velocity","useMotionConfig","useAnimatedPath","usePrevious","interpolator","interpolateString","useSpring","reset","immediate","quantizeColorScales","nivo","BrBG","PRGn","PiYG","PuOr","RdBu","RdGy","RdYlBu","RdYlGn","spectral","blues","greens","greys","oranges","purples","reds","BuGn","BuPu","GnBu","OrRd","PuBuGn","PuBu","PuRd","RdPu","YlGnBu","YlGn","YlOrBr","YlOrRd","quantizeColorScalesKeys","curvePropMapping","interpolateSinebow","basis","basisClosed","basisOpen","bundle","cardinal","cardinalClosed","cardinalOpen","catmullRom","catmullRomClosed","catmullRomOpen","linear","linearClosed","monotoneX","monotoneY","natural","stepAfter","stepBefore","curveStepBefore","curvePropKeys","lineCurvePropKeys","without","stackOrderPropMapping","ascending","descending","insideOut","none","stackOrderReverse","stackOrderPropKeys","stackOffsetPropMapping","diverging","silhouette","wiggle","stackOffsetWiggle","stackOffsetPropKeys","treeMapTilePropMapping","binary","dice","sliceDice","squarify","resquarify","treemapResquarify","treeMapTilePropKeys","defaultMargin","scaleOrdinal","useDimensions","partialMargin","margin","innerWidth","innerHeight","outerWidth","outerHeight","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","arrayWithHoles","iterableToArrayLimit","nonIterableRest","MapShim","getIndex","class_1","__entries__","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","useMeasure","measureRef","bounds","setBounds","getValueFormatter","d3TimeFormat","d3Format","useValueFormatter","themeContext","defaultPartialTheme","ThemeProvider","partialTheme","usePartialTheme","useTheme","ConditionalWrapper","containerStyle","Container","renderWrapper","isInteractive","motionStiffness","motionDamping","motionConfig","_jsx","ResponsiveWrapper","shouldRender","gradientTypes","linearGradient","x1","x2","y1","y2","stopColor","stopOpacity","PatternDots","memo","stagger","fullSize","radius","halfPadding","patternUnits","cx","cy","degreesToRadians","degrees","radiansToDegrees","radians","midAngle","arc","positionFromAngle","angle","absoluteAngleDegrees","absAngle","textPropsByEngine","svg","align","baseline","canvas","PatternLines","_spacing","spacing","_rotation","rotation","lineWidth","strokeLinecap","PatternSquares","patternTypes","patternDots","patternLines","patternSquares","defsMapping","definitions","aria-hidden","SvgWrapper","ariaLabel","isFocusable","xmlns","aria-label","aria-labelledby","aria-describedby","focusable","borderWidth","pointerEvents","CartesianMarkersItem","DotsItemSymbol","datum","labelTextAnchor","labelYOffset","animatedProps","textAnchor","scale","lineStyle","textStyle","legendPosition","legendOffsetX","legendOffsetY","legendOrientation","legendNode","legendProps","offsetX","offsetY","orientation","computeLabel","dominantBaseline","xScale","yScale","getPropertyAccessor","accessor","usePropertyAccessor","getDistance","getAngle","isCursorInRect","cursorX","cursorY","getRelativeCursor","clientX","clientY","arrayWithoutHoles","iterableToArray","nonIterableSpread","gradientKeys","patternKeys","isMatchingDef","dataKey","pick","bindDefs","colorKey","targetKey","boundDefs","generatedIds","rules","nodeColor","inheritedId","allColors","inheritedDef","colorStop","argument","argStr","_classCallCheck","Constructor","auto","basePlacements","viewport","popper","reference","variationPlacements","acc","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","phase","elements","removeAttribute","initialStyles","strategy","arrow","property","attribute","requires","getBasePlacement","getLayoutRect","clientRect","offsetLeft","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","getOffsetParent","isFirefox","css","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","_options$element","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","_options$scroll","_options$resize","resize","scrollParents","scrollParent","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","isScrollParent","_getComputedStyle","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","firstClippingParent","clippingRect","accRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","getNodeScroll","modifier","depModifier","debounce","pending","DEFAULT_OPTIONS","areValidElements","_len","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","cleanupModifierEffects","orderModifiers","existing","mergeByName","_ref3$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","eventListeners","computeStyles","applyStyles","flip","hide","SelectorEngine","TRANSITION_END","getUID","getSelector","hrefAttr","getSelectorFromElement","getElementFromSelector","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","transitionDuration","triggerTransitionEnd","Event","getElement","emulateTransitionEnd","emulatedDuration","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","isVisible","elementStyle","parentNodeStyle","findShadowRoot","reflow","getjQuery","jQuery","defineJQueryPlugin","JQUERY_NO_CONFLICT","execute","elementMap","instanceMap","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","getUidEvent","getEvent","findHandler","delegationSelector","uidEventList","normalizeParams","originalTypeEvent","delegationFn","delegation","originalHandler","typeEvent","getTypeEvent","addHandler","oneOff","wrapFn","previousFn","domElements","EventHandler","bootstrapDelegationHandler","bootstrapHandler","removeHandler","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","keyHandlers","isNative","bubbles","nativeDispatch","evt","jQueryEvent","CustomEvent","cancelable","Data","dispose","_queueCallback","isAnimated","VERSION","NAME","DATA_KEY","EVENT_KEY","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","_destroyElement","jQueryInterface","Alert","handleDismiss","alertInstance","SELECTOR_DATA_TOGGLE","toggle","_element","Button","normalizeData","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","pureKey","getDataAttribute","DATA_API_KEY","Default","interval","keyboard","slide","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE_ITEM","POINTER_TYPE_TOUCH","nextWhenVisible","clearInterval","cycle","_config","setInterval","activeIndex","_getItemIndex","_items","_getConfig","_handleSwipe","absDeltax","_addEventListeners","_addTouchEventListeners","itemImg","_keydown","_getItemByOrder","isNext","isPrev","lastItemIndex","itemIndex","_triggerSlideEvent","targetIndex","fromIndex","relatedTarget","_setActiveIndicatorElement","activeIndicator","indicators","_updateInterval","_activeElement","elementInterval","defaultInterval","_slide","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","eventDirectionName","_orderToDirection","triggerSlidEvent","carouselInterface","Carousel","dataApiClickHandler","slideIndex","getAttribute","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","toggleList","elem","filterElement","foundElem","show","_isTransitioning","actives","tempActiveData","activesData","elemActive","Collapse","dimension","_triggerArray","capitalizedDimension","scrollSize","triggerArrayLength","setTransitioning","_getDimension","_getParent","_addAriaAndCollapsedClass","triggerArray","isOpen","collapseInterface","triggerData","selectorElements","ESCAPE_KEY","SPACE_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","popperConfig","autoClose","_menu","Dropdown","isDisplayStatic","_completeHide","_getMenuElement","_getPlacement","parentDropdown","_detectNavbar","_getOffset","popperData","_getPopperConfig","defaultBsPopperConfig","_selectMenuItem","dropdownInterface","clearMenus","toggles","isMenuTarget","getParentFromElement","dataApiKeydownHandler","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","documentWidth","_disableOverFlow","_setElementAttributes","calculatedValue","actualValue","_resetElementAttributes","clickCallback","EVENT_MOUSEDOWN","_getElement","backdrop","_append","_emulateAnimation","backdropTransitionDuration","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","_isShown","showEvent","scrollBarHide","htmlElement","handleUpdate","_initializeBackDrop","_isAnimated","_showElement","modalBody","_enforceFocus","_setEscapeEvent","_setResizeEvent","_hideModal","scrollBarReset","_showBackdrop","_triggerBackdropTransition","isModalOverflowing","modalTransitionDuration","_adjustDialog","getScrollBarWidth","isBodyOverflowing","_resetAdjustments","Modal","OPEN_SELECTOR","_enforceFocusOnElement","Offcanvas","allReadyOpen","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","DefaultAllowlist","area","div","em","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","sup","strong","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","domParser","allowlistKeys","elName","attributeList","allowedAttributes","attr","allowedAttributeList","attrName","regExp","attrRegex","allowedAttribute","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","template","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","getTipElement","tip","isWithContent","shadowRoot","isInTheDom","tipId","attachment","_getAttachment","prevHoverState","_popper","setContent","setElementContent","getTitle","updateAttachment","_addAttachmentClass","_setListeners","triggers","eventIn","eventOut","_fixTitle","originalTitleType","_enter","_leave","_isWithActiveTrigger","_activeTrigger","dataAttributes","dataAttr","_getDelegateConfig","_cleanTipClass","tabClass","tClass","_handlePopperPlacementChange","Tooltip","_getContent","Popover","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","METHOD_POSITION","autoMethod","_scrollElement","offsetMethod","offsetBase","targetSelector","targetBCR","_getScrollTop","_getScrollHeight","_getOffsetHeight","_process","maxScroll","_scrollHeight","_targets","_activeTarget","_offsets","_activate","queries","_selector","listGroup","navItem","_clear","ScrollSpy","spy","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","Tab","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","_maybeScheduleHide","_hasMouseInteraction","_onInteraction","_clearTimeout","Toast","_defineProperties","descriptor","_createClass","protoProps","staticProps","specifier","toInteger","dirtyNumber","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","atan2","cos","sin","sqrt","epsilon","pi","PI","halfPi","tau","acos","asin","_inherits","_typeof","_possibleConstructorReturn","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","Super","NewTarget","scheme","interpolateRgbBasis","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_getPrototypeOf","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","receiver","_excluded$2","isCustomPropRE","dangerousStyleValue","isUnitlessNumber","attributeCache","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","strokeDashoffset","strokeMiterlimit","prefixKey","_excluded$1","domTransforms","pxTransforms","degTransforms","addUnit","isValueIdentity","AnimatedStyle","xyz","deg","FluidTransform","AnimatedObject","_get","_excluded","Globals","unstable_batchedUpdates","animated","createHost","applyAnimatedValues","isFilterElement","names","hasAttribute","textContent","setProperty","createAnimatedStyle","getComponentProps","autoBom","Blob","MouseEvent","HTMLAnchorElement","saveAs","t0","t1","newInterval","floori","offseti","stop","setTime","isFinite","computeResourceEditable","resourceEditable","eventResourceEditable","filterResources","calendarProps","needsResourceData","resourceStore","filterResourcesWithEvents","resourceEntityExpansions","doFilterResourcesWithEvents","eventInstances","hasEvents","resourceIds","computeHasEvents","filterEventInstancesInRange","resourceId","resource","parentId","computeAncestorHasEvents","buildResourceEventUis","injectResourceEventUis","resourceEventUis","eventUi","origEventUi","injectResourceEventUi","registerResourceSourceDef","getResourceSourceDef","getResourceSourceDefs","RESOURCE_SOURCE_REFINERS","resources","parseResourceSource","inputObj","warnUnknownProps","buildResourceSourceMeta","reduceResourceSource","createSource","initialResources","refetchResourcesOnNavigate","resourceSourceInput","doesSourceIgnoreRange","handleRangeChange","resourceSource","rawResources","PRIVATE_ID_PREFIX","RESOURCE_REFINERS","eventEditable","parseResource","getPublicId","reduceResourceStore","existingStore","nextStore","receiveRawResources","resourceHash","childResourceId","removeResource","existingResource","setResourceProp","propValue","setResourceExtendedProp","EVENT_REFINERS","_resource","oldResource","ResourceApi","internalResource","getParent","getChildren","thisResourceId","childApis","internal","collapseEventColor","addResource","scrollTo","resourceApi","getResourceById","rawResource","getResources","resourceApis","getTopLevelResources","refetchResources","filterConfig","filterConstraints","setResources","newSourceInput","DEFAULT_RESOURCE_ORDER","ResourceLabelRoot","resourceLabelClassNames","resourceLabelContent","resourceLabelDidMount","resourceLabelWillUnmount","publicArg","buildDateFormat","renderResourceRow","datesAboveResources","renderDayAndResourceRows","renderResourceAndDayRows","resourceCells","ResourceCell","buildTr","dateCells","renderDateCell","keyPostfix","indicesById","ids","dayTableModel","resourceIndex","ResourceIndex","rowCells","dateCol","resourceCol","computeCol","dateI","resourceI","computeColRanges","dateStartI","dateEndI","AbstractResourceDayTableModel","NO_SEGS","joinDateSelection","joinSegs","joinBusinessHours","joinFgEvents","joinBgEvents","joinEventDrags","joinInteractions","joinEventResizes","joinProps","propSets","resourceDayTable","dateSelectionSets","businessHoursSets","fgEventSets","bgEventSets","resourceCnt","transformedSegs","segGroups","transformSeg","expandSegs","anyInteractions","resourceDayTableModel","flattenResources","orderSpecs","buildRowNodes","groupSpecs","isVGrouping","expansions","expansionDefault","flatNodes","flattenNodes","maxDepth","resourceNodes","nodeHash","resourceFields","buildResourceFields","insertResourceNodeInSiblings","buildResourceNodes","builtNodes","resourceNode","insertResourceNode","buildHierarchy","complexNodes","rowSpans","complexNode","group","firstRowIndex","rowSpanIndex","firstRow","hasChildren","groupSpec","groupNode","newGroupIndex","groupValue","ensureGroupNodes","siblings","isGroupsEqual","group0","group1","reduceResourceEntityExpansions","eventMutation","hit0","hit1","resource0","resource1","resourceMutation","matchResourceId","setResourceId","resourceId0","resourceId1","combinedProps","sets","ResourceSplitter","newResource","calendarData","buildResourceApis","initRange","initInterpolator","affix$1","affix","localesAll","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","arrLen","extend","createUTC","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","mom","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTime","withoutSuffix","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","setFullYear","createUTCDate","setUTCFullYear","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","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","kFormat","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","localeFamilies","commonPrefix","arr1","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","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","Duration","quarters","quarter","isoWeek","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","createAdder","period","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","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","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","isDSTShifted","proto$1","get$1","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","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","bimap","r0","r1","polymap","bisect","untransform","piecewise","interpolateValue","rescale","clamper","invert","interpolateNumber","rangeRound","interpolateRound","continuous","baseGet","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","$node","getAnimated","setAnimated","getPayload","Animated","AnimatedValue","elapsedTime","lastPosition","lastVelocity","v0","durationProgress","AnimatedString","_string","_toString","goal","TreeContext","dependencies","_makePayload","_addToPayload","AnimatedArray","makeAnimated","getAnimatedType","withAnimated","hasInstance","isReactComponent","givenProps","givenRef","instanceRef","useCallback","updateRef","getAnimatedState","PropsObserver","observerRef","lastObserver","usedProps","cacheKey","components","_applyAnimatedValues","_createAnimatedStyle","_getComponentProps","hostConfig","displayName","getDisplayName","pendingCount","historyContext","createNamedContext","Router","computeRootMatch","isExact","pathname","_pendingLocation","unlisten","staticContext","HistoryContext","Lifecycle","onMount","onUpdate","onUnmount","cacheCount","generatePath","pathToRegexp","compilePath","pretty","Redirect","computedMatch","prevLocation","locationsAreEqual","pathCache","Route","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","methodName","invariant","Switch","useHistory","useLocation","useParams","freeSelf","freeGlobal","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","containerEl","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","ctrlKey","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","handleScroll","pageX","prevScrollX","prevPageX","pageY","prevScrollY","prevPageY","isTouch","origPageX","origPageY","onWindowTouchMove","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","touches","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","setIsVisible","needsRevertAnimation","doRevertAnimation","finalSourceElRect","transition","getMirrorEl","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","computeClientRect","getEventTarget","ScrollGeomCache","isEnabled","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","WindowScrollGeomCache","ElementScrollGeomCache","query","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","pointer","mirror","startDelay","handleDistanceSurpassed","onPointerMove","autoScroller","onPointerUp","tryStopDrag","PointerDragging","ElementMirror","AutoScroller","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","tagName","dragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","isHitsEqual","offsetTrackers","interactionSettings","OffsetTracker","bestHit","offsetTracker","originLeft","originTop","componentId","buildDatePointApiWithContext","hitDragging","FeaturefulElementDragging","HitDragging","dragSelection","canSelect","selectable","selectLongPressDelay","longPressDelay","getComponentTouchDelay","handleHitUpdate","isFinal","isInvalid","dateSpan0","dateSpan1","joinHitsIntoSelection","selectMinDistance","dragScroll","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","eventDragMinDistance","eventLongPressDelay","fixedMirrorParent","dragRevertDuration","receivingOptions","droppable","massagers","massager","computeEventMutation","displayDrag","clearDrag","updatedEventApi","eventChangeArg","transformed","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","EventDragging","SELECTOR","nextContext","prevContext","initialCalendar","draggingSegEl","draggingSeg","querySegEl","isFromStart","computeMutation","isRecentPointerDateSelect","matchesCancel","matchesEvent","selectInfo","onDocumentPointerDown","unselectCancel","onDocumentPointerUp","documentPointer","calendarState","unselectAuto","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","defProps","computeEventForDateSpan","finalView","dataAttrPrefix","prefixedName","getEmbeddedElData","getDragMetaFromEl","dropAccept","appendTo","ExternalElementDragging","eventData","mirrorSelector","currentMirrorEl","handlePointerMove","containerOrSettings","InferredElementDragging","ctor","prot","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","labelFormat","slotLabelFormat","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","slatMetas","slatMeta","DEFAULT_WEEK_NUM_FORMAT","allDaySplitter","AllDaySplitter","headerElRef","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","frameHeight","weekNumbers","renderTableRowAxis","rowHeight","allDayClassNames","allDayContent","renderAllDayInner","allDayDidMount","allDayWillUnmount","handleSlatCoords","renderSimpleLayout","headerRowContent","timeContent","renderHScrollLayout","dayMinWidth","ScrollGrid","chunks","contentArg","isNowIndicator","nowIndicator","TimeBodyAxis","nowIndicatorTop","safeComputeTop","colGroups","getAllDayMaxEventProps","dayMaxEvents","dayMaxEventRows","slotDuration","startOfDayDate","timeMs","computeTimeTop","computeDateTop","when","slatIndex","slatRemainder","slatCoverage","slatElRefs","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","minHeight","TimeColsSlatsBody","updateSizing","onCoords","elMap","TimeColsSlatsCoords","splitSegsByCol","segsByCol","splitInteractionByCol","byRow","renderPlainFgSegs","buildPositioning","segInputs","hierarchy","hiddenGroups","web","buildNode","cacheable","nextLevelRes","buildNodes","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","lateralStart","lateralEnd","findNextLevelSegs","nextLevelNodes","buildWeb","segRects","topLevelNodes","processNode","stackDepth","stackForward","processNodes","webToRects","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","newThickness","stretchWeb","siblingRange","cmpDescPressures","extractNode","keyFunc","workFunc","DEFAULT_TIME_FORMAT","isShort","isSelectMirror","selectMirror","mirrorSegs","interactionAffectedInstances","sortedFgSegs","eventOrder","renderFillSegs","renderFgSegs","renderNowIndicator","nowIndicatorSegs","TimeColMisc","segIsInvisible","renderPositionedFgSegs","eventMaxStack","eventShortHeight","eventOrderStrict","eventMinHeight","computeFgSegPlacements","computeSegVCoords","segPlacements","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","TimeColEvent","hiddenGroup","segEntries","positionCss","segEntry","TimeColMoreLink","vcoords","segHCoords","shouldOverlap","slotEventOverlap","nearCoord","farCoord","hiddenInstances","segVCoords","splitFgEventSegs","splitBgEventSegs","splitBusinessHourSegs","splitNowIndicatorSegs","splitDateSelectionSegs","cellElRefs","fgEventSegsByRow","bgEventSegsByRow","businessHourSegsByRow","nowIndicatorSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","cell","TimeCol","updateCoords","onColCoords","processSlotOptions","onScrollTopRequest","handleColCoords","colCoords","onSlatCoords","TimeColsSlats","TimeColsContent","scrollResponder","snapDuration","snapsPerSlot","colIndex","slatTop","slatHeight","partial","snapIndex","dayDate","snapDurationOverride","dayRanges","buildDayRanges","slicer","DayTimeColsSlicer","timeColsRef","TimeCols","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","slatTime","slatIterator","labelInterval","slotsPerLabel","computeLabelInterval","metas","buildTimeColsModel","slotLabelInterval","hasAttachedAxis","hasDetachedAxis","headerContent","dayHeaders","allDaySlot","colGroupNode","renderRowIntro","headerAlignElRef","timeGridContent","DayTimeCols","TimeColsView","OPTION_REFINERS","textId","cellId","listDayFormat","sideText","listDaySideFormat","sideNavLinkAttrs","timeHeaderId","eventHeaderId","dateHeaderId","interactiveAttrs","renderEventInnerContent","doAllDay","headers","buildTimeContent","computeDateVars","eventStoreToSegs","_eventStoreToSegs","dateHeaderIdRoot","setRootEl","dayDates","renderSegList","renderEmptyMessage","noEventsClassNames","noEventsContent","renderNoEventsInner","noEventsDidMount","noEventsWillUnmount","segsByDay","groupSegsByDay","innerNodes","daySegs","ListViewHeaderRow","ListViewEventRow","eventRangesToSegs","eventRangeToSegs","viewEnd","reactIs","REACT_STATICS","childContextTypes","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","bodyContent","splitSegsByRow","splitSegsByFirstCol","byCol","splitInteractionByRow","renderTopInner","forceDayTop","dayNumberId","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","TableListItemEvent","TableBlockEvent","dayElRef","rootDataAttrs","weekElRef","weekClassNames","TableCellTop","fgContentElRef","fgContent","marginTop","moreMarginTop","TableCellMoreLink","bgContent","frameElRefs","fgElRefs","segHarnessRefs","framePositions","maxContentHeight","eventInstanceHeights","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","computeFgSegPlacement","singleColPlacements","multiColPlacements","moreCnts","moreMarginTops","normalFgNodes","mirrorFgNodes","colPlacements","topsByInstanceId","absoluteTop","buildAbsoluteTopHash","buildMirrorPlacements","TableCell","showDayNumbers","currentProps","leftRightCss","isExternalSizingChange","frameEls","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","TableRow","rowRefs","limitViaBalanced","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","tableRef","Table","buildDayTableModel","DayTable","TableView","endOfWeek","isArrayBuffer","isFormData","FormData","isArrayBufferView","isView","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","thisArg","stripBOM","warning","RELEASE_DATE","PRESET_LICENSE_KEYS","CSS","borderStyle","borderTopRightRadius","schedulerLicenseKey","currentUrl","purchaseDate","releaseDate","mockSchedulerReleaseDate","processLicenseKey","dateutil","gettext","IMPLEMENTED","Frequency","Time","DateTime","rfcString","outValue","bymonth","RRule","rrulevals","_exdateHash","RRuleSet","RRULE_EVENT_REFINERS","rrule","exrule","exdate","_rtlScrollSystem","WHEEL_EVENT_NAMES","isScrolling","isTouching","isRecentlyWheeled","isRecentlyScrolled","wheelWaiter","_handleWheelWaited","scrollWaiter","_handleScrollWaited","startScroll","handleWheel","endScroll","getScrollFromLeftEdge","getRtlScrollSystem","setScrollFromLeftEdge","system","detectRtlScrollSystem","_isStickySupported","IS_MS_EDGE","usingRelative","elGeoms","queryElGeoms","viewportWidth","viewportHeight","elDestinations","naturalBound","parentBound","parentWidth","parentHeight","assignRelativePositions","computeElDestinations","textAlign","assignStickyPositions","computeStickySupported","getStickySupported","canvasOrigin","getScrollCanvasOrigin","elRect","computedStyles","viewportTop","viewportLeft","viewportRight","elGeom","destLeft","destTop","xScrollbarWidth","yScrollbarWidth","handleScroller","scrollerRef","isScrollbarOnLeft","scrollEls","scrollListeners","bindScroller","scrollListener","isWheel","masterEl","assignMaster","otherEl","forceScrollLeft","forceScrollTop","compileColGroupStats","compileColGroupStat","isColGroupStatsEqual","renderMicroColGroups","clippedScrollerRefs","chunkElRefs","_handleChunkEl","stickyScrollings","scrollSyncersBySection","scrollSyncersByColumn","rowUnstableMap","rowInnerMaxHeightMap","anyRowHeightsChanged","recentSizingCnt","shrinkWidths","forceXScrollbars","sectionRowMaxHeights","isForcedResize","sectionRowMaxHeightsChanged","allowSizing","otherState","computeSectionRowMaxHeights","computeShrinkWidths","updateStickyScrolling","handleRowHeightChange","rowEl","isStable","innerMaxHeight","getRowInnerMaxHeight","colGroupStats","colGroup","microColGroupNodes","stat","getDims","colGroupStat","totalColWidth","renderMacroColGroup","sectionIndex","renderChunk","chunkIndex","rowHeights","sectionCnt","chunksPerSection","isVScrollSide","isLastSection","allowXScrolling","allowYScrolling","chunkVGrow","totalColMinWidth","getStickyScrolling","initStickyScrolling","destroyStickyScrolling","getScrollSyncersBySection","initScrollSyncer","destroyScrollSyncer","getScrollSyncersByColumn","updateScrollSyncers","destroyScrollSyncers","lastSizingDate","SCROLLGRID_RESIZE_INTERVAL","hasShrinkCol","newHeightMap","sectionI","assignableHeights","rowHeightsByChunk","chunkI","chunkEl","isEqualRowCnt","rowHeightsAcrossChunks","chunkHeightSums","sumNumbers","maxTotalSum","rowInChunkCnt","rowInChunkTotalHeight","rowInChunkHeightOthers","rowInChunkHeightFirst","rowInChunkHeights","sideScrollI","lastSectionI","currentScrollers","scrollerEls","argsByKey","stickyScrolling","scrollElsBySection","scrollElsByColumn","scrollElMap","getChunkConfigByIndex","scrollSyncer","numbers","sum","innerHeights","getElHeight","colGroupConfig","sumColProp","COL_GROUP_STAT_EQUALITY","stat0","stat1","ScrollSyncer","MAX_TIMELINE_SLOTS","buildTimelineDateProfile","allOptions","tDateProfile","validateLabelAndSlot","ensureLabelInterval","trySlotDuration","ensureSlotDuration","rawFormats","format1","format2","weekNumbersVisible","format0","currentRangeAs","computeHeaderFormats","headerFormats","rawFormat","isTimeScale","slotUnit","emphasizeWeeks","rawSnapDuration","timeWindowMs","normalizedStart","normalizeDate","normalizedEnd","normalizedRange","slotDates","snapDiff","snapDiffToIndex","snapIndexToDiff","snapCnt","slotCnt","isWeekStarts","prevWeekNumber","slotDate","isWeekStart","buildIsWeekStarts","cellRows","slotAsDays","guessedSlotUnit","rowUnitsFromFormats","leadingCell","isLastRow","isSuperRow","newCell","rowUnit","colspan","buildCellObject","weekStart","buildCellRows","normalDate","tryLabelInterval","buildCellNavLinkAttrs","rowLevel","rowInnerHeight","cellDate","rowInnerHeights","slatRootEl","slatEls","outerCoordCache","innerCoordCache","isDateInRange","dateToCoord","slotCoverage","computeDateSnapCoverage","slotIndex","rangeToCoords","durationToCoord","coord","coordFromLeft","snapDiffInt","snapCoverage","coordToCss","hcoord","coordsToCss","hcoords","timerUnit","onMaxCushionWidth","computeMaxCushionWidth","isEm","isDay","onScrollLeftRequest","coords","positionToHit","slatWidth","localSnapIndex","computeSegHCoords","timelineCoords","highlightSeg","eventResizeSegs","renderSegs","dayRange","normalizeRange","harnessElRefs","moreElRefs","moreLinkHeights","slicedProps","fgSegs","crudePlacements","hiddenPlacements","moreLinkInputs","moreLinkCrudePlacements","extractSeg","sortedSegs","visiblePlacements","segIndex","eventMinWidth","fgPlacements","fgHeight","innerEl","onHeightChange","moreEl","syncParentMinHeight","isoStr","slatsRef","handeEl","handleCoords","slatHit","scrollGridRef","slotCushionMaxWidth","handleScrollLeftRequest","handleMaxCushionWidth","slotMinWidth","slatCols","buildSlatCols","computeFallbackSlotMinWidth","ExpanderIcon","onExpanderClick","iconClassNames","colSpec","cellContent","renderResourceInner","cellClassNames","cellDidMount","cellWillUnmount","isMain","renderGroupInner","rowSpan","colSpecs","innerInnerRef","labelClassNames","labelContent","renderCellInner","labelDidMount","labelWillUnmount","spreadsheetColCnt","resizerElRefs","_handleColResizerEl","colDraggings","superHeaderRendering","rowNodes","headerClassNames","headerDidMount","headerWillUnmount","isLastCol","resizerEl","initColResizing","onColWidthChange","ElementDraggingImpl","allCells","resourceLaneContent","handleHeightChange","resourceLaneClassNames","resourceLaneDidMount","resourceLaneWillUnmount","renderingHooks","laneClassNames","laneContent","laneDidMount","laneWillUnmount","rowElRefs","fallbackBusinessHours","onRowHeightChange","onRowCoords","rowNode","computeHasResourceBusinessHours","resourceSplitter","bgSlicer","handleRowCoords","rowCoords","hasResourceBusinessHours","bgLaneProps","bgSlicedProps","rowIndex","timeBodyScrollerElRef","spreadsheetHeaderChunkElRef","ensureScrollGridResizeId","resourceAreaWidthOverride","ensureScrollGridResize","spreadsheetHeaderRows","timeHeaderContent","spreadsheetBodyRows","timeBodyContent","resourceAreaWidth","spreadsheetCols","timeCols","forceTimeScroll","forceResourceScroll","getResourceScroll","initSpreadsheetResizing","destroySpreadsheetResizing","spreadsheetHeadEl","spreadsheetResizerDragging","newWidth","processColOptions","hasNesting","layoutRef","renderedRowNodes","buildRowIndex","layout","rowId","fromBottom","handleColWidthChange","colWidths","spreadsheetColWidths","resourcesInitiallyExpanded","buildSpreadsheetCols","renderSpreadsheetRows","getSnapshotBeforeUpdate","resourceScroll","queryResourceScroll","snapshot","trBottoms","elBottom","rowIdToIndex","forcedWidths","fallbackWidth","allColSpecs","resourceAreaColumns","resourceAreaHeaderContent","resourceAreaHeaderClassNames","resourceAreaHeaderDidMount","resourceAreaHeaderWillUnmount","plainColSpecs","groupColSpecs","resourceGroupLabelClassNames","resourceGroupLabelContent","resourceGroupLabelDidMount","resourceGroupLaneWillUnmount","mainColSpec","hGroupField","resourceGroupField","resourceGroupLabelWillUnmount","resourceGroupLaneClassNames","resourceGroupLaneContent","resourceGroupLaneDidMount","plainOrderSpecs","resourceOrder","orderSpec","isGroup","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultWidth","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","pattern","findKey","valueCallback","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","hashIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","nextKeys","replaceState","goBack","goForward","unblock","listen","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","lastIndexOf","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextEntries","canGo","startOfUTCWeek","dirtyDate","localeWeekStartsOn","weekStartsOn","defaultWeekStartsOn","RangeError","setUTCDate","setUTCHours","Parent","Class","_cache","Wrapper","tooltipStyle","translate","TooltipWrapper","previousPosition","hasDimension","Chip","BasicTooltip","enableChip","renderContent","formatValue","tableStyle","borderCollapse","column","TableTooltip","CrosshairLine","x0","y0","xLine","yLine","Crosshair","TooltipActionsContext","showTooltipAt","showTooltipFromEvent","hideTooltip","hiddenTooltipState","TooltipStateContext","useTooltipHandlers","actions","useTooltip","useTooltipState","isVisibleTooltipState","TooltipProvider","componentWillMount","componentWillReceiveProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","setStatic","BaseComponent","shallowEqual","objA","objB","keysA","keysB","possibleConstructorReturn","compose","funcs","withPropsOnChange","createFactory","shouldMap","shouldMapOrKeys","WithPropsOnChange","computedProps","propsMapper","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","polyfill","DefaultProps","ownerProps","setPropTypes","_assertThisInitialized","tickFormat","tickStep","formatSpecifier","exponent","precisionPrefix","formatPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","tickIncrement","getTimezoneOffsetInMilliseconds","utcDate","startOfUTCISOWeek","formatDecimalParts","series","s0","s1","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","keyList","hasProp","hasElementType","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m2","define","channels","displayable","formatHsl","toExponential","coefficient","toLocaleString","freeExports","freeModule","freeProcess","process","types","binding","hue","constant","gamma","nogamma","exponential","definition","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","maxSize","_maxSize","_size","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","setCache","getCache","normalizePath","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","safe","segments","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","areaStart","_line","areaEnd","lineStart","_point","lineEnd","lineTo","closePath","moveTo","buildFormatLongFn","canOverflow","skipOverflowHiddenElements","isScrollable","frame","frameElement","alignNearest","scrollingEdgeStart","scrollingEdgeEnd","scrollingSize","scrollingBorderStart","scrollingBorderEnd","elementEdgeStart","elementEdgeEnd","elementSize","windowWithViewport","scrollMode","checkBoundary","scrollingElement","frames","cursor","viewportX","scrollX","viewportY","scrollY","targetHeight","targetWidth","targetTop","targetRight","targetBottom","targetLeft","targetBlock","targetInline","computations","frameStyle","blockScroll","inlineScroll","scrollbarHeight","isOptionsObject","scrollIntoView","isTargetAttached","isConnected","behavior","compute","computeOptions","getOptions","canSmoothScroll","defaultBehavior","IS_REACT_VERSION_17_OR_ABOVE","IS_IOS","IS_APPLE","IS_ANDROID","IS_FIREFOX","IS_SAFARI","IS_EDGE_LEGACY","IS_CHROME","IS_CHROME_LEGACY","IS_FIREFOX_LEGACY","IS_QQBROWSER","IS_UC_MOBILE","IS_WECHATBROWSER","CAN_USE_DOM","HAS_BEFORE_INPUT_SUPPORT","globalThis","useSlateStatic","ReactEditor","isTrailing","isLineBreak","TextString","getTextContent","textWithTrailing","ZeroWidthString","NODE_TO_INDEX","NODE_TO_PARENT","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","ELEMENT_TO_NODE","NODE_TO_ELEMENT","NODE_TO_KEY","EDITOR_TO_KEY_TO_ELEMENT","IS_READ_ONLY","IS_FOCUSED","IS_COMPOSING","IS_ON_COMPOSITION_END","EDITOR_TO_USER_SELECTION","EDITOR_ON_COMPOSITION_TEXT","EDITOR_TO_ON_CHANGE","NODE_TO_RESTORE_DOM","PLACEHOLDER_SYMBOL","Leaf","renderLeaf","placeholderRef","placeholderEl","editorEl","placeholderProps","maxWidth","userSelect","textDecoration","contentEditable","renderPlaceholder","MemoizedLeaf","DefaultLeaf","shallowCompare","obj2","isDecoratorRangeListEqual","rangeOwnProps","otherOwnProps","useContentKey","contentKeyRef","updateAnimationFrameRef","setForceRerenderCounter","cancelAnimationFrame","SlateText","KEY_TO_ELEMENT","MemoizedText","renderElement","useReadOnly","useChildren","getDirection","Tag","MemoizedElement","DefaultElement","EditorContext","DecorateContext","SelectedContext","decorate","isLeafBlock","sel","ds","HOTKEYS","bold","moveBackward","moveForward","moveWordBackward","moveWordForward","extendBackward","extendForward","italic","splitBlock","undo","APPLE_HOTKEYS","moveLineBackward","moveLineForward","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","redo","transposeCharacter","WINDOWS_HOTKEYS","generic","apple","windows","isGeneric","isKeyHotkey","isApple","isWindows","isBold","isCompose","isMoveBackward","isMoveForward","isDeleteBackward","isDeleteForward","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","isExtendBackward","isExtendForward","isExtendLineBackward","isExtendLineForward","isItalic","isMoveLineBackward","isMoveLineForward","isMoveWordBackward","isMoveWordForward","isRedo","isSoftBreak","isSplitBlock","isTransposeCharacter","isUndo","ReadOnlyContext","SlateContext","useSlate","getDefaultView","isDOMElement","isDOMNode","isDOMSelection","isDOMText","getEditableChildAndIndex","triedForward","triedBackward","isDOMComment","getEditableChild","getPlainText","domNode","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","Children","DefaultPlaceholder","defaultDecorate","defaultScrollSelectionIntoView","leafEl","domRange","hasTarget","hasEditableTarget","isTargetInsideNonReadonlyVoid","slateNode","isEventHandled","shouldTreatEventAsHandled","isDOMEventHandled","getDiffOffsets","getDiffStart","prevLength","nextLength","getDiffEnd","sliceText","getTextInsertion","prevText","nextText","textDiff","removeText","diffText","normalizeTextInsertionRange","insertionRange","characterBeforeAnchor","characterAfterAnchor","Key","isComposing","findPath","findDocumentOrShadowRoot","isFocused","isReadOnly","domSelection","hasDOMNode","insertData","insertFragmentData","insertTextData","setFragmentData","toDOMNode","toDOMPoint","domPoint","toDOMRange","domAnchor","domFocus","isStartAtZeroWidth","startNode","startEl","isEndAtZeroWidth","endNode","endEl","toSlateNode","domEl","findEventRange","exactMatch","suppressThrow","toSlatePoint","normalizeDOMPoint","nearestNode","textNode","potentialVoidNode","voidNode","leafNode","contents","toSlateRange","anchorNode","anchorOffset","focusNode","focusOffset","hasRange","AndroidInputManager","restoreDOM","mutations","reconcileMutations","mutationData","addedNodes","removedNodes","insertedText","characterDataMutations","addedNode","removedNode","textInsertion","gatherMutationData","isReplaceExpandedSelection","combineInsertedText","parentDOMNode","isRemoveLeafNodes","replaceExpandedSelection","removeLeafNodes","useMutationObserver","mutationObserver","MUTATION_OBSERVER_CONFIG","findClosestKnowSlateNode","useRestoreDom","receivedUserInput","mutatedNodes","mutated","nodesToRestore","characterDataOldValue","useAndroidInputManager","animationFrameRef","onUserInput","useTrackUserInput","restoreDom","inputManager","isReconciling","FocusedContext","SlateSelectorContext","Slate","unmountRef","slateRef","selectorContext","getSlate","getSelectorContext","handleSelectorChange","onContextChange","setContext","setIsFocused","doRectsIntersect","compareRect","areRangesSameLine","withReact","parentBlockEntry","parentElementRange","currentLineRange","parentRangeBoundary","parentRange","findCurrentLineRange","getMatches","attach","zw","isNewline","encoded","decoded","decodeURIComponent","lines","ReactDOM","Editable","onDOMBeforeInput","isUpdatingSelection","latestElement","hasDomSelection","editorElement","hasDomSelectionInEditor","slateRange","newDomRange","onDOMSelectionChange","anchorNodeSelectable","focusNodeSelectable","scheduleOnDOMSelectionChange","spellCheck","autoCorrect","autoCapitalize","suppressContentEditableWarning","wordWrap","onCopy","onCut","onCompositionEnd","setIsComposing","onCompositionUpdate","onCompositionStart","onPaste","clipboardData","getClipboardData","scrollSelectionIntoView","deferredOperations","hasInsertPrefixInCompositon","isDraggingInternally","inputType","native","lastText","NodeFilter","selectionRef","toRestore","zindex","onBeforeInput","onInput","leafPath","currentTextNode","onDragOver","onDragStart","onDrop","draggedRange","onDragEnd","nativeEvent","Hotkeys","maybeHistoryEditor","isPlainTextOnlyPaste","baseSet","baseHas","_k","_x2","_y2","Cardinal","custom","StyleSheet","_insertTag","tags","prepend","nextSibling","insertBefore","isSpeedy","speedy","ctr","nonce","hydrate","rule","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","fromCharCode","replacement","indexof","charat","begin","strlen","sizeof","combine","character","characters","return","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","compile","rulesets","pseudo","points","declarations","atrule","variable","scanning","ampersand","comment","declaration","ruleset","post","serialize","rulesheet","getRules","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","createCache","ssrStyles","head","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","collection","middleware","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","murmur2","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","identifierName","hashString","EmotionCacheContext","CacheProvider","withEmotionCache","ThemeContext","typePropName","createEmotionProps","Emotion","cssProp","jsx","argsLength","createElementArgArray","cls","toAdd","ClassNames","_len2","_key2","ele","_isNativeReflectConstruct","applyPrefixToName","cleanValue","cleanCommonProps","clearValue","getStyles","hasValue","isMulti","selectOption","selectProps","easeOutCubic","animatedScrollTo","change","increment","currentTime","animateScroll","isTouchCapable","createEvent","passiveOptionAccessed","supportsPassiveEvents","getMenuPlacement","menuEl","shouldScroll","isFixedPosition","excludeStaticParent","overflowRx","docEl","defaultState","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","PortalPlacementContext","getPortalPlacement","MenuPlacer","_Component","_super","maxMenuHeight","getPlacement","_this$props","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getUpdatedProps","placerProps","noticeCSS","_ref5","_ref5$theme","baseUnit","neutral40","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","LoadingMessage","_templateObject","MenuPortal","_Component2","_super2","_ref7","_this$props2","controlElement","getBoundingClientObj","scrollDistance","menuWrapper","Svg","viewBox","CrossIcon","DownChevron","baseCSS","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","LoadingDot","_ref6","css$2","verticalAlign","LoadingIndicator","indicator","inputStyle","isHidden","MultiValueGeneric","MultiValueContainer","MultiValueLabel","MultiValue","removeProps","Label","Remove","emotionCx","cropWithEllipsis","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","Group","Heading","headingProps","GroupHeading","_cleanCommonProps","IndicatorsContainer","IndicatorSeparator","Input","AutosizeInput","inputRef","Menu","menu","MenuList","MultiValueRemove","Option","option","Placeholder","SelectContainer","SingleValue","ValueContainer","safeIsNaN","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastResult","calledOnce","A11yText","defaultAriaLiveMessages","guidance","isSearchable","tabSelectsValue","_props$label","_props$focused","_props$label2","selectValue","getArrayIndex","onFilter","resultsMessage","LiveRegion","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","screenReaderStatus","ariaLive","messages","ariaSelected","removedValue","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ariaContext","diacritics","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","trimString","defaultStringify","DummyInput","in","onExited","appear","enter","exit","emotion","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","stopPropagation","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","activeScrollLocks","listenerOptions","capture","blurSelectInput","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","isBottom","isTop","touchStart","scrollTarget","handleEventDelta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","onWheel","onTouchStart","changedTouches","onTouchMove","startListening","notPassive","stopListening","useScrollCapture","setScrollLockTarget","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","removeScrollLock","useScrollLock","defaultStyles","clearIndicator","_ref$theme","neutral5","neutral0","neutral10","primary","flexWrap","justifyContent","neutral30","dropdownIndicator","groupHeading","textTransform","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","loadingIndicator","loadingMessage","_ref2$theme","_defineProperty$1","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","WebkitTapHighlightColor","primary50","neutral50","singleValue","valueContainer","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionValue","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","toCategorizedOption","_isOptionDisabled","_isOptionSelected","getOptionLabel$1","getOptionValue$1","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","_props$inputValue","shouldHideSelectedOptions","_filterOption","isOptionSelected","hideSelectedOptions","Select","inputIsHidden","clearFocusValueOnUpdate","inputIsHiddenAfterUpdate","blockOptionHover","commonProps","initialTouchX","initialTouchY","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","focusInput","blurInput","actionMeta","ariaOnChange","onInputChange","onMenuClose","_this$props3","deselected","removeValue","newValueArray","removedValues","popValue","lastSelectedValue","classNamePrefix","getElementId","getComponents","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","_this$props4","onClearIndicatorMouseDown","onTouchEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","currentTarget","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","_this$props5","_this$state","focusValue","shiftKey","keyCode","focusOption","startListeningComposition","startListeningToTouch","_this$props6","focusedEl","menuRect","focusedRect","overScroll","stopListeningComposition","stopListeningToTouch","_this$state2","openAtIndex","selectedIndex","_this$state3","focusedIndex","nextFocus","getTheme","_this$props7","formatOptionLabel","_this$props8","inputId","ariaAttributes","_this3","_this$getComponents2","_this$props9","_this$state4","opt","isOptionFocused","onMouseDown","_this$props10","_this$props11","_this$getComponents5","_this4","_this$getComponents7","_this$props12","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","onHover","optionId","onMouseMove","onMouseOver","hasOptions","groupIndex","headingId","_message","menuPlacementProps","menuElement","_ref4$placerProps","scrollTargetRef","_this5","_this$props13","_this$state5","_this$getComponents8","_this$props14","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","newMenuOptionsState","nextSelectValue","lastFocusedIndex","getNextFocusedValue","lastFocusedOption","getNextFocusedOption","newInputIsHiddenState","defaultInputValue","defaultMenuIsOpen","SelectComponent","_class","_temp","StateManager","callProp","getProp","manageState","isKey","addMilliseconds","dirtyAmount","amount","getUTCWeekYear","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","setDate","IS_MAC","platform","MODIFIERS","alt","ALIASES","break","cmd","command","ctl","ctrl","del","down","esc","ins","space","spacebar","CODES","backspace","tab","capslock","escape","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","numlock","scrolllock","'","isHotkey","hotkey","parseHotkey","compareHotkey","byKey","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","endsWith","toKeyName","which","toKeyCode","expected","actual","isCodeHotkey","implicit","k10","sequential","baseMatches","baseMatchesProperty","castPath","hasSymbols","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicates","endOfDesiredMonth","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","alpha","_alpha","x23","y23","sums","baseIteratee","baseUniq","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","_objectSpread","utils","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","getDefaultAdapter","transformRequest","parser","encoder","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","Cancel","__CANCEL__","stubFalse","Buffer","webpackPolyfill","__esModule","matchProp","resolveProp","getDefaultProp","noopTransform","DEFAULT_PROPS","RESERVED_PROPS","onProps","onPause","onResume","onRest","onResolve","trail","expires","leave","onDestroyed","callId","inferTo","forward","getForwardProps","computeGoal","hasProps","isAsyncTo","detachRefs","_ctrl$ref","replaceRef","_ctrl$ref2","gentle","wobbly","stiff","slow","molasses","AnimationConfig","frequency","restVelocity","progress","bounce","decay","sanitizeConfig","isTensionConfig","emptyArray","Animation","changed","toValues","fromValues","scheduleProps","_props$cancel","paused","resumeQueue","pauseQueue","cancelId","getCombinedResult","results","cancelled","getCancelledResult","getNoopResult","getFinishedResult","finished","runAsync","prevTo","asyncTo","prevPromise","asyncId","bailPromise","preventBail","bail","bailIfEnded","bailSignal","bailResult","BailSignal","skipAnimationSignal","SkipAniamtionSignal","stopAsync","animating","isFrameValue","FrameValue","nextId$1","_priority","_onPriorityChange","_attach","_detach","$P","hasAnimated","setActiveBit","IS_ANIMATING","setPausedBit","SpringValue","_state","_pendingCalls","_lastCallId","_lastToId","_memoizedDuration","elapsed","exp","bounceFactor","canBounce","isGrowing","numSteps","currVal","finalVal","_onChange","_stop","_focus","_set","_update","_onStart","_start","isLoop","mergeActiveFn","sendEvent","_prepareNode","checkFinished","_resume","_merge","createLoopUpdate","hasToProp","hasFromProp","prevFrom","hasFromChanged","hasToChanged","hasAsyncTo","newConfig","mergeConfig","isAnimatable","goalType","hasValueChanged","ACTIVE_EVENTS","oldNode","finish","loopRet","createUpdate","findDefined","declareUpdate","_target$animation$typ","_target$animation","_target$defaultProps$","_target$defaultProps","BATCHED_EVENTS","nextId","Controller","springs","_flush","_initialProps","_lastAsyncId","_active","_changed","_started","_item","_events","_onFrame","spring","prepareKeys","flushUpdateQueue","flushUpdate","promises","getSprings","prepareSprings","createSpring","setSprings","init","_excluded$3","SpringContext","SpringRef","_getProps","useSprings","propsFn","layoutId","ctrls","updates","declareUpdates","hasContext","isFn","TransitionPhase","useTransition","propsRef","propsConfig","transitions","usedTransitions","prevTransitions","expired","expirationId","getKeys","reused","MOUNT","keyIndex","changes","prevPhase","propsDelay","ENTER","isLeave","LEAVE","UPDATE","_p","expiry","expiryMs","renderTransitions","nextKey","Interpolation","calc","_dt","oldValue","checkIdle","becomeIdle","highest","isIdle","c1","c2","c3","c4","c5","bounceOut","n1","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","easeOutElastic","easeInOutElastic","easeInBounce","easeOutBounce","easeInOutBounce","delayed","isDelayed","exitBeforeEnter","_t$ctrl$ref","exitingTransitions","forceChange","ind","baseForOwn","buildMatchPatternFn","parseResult","parsePattern","subMilliseconds","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfQuarter","currentMonth","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","toNumber","nativeMax","nativeMin","wait","maxWait","timerId","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","band","bandwidth","ordinalRange","paddingInner","paddingOuter","sequence","pointish","utcMinute","setUTCSeconds","utcHour","utcMonth","setUTCMonth","ticker","tickIntervals","tickInterval","bisector","utcYear","utcWeek","utcDay","utcTicks","utcTickInterval","timeTicks","timeTickInterval","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","sunday","monday","tuesday","wednesday","thursday","friday","saturday","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","precisionCutOffs","precisionCutOffsByType","createDateNormalizer","useUTC","precisionFn","cutOff","createPrecisionMethod","parseTime","utcParse","timeParse","castLinearScale","typedScale","createPointScale","scalePoint","castBandScale","createTimeScale","minValue","maxValue","utcSecond","utcFormat","scaleUtc","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","scaleTime","scaleLinear","createLinearScale","scaleBand","createBandScale","hasMixedSign","scaleLog","createLogScale","scaleSymlog","createSymlogScale","centerScale","timeByType","timeInterval","timeTypes","timeIntervalRegexp","getScaleTicks","timeType","originalStop","computeCartesianTicks","ticksPosition","tickValues","tickSize","tickPadding","tickRotation","engine","lineX","lineY","textX","textY","textBaseline","getFormatter","computeGridLines","memoizedAxisTick","memoizedAxis","renderTick","AxisTick","legendOffset","ariaHidden","legendX","legendY","legendRotation","lineX2","lineY2","tick","tickIndex","rotate","transitionProps","axisPropTypes","Axes","axes","isXAxis","GridLine","GridLines","Grid","xValues","yValues","xLines","yLines","renderAxesToCanvas","_format","renderAxisToCanvas","renderGridLinesToCanvas","isCircleAnnotation","annotationSpec","isDotAnnotation","isRectAnnotation","computeAnnotation","annotation","noteX","noteY","noteWidth","noteTextOffset","computedNoteX","computedNoteY","computedX","computedY","targetY","targetX","getLinkAngle","eighth","noteLineX","useAnnotations","getPosition","getDimensions","dimensions","bindAnnotations","AnnotationNote","note","strokeLinejoin","omit","AnnotationLink","isOutline","firstPoint","animatedPath","CircleAnnotationOutline","DotAnnotationOutline","RectAnnotationOutline","Annotation","computed","useComputedAnnotation","noteType","isValidElement","isSvgNote","drawPoints","zeroPadding","computeDimensions","itemsSpacing","_padding","itemCount","itemWidth","itemHeight","horizontalPadding","verticalPadding","computePositionFromAnchor","translateX","translateY","containerWidth","containerHeight","computeItemLayout","justify","symbolSize","symbolSpacing","symbolX","symbolY","labelY","labelAlignment","labelX","labelAnchor","symbolByShape","circle","diamond","square","triangle","LegendSvgItem","symbolShape","symbolBorderWidth","symbolBorderColor","toggleSerie","effects","setStyle","SymbolShape","LegendSvg","itemDirection","itemTextColor","itemBackground","itemOpacity","xStep","yStep","BoxLegendSvg","textAlignMapping","categoricalColorSchemes","category10","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","schemeSet3","categoricalColorSchemeIds","divergingColorSchemes","brown_blueGreen","purpleRed_green","pink_yellowGreen","purple_orange","red_blue","red_grey","red_yellow_blue","red_yellow_green","schemeSpectral","divergingColorSchemeIds","divergingColorInterpolators","interpolateSpectral","sequentialColorSchemes","blue_green","blue_purple","green_blue","orange_red","purple_blue_green","purple_blue","purple_red","red_purple","yellow_green_blue","yellow_green","yellow_orange_brown","yellow_orange_red","schemeYlOrRd","sequentialColorSchemeIds","sequentialColorInterpolators","turbo","viridis","inferno","magma","plasma","cividis","warm","cool","cubehelixDefault","interpolateYlOrRd","colorSchemes","colorSchemeIds","cyclicalColorInterpolators","rainbow","sinebow","getInheritedColorGenerator","isInheritedColorConfigFromTheme","themeColor","isInheritedColorConfigFromContext","getColor","modifierType","modify","useInheritedColor","getOrdinalColorScale","getIdentity","isOrdinalColorScaleConfigDatumProperty","isOrdinalColorScaleConfigScheme","isDivergingColorScheme","isSequentialColorScheme","stackValue","BarAnnotations","bars","boundAnnotations","bar","BarLegends","indexBy","groupMode","valueScale","indexScale","innerPadding","axisBottom","axisLeft","enableGridX","enableGridY","enableLabel","labelSkipWidth","labelSkipHeight","labelTextColor","colorBy","tooltipLabel","initialHiddenIds","svgDefaultProps","layers","barComponent","labelColor","labelOpacity","shouldRenderLabel","renderTooltip","handleTooltip","rx","ry","canvasDefaultProps","pixelRatio","getIndexScale","computeScale","filterNullValues","coerceValue","repeat","clampToZero","generateVerticalGroupedBars","getTooltipLabel","cleanedData","indexValue","barWidth","getY","barHeight","yRef","barData","absX","absY","generateHorizontalGroupedBars","getX","xRef","generateGroupedBars","indexScaleConfig","hiddenIds","otherAxis","scaleSpec","clampMin","flattenDeep","generateVerticalStackedBars","stackedData","stackedDataItem","generateHorizontalStackedBars","generateStackedBars","orderNone","offsetNone","oz","kz","sz","sij","ki","si","getLegendData","legendLabel","getLegendLabel","getLegendDataForIndexes","getLegendDataForKeys","useBar","valueFormat","setHiddenIds","getLabel","getBorderColor","getLabelColor","barsWithValue","shouldRenderBarLabel","legendData","legendsWithData","InnerBar","axisTop","axisRight","gridXValues","gridYValues","barAriaLabel","barAriaLabelledBy","barAriaDescribedBy","layerById","layerContext","Bar","otherProps","findBarUnderCursor","InnerBarCanvas","renderBar","canvasRef","canvasEl","useComputedAnnotations","itemX","itemY","renderLegendToCanvas","isCanvasNote","renderAnnotationsToCanvas","handleMouseHover","BarCanvas","ResponsiveBar","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","full","long","medium","short","formatRelativeLocale","yesterday","tomorrow","localize","ordinalNumber","abbreviated","wide","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","formatDistance","addSuffix","comparison","formatRelative","_date","_baseDate","any","_dirtyOptions","rem100","startOfUTCWeekYear","firstWeek","MILLISECONDS_IN_WEEK","getUTCWeek","startOfUTCISOWeekYear","fourthOfJanuary","getUTCISOWeek","phi","squarifyRatio","ratio","nodeValue","dx","dy","sumValue","newRatio","minRatio","beta","treemapDice","treemapSlice","_interopRequire","_Motion","Motion","_StaggeredMotion","StaggeredMotion","_TransitionMotion","TransitionMotion","_spring","_presets","_stripStyle","stripStyle","_reorderKeys","reorderKeys","v1","v2","v3","t2","t3","rgbGamma","colorRgb","rgbSpline","spline","rgbBasis","ramp","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","originalModule","reIsDeepProp","reIsPlainProp","baseFor","baseIsEqualDeep","baseIsEqual","setCacheAdd","setCacheHas","SetCache","implementation","GetIntrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","overRest","setToString","secondPerFrame","destX","newV","newX","reusedTuple","getNanoSeconds","hrtime","loadTime","vendors","caf","_now","cp","handle","currentStyle","currentVelocity","styleValue","addMinutes","MILLISECONDS_IN_HOUR","addHours","_react","_react2","_interopRequireDefault","_propTypes2","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","fontStyle","letterSpacing","isIE","generateId","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","prevId","copyInputStyles","updateInputWidth","onAutosize","inputStyles","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","previousValue","wrapperStyle","inputProps","cleanInputProps","inputClassName","renderStyles","oneOfType","monthIndex","lastDayOfMonth","dirtyMonth","dateWithDesiredMonth","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","getChildContext","observedBits","_proto2","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encode","segment","attachKeys","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","createCompounder","word","timeoutDuration","longerTimeoutBrowsers","scheduled","functionToCheck","getType","getStyleComputedProperty","getReferenceNode","isIE11","isIE10","noOffsetParent","getRoot","findCommonOffsetParent","element1","element2","commonAncestorContainer","isOffsetContainer","element1root","getScroll","upperSide","includeScroll","sideA","sideB","getSize","getWindowSizes","getClientRect","sizes","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","isPaddingNumber","getArea","refRect","sortedAreas","filteredAreas","computedPlacement","getReferenceOffsets","commonOffsetParent","getOuterSizes","getPopperOffsets","referenceOffsets","isHoriz","secondarySide","measurement","secondaryMeasurement","runModifiers","cur","positionFixed","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","attachToScrollParents","setupEventListeners","scrollElement","enableEventListeners","disableEventListeners","removeEventListeners","isNumeric","setStyles","isModifierRequired","requesting","requested","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","useHeight","fragments","frag","divider","splitRegex","ops","mergeWithPrevious","toValue","index2","shiftvariation","shiftOffsets","transformProp","popperStyles","opSide","sideCapitalized","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","_implementation2","baseDifference","baseRest","isArrayLikeObject","reA","reB","bm","bi","zero","lo","hi","mid","ascendingComparator","FormatSpecifier","comma","CardinalClosed","_x3","_x4","_x5","_y3","_y4","_y5","CardinalOpen","Linear","rtl","ltr","RTL","LTR","baseUnset","customOmitClone","flatRest","isNumberArray","genericArray","nb","na","numberArray","reactPropsRegex","interpolateCubehelixLong","cubehelixGamma","colorCubehelix","cubehelixLong","Step","_x","_y","paramsSerializer","serializedParams","hashmarkIndex","isAxiosError","fileName","lineNumber","columnNumber","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","onCanceled","requestData","requestHeaders","cancelToken","signal","auth","username","password","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","statusText","onreadystatechange","readyState","responseURL","onabort","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","onDownloadProgress","onUploadProgress","upload","abort","aborted","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","hasFunc","createBaseFor","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","srcValue","baseHasIn","arrayReduce","deburr","words","reApos","reHasUnicode","isArgs","origKeys","keysShim","originalKeys","shim","callBind","$indexOf","allowMissing","intrinsic","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakRef","WeakSet","doEval","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","origSymbol","hasSymbolSham","numberIsNaN","$Object","multiline","dotAll","unicode","sticky","allocUnsafe","otherArgs","baseSetToString","shortOut","nested","baseIndexOf","flatten","isFlattenable","baseFlatten","arrayIncludes","arrayIncludesWith","createSet","setToArray","outer","seenIndex","baseEach","createBaseEach","noWobble","capitalize","sorted","outgoingEdges","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","objectKeys","isRegex","deepEqual","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","objEquiv","_taggedTemplateLiteral","file","acceptedFiles","acceptedFilesArray","mimeType","baseMimeType","validType","compareContext","bHasOwnProperty","valueA","valueB","stylis_min","da","ea","fa","ha","ia","ja","aa","ba","la","ma","oa","baseMerge","createAssigner","srcIndex","basePick","History","SAVING","MERGING","HistoryEditor","isHistoryEditor","isMerging","isSaving","withoutMerging","withoutSaving","withHistory","undos","redos","inverseOps","lastBatch","lastOp","overwrite","shouldOverwrite","save","shouldSave","shouldMerge","shouldClear","baseOrderBy","isIterateeCall","sortBy","iteratees","baseIsDate","nodeIsDate","baseFilter","padEnd","regions","iso2","countryCode","dialCode","isAreaCode","areaCodeLength","mainCode","hasAreaCodes","filterRegions","sortTerritories","getFilteredCountryList","localizeCountries","localName","getCustomAreas","excludeCountries","onlyCountries","preferredCountries","hiddenAreaCodes","getProbableCandidate","guessSelectedCountry","enableAreaCodes","updateCountry","selectedCountry","formattedNumber","disableCountryCode","formatNumber","dropdownRef","enableSearch","scrollToTop","enableAreaCodeStretch","enableLongNumbers","autoFormat","remainingText","formattedText","cursorToEnd","numberInputRef","setSelectionRange","getCountryData","handleFlagDropdownClick","showDropdown","concatPreferredCountries","highlightCountryIndex","handleInput","freezeSelection","countryCodeEditable","returnValue","country","persist","disableCountryGuess","selectionStart","handleInputClick","handleDoubleClick","handleFlagItemClick","searchValue","handleInputFocus","jumpCursorToEnd","handleInputBlur","handleInputCopy","copyNumbersOnly","getSelection","setData","getHighlightCountryIndex","getSearchFilteredCountries","searchCountry","queryString","handleKeydown","ESC","UP","DOWN","TAB","debouncedQueryStingSearcher","handleInputKeyDown","onEnterKeyPress","handleClickOutside","dropdownContainerRef","handleSearchChange","getDropdownCountryName","getCountryDropdownList","disableDropdown","searchNotFound","disableSearchIcon","searchClass","searchStyle","searchPlaceholder","autocompleteSearch","preferred","highlight","dropdownClass","dropdownStyle","enableTerritories","preserveOrder","masks","areaCodes","localization","defaultMask","alwaysDefaultMask","disableInitialCountryGuess","enableClickOutside","updateFormattedNumber","renderStringAsFlag","defaultErrorMessage","specialLabel","containerClass","inputClass","buttonClass","onDoubleClick","buttonStyle","flagsImagePath","PLUS","schemeCategory10","schemeAccent","schemeDark2","schemePaired","schemePastel1","schemePastel2","schemeSet1","schemeSet2","schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","interpolateBrBG","interpolatePRGn","interpolatePiYG","interpolatePuOr","interpolateRdBu","interpolateRdGy","interpolateRdYlBu","interpolateRdYlGn","schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","interpolateBlues","interpolateGreens","interpolateGreys","interpolateOranges","interpolatePurples","interpolateReds","interpolateTurbo","interpolateViridis","interpolateInferno","interpolateMagma","interpolatePlasma","interpolateCividis","interpolateWarm","interpolateCool","interpolateCubehelixDefault","interpolateBuGn","interpolateBuPu","interpolateGnBu","interpolateOrRd","interpolatePuBuGn","interpolatePuBu","interpolatePuRd","interpolateRdPu","interpolateYlGnBu","interpolateYlGn","interpolateYlOrBr","interpolateRainbow","colorInterpolators","_isPlainObject","arrayOf","tauEpsilon","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","cw","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","staticStyle","ArcLabel","getNormalizedAngle","normalizedAngle","filterDataBySkipAngle","skipAngle","arcTransitionModeById","middleAngle","centerRadius","pushIn","pushOut","useArcTransitionMode","extraTransition","transitionMode","computeArcCenter","interpolateArcCenter","startAngleValue","endAngleValue","innerRadiusValue","outerRadiusValue","centroid","ArcLabelsLayer","labelAccessor","radiusOffset","getTextColor","phases","useArcCentersTransition","ArcLinkLabel","_jsxs","linkColor","textPosition","computeArcLink","diagonalLength","straightLength","centerAngle","point0","lineGenerator","pointX","pointY","curve","curveLinear","defined0","interpolateLink","offsetValue","diagonalLengthValue","straightLengthValue","diagonalLengthAnimated","straightLengthAnimated","interpolateTextAnchor","computeArcLinkTextAnchor","interpolateTextPosition","textOffsetValue","textOffset","ArcLinkLabelsLayer","getLinkColor","filteredData","transitionPhases","useArcLinkLabelsTransition","ArcShape","interpolateArc","arcGenerator","ArcsLayer","useArcsTransition","Arc","useArcGenerator","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","oc","ax","ay","bx","by","kc","lc","d3Arc","isCategoricalColorScheme","PieLegends","sortByValue","fit","activeInnerRadiusOffset","activeOuterRadiusOffset","enableArcLabels","arcLabel","arcLabelsSkipAngle","arcLabelsRadiusOffset","arcLabelsTextColor","enableArcLinkLabels","arcLinkLabel","arcLinkLabelsSkipAngle","arcLinkLabelsOffset","arcLinkLabelsDiagonalLength","arcLinkLabelsStraightLength","arcLinkLabelsThickness","arcLinkLabelsTextOffset","arcLinkLabelsTextColor","arcLinkLabelsColor","useNormalizedData","getId","useOrdinalColorScale","datumId","datumValue","normalizedDatum","usePieArcs","activeId","pie","innerPie","sortValues","arcs","pa","d3Pie","hiddenData","dataWithArc","angleDeg","usePieFromBox","innerRadiusRatio","setActiveId","boundingBox","centerX","centerY","includeCenter","xs","ys","computeArcBoundingBox","box","adjustedBox","pieArcs","Arcs","InnerPie","arcLabelsComponent","arcLinkLabelComponent","normalizedData","arcLinkLabels","arcLabels","usePieLayerContext","Pie","ResponsivePie","__awaiter","_arguments","fulfilled","rejected","__generator","sent","trys","verb","__read","files","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","getInvalidTypeRejectionErr","accept","messageSuffix","getTooLargeRejectionErr","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","accepts","fileMatchSize","isDefined","allFilesAccepted","maxFiles","accepted","sizeMatch","isPropagationStopped","cancelBubble","isEvtWithFiles","onDocumentDragOver","isIe","isIeOrEdge","composeEventHandlers","fns","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Dropzone","_useDropzone","useDropzone","useImperativeHandle","getFilesFromEvent","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","onFileDialogCancel","onDragEnter","onDragLeave","onDropAccepted","onDropRejected","isFileDialogActive","isDragActive","isDragAccept","isDragReject","draggedFiles","fileRejections","_defaultProps$options","rootRef","_useReducer","_useReducer2","openFileDialog","onWindowFocus","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","dragTargetsRef","onDocumentDrop","onDragEnterCb","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targetIdx","onDropCb","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","customErrors","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onInputElementClick","getInputProps","_ref3$refKey","fileCount","colRange","splitter","slicers","joiner","buildResourceDayTableModel","resourceOrderSpecs","dayTable","buildNowIndicatorSegs","nonResourceSegs","buildResourceTimeColsModel","resourceTimeGrid","resourceTimeGridDay","resourceTimeGridWeek","quantize","invertExtent","e10","e5","e2","power","LN10","step0","step1","slope3","h0","slope2","MonotoneX","MonotoneY","ReflectContext","_t0","prefixExponent","toPrecision","formatRounded","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","formatLocale","StrictMode","Profiler","Suspense","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isPureReactComponent","__self","__source","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","lazy","_payload","_init","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","qa","setAttributeNS","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","eb","db","fb","defaultSelected","gb","hb","ib","jb","lb","mb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","lastChild","qb","gridArea","rb","sb","tb","ub","menuitem","embed","keygen","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","fc","gc","hc","ic","jc","mc","nc","pc","qc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","pd","qd","rd","_reactName","_targetInst","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","altKey","metaKey","getModifierState","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","animationName","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","documentMode","tel","oninput","detachEvent","attachEvent","compareDocumentPosition","HTMLIFrameElement","contentWindow","selectionEnd","Yb","af","bf","cf","df","Nb","ef","ff","parentWindow","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","responders","wg","xg","baseState","firstBaseUpdate","lastBaseUpdate","shared","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","Mg","Ng","Og","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","ci","di","readContext","useDeferredValue","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ji","mi","baseLanes","ni","oi","qi","ri","pendingContext","Bi","Di","Ei","retryLane","ti","unstable_avoidThisFallback","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","onclick","createElementNS","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","removeAllRanges","addRange","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","inject","findDOMNode","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propFullName","secret","getShim","ReactPropTypes","instanceOf","objectOf","checkPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","jsxs","Axios","axios","createInstance","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","validators","interceptors","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","onFulfilled","onRejected","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","normalizedName","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","requestURL","deprecatedWarnings","formatMessage","allowUnknown","executor","resolvePromise","_listeners","onfulfilled","_resolve","fromRight","iterable","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","equalArrays","equalByTag","equalObjects","arrayTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","isStrictComparable","hasIn","baseProperty","basePropertyDeep","accumulator","initAccum","deburrLetter","reLatin","reComboMark","basePropertyOf","asciiWords","hasUnicodeWord","unicodeWords","guard","reAsciiWord","reHasUnicodeWord","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","reUnicodeWord","upperFirst","createCaseFirst","castSlice","hasUnicode","stringToArray","strSymbols","baseSlice","asciiToArray","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsSymbol","reUnicode","argType","subMinutes","subHours","subDays","subWeeks","subMonths","subYears","getQuarter","setSeconds","dirtySeconds","dirtyMinutes","dirtyHours","setQuarter","dirtyQuarter","oldQuarter","setYear","dirtyYear","dirtyDatesArray","datesArray","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","yearDiff","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","cleanDate","endOfDay","endOfMonth","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameYear","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","dirtyDateToCompare","dateToCompare","isWithinInterval","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTimezone","dateString","captures","century","isWeekDate","parseDateUnit","dayOfWeek","_year","validateWeekDate","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","_hours","validateTimezone","isNodeFound","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","handlerOptions","onClickOutsideHOC","WrappedComponent","__outsideClickHandler","__clickOutsideHandlerProp","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","findHighest","disableOnClickOutside","getRef","wrappedRef","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","symObj","syms","ERROR_MESSAGE","funcType","binder","boundLength","boundArgs","Empty","getPolyfill","$exec","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","gOPD","flagsBound","TypeErr","tryDateObject","_gud2","_temp2","moment","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdaysParseExact","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","assignMergeValue","baseMergeDeep","safeGet","mergeFunc","isTyped","assigner","nativeNow","lastCalled","stamp","valuesLength","valuesIndex","baseFindIndex","baseIsNaN","strictIndexOf","basePickBy","spreadableSymbol","isConcatSpreadable","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","trimmedEndIndex","reTrimStart","reWhitespace","baseMap","baseSortBy","compareMultiple","orders","eachFunc","comparer","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","_mapToZero2","_stripStyle2","_stepper4","_performanceNow2","_raf2","_shouldStopAnimation2","msPerFrame","_React$Component","wasAnimating","animationID","prevTime","accumulatedTime","unreadPropStyle","clearUnreadPropStyle","destStyle","lastIdealStyle","lastIdealVelocity","startAnimationIfNecessary","propsStyle","timeDelta","currentFrameCompletion","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","_stepper2","nextIdealX","nextIdealV","defaultStyle","renderedChildren","unreadPropStyles","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","someDirty","destStyles","shouldStopAnimationAll","newLastIdealStyles","newLastIdealVelocities","newCurrentStyles","newCurrentVelocities","_mergeDiff2","rehydrateStyles","mergedPropsStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","willEnter","willLeave","didLeave","oldMergedPropsStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldIndex","oldMergedPropsStyle","leavingStyle","newMergedPropsStyleCell","foundOldIndex","plainStyle","unmounting","_mergeAndSync","propStyles","_mergeAndSync2","newMergedPropsStyle","styleThatEntered","defaultStyleCell","_mergeAndSync3","hydratedStyles","onRemove","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","pivot","_presets2","dirtyObject","setUTCDay","dirtyDay","currentDay","remainder","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","parsers","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","subPriority","wholeWeekDays","setUTCISODay","setUTCMilliseconds","timestampIsSet","_token","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","defaultLocale","subFnOptions","setters","dateToSystemTimezone","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleToken","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setterArray","convertedDate","addLeadingZeros","formatters","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezone","lightFormatters","signedWeekYear","startOfYearTimestamp","difference","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","originalDate","dirtyFormatStr","formatStr","formatterOptions","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","newReferenceNode","referenceNode","setReferenceNode","unwrapArray","safeInvoke","initialStyle","initialArrowStyle","InnerPopper","popperNode","updatePopperInstance","arrowNode","updateStateModifier","arrowStyles","popperInstance","destroyPopperInstance","PopperJS","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","setArrowNode","getArrowStyle","InnerReference","refHandler","startOfISOWeek","getISOWeekYear","startOfISOWeekYear","getISOWeek","pi_1_3","pi_2_3","BasisClosed","BasisOpen","Bundle","_basis","_beta","CatmullRomClosed","CatmullRomOpen","LinearClosed","Natural","controlPoints","px","py","yp","yn","s2","sij0","s3","partition","valueOffset","valueTarget","valueLeft","valueRight","_squarify","formatDecimal","peak","peaks","appearance","localDate","newDate","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_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","ascendingBisect","bisectRight"],"mappings":"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ib,WAAY,CACVpI,KAAM,uCACNngC,KAAM,uCACNygC,MAAO,iCACP3a,MAAO,qBACPU,KAAM,iCACNT,IAAK,qBACLna,KAAM,kCAERqhB,SAAU,iCACV0b,WAAY,oDACZC,aAAc,2BACdC,aAAc,wEAGP,CACPP,KAAM,QACN9hB,KAAM,CACJpG,IAAK,EACLC,IAAK,IAEPiN,UAAW,MACXib,WAAY,CACVpI,KAAM,uCACNngC,KAAM,uCACNygC,MAAO,iCACP3a,MAAO,qBACPU,KAAM,iCACNT,IAAK,qBACLna,KAAM,kCAERqhB,SAAU,iCACV0b,WAAY,oDACZC,aAAc,2BACdC,aAAc,wEAGP,CACPP,KAAM,QACN9hB,KAAM,CACJpG,IAAK,EACLC,IAAK,GAEPiN,UAAW,MACXib,WAAY,CACVpI,KAAM,uCACNngC,KAAM,uCACNygC,MAAO,iCACP3a,MAAO,qBACPU,KAAM,iCACNT,IAAK,qBACLna,KAAM,kCAERqhB,SAAU,iCACV0b,WAAY,oDACZC,aAAc,2BACdC,aAAc,wEAGP,CACPP,KAAM,QACN9hB,KAAM,CACJpG,IAAK,EACLC,IAAK,GAEPiN,UAAW,MACXib,WAAY,CACVpI,KAAM,uCACNngC,KAAM,uCACNygC,MAAO,iCACP3a,MAAO,qBACPU,KAAM,iCACNT,IAAK,qBACLna,KAAM,kCAERqhB,SAAU,iCACV0b,WAAY,oDACZC,aAAc,2BACdC,aAAc,wEAGP,CACPP,KAAM,KACN9hB,KAAM,CACJpG,IAAK,EACLC,IAAK,IAEPiN,UAAW,MACXib,WAAY,CACVpI,KAAM,uCACNngC,KAAM,uCACNygC,MAAO,iCACP3a,MAAO,qBACPU,KAAM,iCACNT,IAAK,qBACLna,KAAM,kCAERqhB,SAAU,iCACV0b,WAAY,oDACZC,aAAc,2BACdC,aAAc,wEAGP,CACPP,KAAM,KACN9hB,KAAM,CACJpG,IAAK,EACLC,IAAK,GAEPkoB,WAAY,CACVpI,KAAM,kBACNngC,KAAM,QACNygC,MAAO,YACP3a,MAAO,KACPU,KAAM,kBACNT,IAAK,SACLna,KAAM,kBAERqhB,SAAU,kBACV0b,WAAY,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GAAkB,SACpB1B,EACAC,EACAC,EACAC,EACAwB,EACAC,EACAC,UAEAz4T,aACI,CACI42T,EACAC,EACAC,EACAC,EACAwB,EACAC,EACAC,IAEJ,SACI1E,EACAE,EACAN,EACAE,EACAvsP,EACAoxP,EACAC,OAEQpyE,EAAWoxE,GACf,CACI5D,aACAE,WACAN,cACAE,eAEJvsP,EACAoxP,EACAC,GATIpyE,cAYDyxE,GAAczxE,OAI3BqyE,GAAwB,SAC1BhC,EACAC,EACAC,EACAC,UAEA/2T,aACI,CAAC42T,EAAiBC,EAAeC,EAAkBC,IACnD,SAAChD,EAAYE,EAAUN,EAAaE,UD1HJ,SAAC35L,OAC/B49L,EAAchC,GAChB57L,EAAI65L,YAAc75L,EAAI+5L,SAAW/5L,EAAI65L,YAAc,EAAI/3T,KAAK4zJ,GAAK,UAGjEkoK,EAAc97T,KAAK4zJ,GAAK,GAAKkoK,EAAwB,IAAV97T,KAAK4zJ,GACzC,QAGJ,MCkHQipK,CAAyB,CAC5B9E,aACAE,WACAN,cACAE,oBAYViF,GAA0B,SAC5BlC,EACAC,EACAC,EACAC,EACAwB,EACAC,EACAC,EACAM,UAEA/4T,aACI,CACI42T,EACAC,EACAC,EACAC,EACAwB,EACAC,EACAC,EACAM,IAEJ,SACIhF,EACAE,EACAN,EACAE,EACAvsP,EACAoxP,EACAC,EACAK,SAEyBrB,GACrB,CACI5D,aACAE,WACAN,cACAE,eAEJvsP,EACAoxP,EACAC,GATIpyE,WAAQn6G,SAYV12G,EAAW6wN,EAAO,SACX,WAATn6G,EACA12G,EAASmF,GAAKm+R,EAEdtjS,EAASmF,GAAKm+R,eAGEtjS,EAASmF,MAAKnF,EAASzE,UChL1CgoS,GAAqB,gBAC9Bt0Q,WACAxK,SACO+8Q,IAAPtlU,MACAqkU,cACA3uP,WACAswP,mBACAC,mBACApwM,gBACAuxM,eACAj+S,cACA08S,kBACAnwR,uBAAYiwR,KAENz4B,EAAWhhK,YAAmCo5L,KD0Kd,gBACtC/8Q,aACAmtB,oBAAS,IACTswP,mBACAC,uBACA5B,uBAAY,IACZ+C,eACAvB,cACA18S,gBAW0C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","file":"static/js/2.1945e590.chunk.js","sourcesContent":["'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","'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","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\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 if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\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}","// ES6 Map\nvar map\ntry {\n map = Map\n} catch (_) { }\nvar set\n\n// ES6 Set\ntry {\n set = Set\n} catch (_) { }\n\nfunction baseClone (src, circulars, clones) {\n // Null/undefined/functions/etc\n if (!src || typeof src !== 'object' || typeof src === 'function') {\n return src\n }\n\n // DOM Node\n if (src.nodeType && 'cloneNode' in src) {\n return src.cloneNode(true)\n }\n\n // Date\n if (src instanceof Date) {\n return new Date(src.getTime())\n }\n\n // RegExp\n if (src instanceof RegExp) {\n return new RegExp(src)\n }\n\n // Arrays\n if (Array.isArray(src)) {\n return src.map(clone)\n }\n\n // ES6 Maps\n if (map && src instanceof map) {\n return new Map(Array.from(src.entries()))\n }\n\n // ES6 Sets\n if (set && src instanceof set) {\n return new Set(Array.from(src.values()))\n }\n\n // Object\n if (src instanceof Object) {\n circulars.push(src)\n var obj = Object.create(src)\n clones.push(obj)\n for (var key in src) {\n var idx = circulars.findIndex(function (i) {\n return i === src[key]\n })\n obj[key] = idx > -1 ? clones[idx] : baseClone(src[key], circulars, clones)\n }\n return obj\n }\n\n // ???\n return src\n}\n\nexport default function clone (src) {\n return baseClone(src, [], [])\n}\n","const toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import printValue from './util/printValue';\nexport let mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n let isCast = originalValue != null && originalValue !== value;\n let msg = `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + (isCast ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.');\n\n if (value === null) {\n msg += `\\n If \"null\" is intended as an empty value be sure to mark the schema as \\`.nullable()\\``;\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport let string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport let number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport let date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport let boolean = {\n isValue: '${path} field must be ${value}'\n};\nexport let object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport let array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must be have ${length} items'\n};\nexport default Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean\n});","export default (obj => obj && obj.__isYupSchema__);","import has from 'lodash/has';\nimport isSchema from './util/isSchema';\n\nclass Condition {\n constructor(refs, options) {\n this.refs = refs;\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = options;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n\n this.fn = function (...args) {\n let options = args.pop();\n let schema = args.pop();\n let branch = check(...args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n resolve(base, options) {\n let values = this.refs.map(ref => ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n\n}\n\nexport default Condition;","export default function toArray(value) {\n return value == null ? [] : [].concat(value);\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\nimport printValue from './util/printValue';\nimport toArray from './util/toArray';\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nexport default class ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = _extends({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n\n constructor(errorOrErrors, value, field, type) {\n super();\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n this.inner = this.inner.concat(err.inner.length ? err.inner : err);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n }\n\n}","import ValidationError from '../ValidationError';\n\nconst once = cb => {\n let fired = false;\n return (...args) => {\n if (fired) return;\n fired = true;\n cb(...args);\n };\n};\n\nexport default function runTests(options, cb) {\n let {\n endEarly,\n tests,\n args,\n value,\n errors,\n sort,\n path\n } = options;\n let callback = once(cb);\n let count = tests.length;\n const nestedErrors = [];\n errors = errors ? errors : [];\n if (!count) return errors.length ? callback(new ValidationError(errors, value, path)) : callback(null, value);\n\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, function finishTestRun(err) {\n if (err) {\n // always return early for non validation errors\n if (!ValidationError.isError(err)) {\n return callback(err, value);\n }\n\n if (endEarly) {\n err.value = value;\n return callback(err, value);\n }\n\n nestedErrors.push(err);\n }\n\n if (--count <= 0) {\n if (nestedErrors.length) {\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n if (errors.length) nestedErrors.push(...errors);\n errors = nestedErrors;\n }\n\n if (errors.length) {\n callback(new ValidationError(errors, value, path), value);\n return;\n }\n\n callback(null, value);\n }\n });\n }\n}","import { getter } from 'property-expr';\nconst prefixes = {\n context: '$',\n value: '.'\n};\nexport function create(key, options) {\n return new Reference(key, options);\n}\nexport default class Reference {\n constructor(key, options = {}) {\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n\n\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n\n resolve() {\n return this;\n }\n\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n\n toString() {\n return `Ref(${this.key})`;\n }\n\n static isRef(value) {\n return value && value.__isYupRef;\n }\n\n} // @ts-ignore\n\nReference.prototype.__isYupRef = true;","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 _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 mapValues from 'lodash/mapValues';\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nexport default function createValidation(config) {\n function validate(_ref, cb) {\n let {\n value,\n path = '',\n label,\n options,\n originalValue,\n sync\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n const {\n name,\n test,\n params,\n message\n } = config;\n let {\n parent,\n context\n } = options;\n\n function resolve(item) {\n return Ref.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n\n function createError(overrides = {}) {\n const nextParams = mapValues(_extends({\n value,\n originalValue,\n label,\n path: overrides.path || path\n }, params, overrides.params), resolve);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n\n let ctx = _extends({\n path,\n parent,\n type: name,\n createError,\n resolve,\n options,\n originalValue\n }, rest);\n\n if (!sync) {\n try {\n Promise.resolve(test.call(ctx, value, ctx)).then(validOrError => {\n if (ValidationError.isError(validOrError)) cb(validOrError);else if (!validOrError) cb(createError());else cb(null, validOrError);\n });\n } catch (err) {\n cb(err);\n }\n\n return;\n }\n\n let result;\n\n try {\n var _ref2;\n\n result = test.call(ctx, value, ctx);\n\n if (typeof ((_ref2 = result) == null ? void 0 : _ref2.then) === 'function') {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n } catch (err) {\n cb(err);\n return;\n }\n\n if (ValidationError.isError(result)) cb(result);else if (!result) cb(createError());else cb(null, result);\n }\n\n validate.OPTIONS = config;\n return validate;\n}","import { forEach } from 'property-expr';\n\nlet trim = part => part.substr(0, part.length - 1).substr(1);\n\nexport function getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n\n if (schema.innerType) {\n let idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema._type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\n\nconst reach = (obj, path, value, context) => getIn(obj, path, value, context).schema;\n\nexport default reach;","import Reference from '../Reference';\nexport default class ReferenceSet {\n constructor() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n get size() {\n return this.list.size + this.refs.size;\n }\n\n describe() {\n const description = [];\n\n for (const item of this.list) description.push(item);\n\n for (const [, ref] of this.refs) description.push(ref.describe());\n\n return description;\n }\n\n toArray() {\n return Array.from(this.list).concat(Array.from(this.refs.values()));\n }\n\n add(value) {\n Reference.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n }\n\n delete(value) {\n Reference.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n }\n\n has(value, resolve) {\n if (this.list.has(value)) return true;\n let item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) if (resolve(item.value) === value) return true;\n\n return false;\n }\n\n clone() {\n const next = new ReferenceSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n }\n\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.list.forEach(value => next.add(value));\n newItems.refs.forEach(value => next.add(value));\n removeItems.list.forEach(value => next.delete(value));\n removeItems.refs.forEach(value => next.delete(value));\n return next;\n }\n\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\n// @ts-ignore\nimport cloneDeep from 'nanoclone';\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runTests from './util/runTests';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\nimport toArray from './util/toArray';\nimport ValidationError from './ValidationError';\nimport ReferenceSet from './util/ReferenceSet';\nexport default class BaseSchema {\n constructor(options) {\n this.deps = [];\n this.conditions = [];\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(locale.notType);\n });\n this.type = (options == null ? void 0 : options.type) || 'mixed';\n this.spec = _extends({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n nullable: false,\n presence: 'optional'\n }, options == null ? void 0 : options.spec);\n } // TODO: remove\n\n\n get _type() {\n return this.type;\n }\n\n _typeCheck(_value) {\n return true;\n }\n\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n } // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n\n const next = Object.create(Object.getPrototypeOf(this)); // @ts-expect-error this is readonly\n\n next.type = this.type;\n next._typeError = this._typeError;\n next._whitelistError = this._whitelistError;\n next._blacklistError = this._blacklistError;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.exclusiveTests = _extends({}, this.exclusiveTests); // @ts-expect-error this is readonly\n\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = cloneDeep(_extends({}, this.spec, spec));\n return next;\n }\n\n label(label) {\n var next = this.clone();\n next.spec.label = label;\n return next;\n }\n\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n } // withContext<TContext extends AnyObject>(): BaseSchema<\n // TCast,\n // TContext,\n // TOutput\n // > {\n // return this as any;\n // }\n\n\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n\n const mergedSpec = _extends({}, base.spec, combined.spec); // if (combined.spec.nullable === UNSET)\n // mergedSpec.nullable = base.spec.nullable;\n // if (combined.spec.presence === UNSET)\n // mergedSpec.presence = base.spec.presence;\n\n\n combined.spec = mergedSpec;\n combined._typeError || (combined._typeError = base._typeError);\n combined._whitelistError || (combined._whitelistError = base._whitelistError);\n combined._blacklistError || (combined._blacklistError = base._blacklistError); // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist); // start with the current tests\n\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n return combined;\n }\n\n isType(v) {\n if (this.spec.nullable && v === null) return true;\n return this._typeCheck(v);\n }\n\n resolve(options) {\n let schema = this;\n\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((schema, condition) => condition.resolve(schema, options), schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {*=} options.parent\n * @param {*=} options.context\n */\n\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(_extends({\n value\n }, options));\n\n let result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema._type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n\n return result;\n }\n\n _cast(rawValue, _options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((value, fn) => fn.call(this, value, rawValue, this), rawValue);\n\n if (value === undefined) {\n value = this.getDefault();\n }\n\n return value;\n }\n\n _validate(_value, options = {}, cb) {\n let {\n sync,\n path,\n from = [],\n originalValue = _value,\n strict = this.spec.strict,\n abortEarly = this.spec.abortEarly\n } = options;\n let value = _value;\n\n if (!strict) {\n // this._validating = true;\n value = this._cast(value, _extends({\n assert: false\n }, options)); // this._validating = false;\n } // value is cast, we can check if it meets type requirements\n\n\n let args = {\n value,\n path,\n options,\n originalValue,\n schema: this,\n label: this.spec.label,\n sync,\n from\n };\n let initialTests = [];\n if (this._typeError) initialTests.push(this._typeError);\n if (this._whitelistError) initialTests.push(this._whitelistError);\n if (this._blacklistError) initialTests.push(this._blacklistError);\n runTests({\n args,\n value,\n path,\n sync,\n tests: initialTests,\n endEarly: abortEarly\n }, err => {\n if (err) return void cb(err, value);\n runTests({\n tests: this.tests,\n args,\n path,\n sync,\n value,\n endEarly: abortEarly\n }, cb);\n });\n }\n\n validate(value, options, maybeCb) {\n let schema = this.resolve(_extends({}, options, {\n value\n })); // callback case is for nested validations\n\n return typeof maybeCb === 'function' ? schema._validate(value, options, maybeCb) : new Promise((resolve, reject) => schema._validate(value, options, (err, value) => {\n if (err) reject(err);else resolve(value);\n }));\n }\n\n validateSync(value, options) {\n let schema = this.resolve(_extends({}, options, {\n value\n }));\n let result;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n }), (err, value) => {\n if (err) throw err;\n result = value;\n });\n\n return result;\n }\n\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n\n _getDefault() {\n let defaultValue = this.spec.default;\n\n if (defaultValue == null) {\n return defaultValue;\n }\n\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeep(defaultValue);\n }\n\n getDefault(options) {\n let schema = this.resolve(options || {});\n return schema._getDefault();\n }\n\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n\n let next = this.clone({\n default: def\n });\n return next;\n }\n\n strict(isStrict = true) {\n var next = this.clone();\n next.spec.strict = isStrict;\n return next;\n }\n\n _isPresent(value) {\n return value != null;\n }\n\n defined(message = locale.defined) {\n return this.test({\n message,\n name: 'defined',\n exclusive: true,\n\n test(value) {\n return value !== undefined;\n }\n\n });\n }\n\n required(message = locale.required) {\n return this.clone({\n presence: 'required'\n }).withMutation(s => s.test({\n message,\n name: 'required',\n exclusive: true,\n\n test(value) {\n return this.schema._isPresent(value);\n }\n\n }));\n }\n\n notRequired() {\n var next = this.clone({\n presence: 'optional'\n });\n next.tests = next.tests.filter(test => test.OPTIONS.name !== 'required');\n return next;\n }\n\n nullable(isNullable = true) {\n var next = this.clone({\n nullable: isNullable !== false\n });\n return next;\n }\n\n transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n\n test(...args) {\n let opts;\n\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n\n let next = this.clone();\n let deps = toArray(keys).map(key => new Ref(key));\n deps.forEach(dep => {\n // @ts-ignore\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(new Condition(deps, options));\n return next;\n }\n\n typeError(message) {\n var next = this.clone();\n next._typeError = createValidation({\n message,\n name: 'typeError',\n\n test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n oneOf(enums, message = locale.oneOf) {\n var next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message,\n name: 'oneOf',\n\n test(value) {\n if (value === undefined) return true;\n let valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n\n });\n return next;\n }\n\n notOneOf(enums, message = locale.notOneOf) {\n var next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message,\n name: 'notOneOf',\n\n test(value) {\n let invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n describe() {\n const next = this.clone();\n const {\n label,\n meta\n } = next.spec;\n const description = {\n meta,\n label,\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n\n}\n// @ts-expect-error\nBaseSchema.prototype.__isYupSchema__ = true;\n\nfor (const method of ['validate', 'validateSync']) BaseSchema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent,\n path\n }));\n};\n\nfor (const alias of ['equals', 'is']) BaseSchema.prototype[alias] = BaseSchema.prototype.oneOf;\n\nfor (const alias of ['not', 'nope']) BaseSchema.prototype[alias] = BaseSchema.prototype.notOneOf;\n\nBaseSchema.prototype.optional = BaseSchema.prototype.notRequired;","import BaseSchema from './schema';\nconst Mixed = BaseSchema;\nexport default Mixed;\nexport function create() {\n return new Mixed();\n} // XXX: this is using the Base schema so that `addMethod(mixed)` works as a base class\n\ncreate.prototype = Mixed.prototype;","export default (value => value == null);","import BaseSchema from './schema';\nimport { boolean as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nexport function create() {\n return new BooleanSchema();\n}\nexport default class BooleanSchema extends BaseSchema {\n constructor() {\n super({\n type: 'boolean'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n\n return value;\n });\n });\n }\n\n _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n\n isTrue(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n\n test(value) {\n return isAbsent(value) || value === true;\n }\n\n });\n }\n\n isFalse(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n\n test(value) {\n return isAbsent(value) || value === false;\n }\n\n });\n }\n\n}\ncreate.prototype = BooleanSchema.prototype;","import { string as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema'; // eslint-disable-next-line\n\nlet rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nlet rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nlet rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\n\nlet objStringTag = {}.toString();\nexport function create() {\n return new StringSchema();\n}\nexport default class StringSchema extends BaseSchema {\n constructor() {\n super({\n type: 'string'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n\n _isPresent(value) {\n return super._isPresent(value) && !!value.length;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex\n },\n test: value => isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n\n email(message = locale.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n\n url(message = locale.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n\n uuid(message = locale.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n } //-- transforms --\n\n\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n\n trim(message = locale.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n\n lowercase(message = locale.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n\n uppercase(message = locale.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n\n}\ncreate.prototype = StringSchema.prototype; //\n// String Interfaces\n//","import { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema';\n\nlet isNaN = value => value != +value;\n\nexport function create() {\n return new NumberSchema();\n}\nexport default class NumberSchema extends BaseSchema {\n constructor() {\n super({\n type: 'number'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n let parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(max);\n }\n\n });\n }\n\n lessThan(less, message = locale.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n\n test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n\n });\n }\n\n moreThan(more, message = locale.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n\n test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n\n });\n }\n\n positive(msg = locale.positive) {\n return this.moreThan(0, msg);\n }\n\n negative(msg = locale.negative) {\n return this.lessThan(0, msg);\n }\n\n integer(message = locale.integer) {\n return this.test({\n name: 'integer',\n message,\n test: val => isAbsent(val) || Number.isInteger(val)\n });\n }\n\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n\n round(method) {\n var _method;\n\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n\n}\ncreate.prototype = NumberSchema.prototype; //\n// Number Interfaces\n//","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined†values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) struct[k] = +struct[k] || 0; // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","// @ts-ignore\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nimport BaseSchema from './schema';\nlet invalidDate = new Date('');\n\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\n\nexport function create() {\n return new DateSchema();\n}\nexport default class DateSchema extends BaseSchema {\n constructor() {\n super({\n type: 'date'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n }\n\n _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n\n prepareParam(ref, name) {\n let param;\n\n if (!Ref.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n\n return param;\n }\n\n min(min, message = locale.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n var limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n\n });\n }\n\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate.prototype = DateSchema.prototype;\ncreate.INVALID_DATE = invalidDate;","import has from 'lodash/has'; // @ts-expect-error\n\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludes = []) {\n let edges = [];\n let nodes = [];\n\n function addNode(depPath, key) {\n var node = split(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(`${key}-${node}`)) edges.push([key, node]);\n }\n\n for (const key in fields) if (has(fields, key)) {\n let value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n\n return toposort.array(nodes, edges).reverse();\n}","function findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n\n if (((_err$path = err.path) == null ? void 0 : _err$path.indexOf(key)) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\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\nimport has from 'lodash/has';\nimport snakeCase from 'lodash/snakeCase';\nimport camelCase from 'lodash/camelCase';\nimport mapKeys from 'lodash/mapKeys';\nimport mapValues from 'lodash/mapValues';\nimport { getter } from 'property-expr';\nimport { object as locale } from './locale';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\n\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\n\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\n\nconst defaultSort = sortByKeyOrder([]);\nexport default class ObjectSchema extends BaseSchema {\n constructor(spec) {\n super({\n type: 'object'\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n this.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n this.shape(spec);\n }\n });\n }\n\n _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n }\n\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n\n let value = super._cast(_value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.getDefault();\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n\n let props = this._nodes.concat(Object.keys(value).filter(v => this._nodes.indexOf(v) === -1));\n\n let intermediateValue = {}; // is filled during the transform below\n\n let innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n let isChanged = false;\n\n for (const prop of props) {\n let field = fields[prop];\n let exists = has(value, prop);\n\n if (field) {\n let fieldValue;\n let inputValue = value[prop]; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop; // innerOptions.value = value[prop];\n\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = 'spec' in field ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n\n if (fieldSpec == null ? void 0 : fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n\n fieldValue = !options.__validating || !strict ? // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n\n if (intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n\n return isChanged ? intermediateValue : value;\n }\n\n _validate(_value, opts = {}, callback) {\n let errors = [];\n let {\n sync,\n from = [],\n originalValue = _value,\n abortEarly = this.spec.abortEarly,\n recursive = this.spec.recursive\n } = opts;\n from = [{\n schema: this,\n value: originalValue\n }, ...from]; // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n\n opts.__validating = true;\n opts.originalValue = originalValue;\n opts.from = from;\n\n super._validate(_value, opts, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || abortEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !isObject(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value;\n\n let tests = this._nodes.map(key => (_, cb) => {\n let path = key.indexOf('.') === -1 ? (opts.path ? `${opts.path}.` : '') + key : `${opts.path || ''}[\"${key}\"]`;\n let field = this.fields[key];\n\n if (field && 'validate' in field) {\n field.validate(value[key], _extends({}, opts, {\n // @ts-ignore\n path,\n from,\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n strict: true,\n parent: value,\n originalValue: originalValue[key]\n }), cb);\n return;\n }\n\n cb(null);\n });\n\n runTests({\n sync,\n tests,\n value,\n errors,\n endEarly: abortEarly,\n sort: this._sortErrors,\n path: opts.path\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.fields = _extends({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n\n if (target === undefined) {\n nextFields[field] = schemaOrRef;\n } else if (target instanceof BaseSchema && schemaOrRef instanceof BaseSchema) {\n nextFields[field] = schemaOrRef.concat(target);\n }\n }\n\n return next.withMutation(() => next.shape(nextFields));\n }\n\n getDefaultFromShape() {\n let dft = {};\n\n this._nodes.forEach(key => {\n const field = this.fields[key];\n dft[key] = 'default' in field ? field.getDefault() : undefined;\n });\n\n return dft;\n }\n\n _getDefault() {\n if ('default' in this.spec) {\n return super._getDefault();\n } // if there is no default set invent one\n\n\n if (!this._nodes.length) {\n return undefined;\n }\n\n return this.getDefaultFromShape();\n }\n\n shape(additions, excludes = []) {\n let next = this.clone();\n let fields = Object.assign(next.fields, additions);\n next.fields = fields;\n next._sortErrors = sortByKeyOrder(Object.keys(fields));\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n let keys = excludes.map(([first, second]) => `${first}-${second}`);\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n }\n\n pick(keys) {\n const picked = {};\n\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n\n return this.clone().withMutation(next => {\n next.fields = {};\n return next.shape(picked);\n });\n }\n\n omit(keys) {\n const next = this.clone();\n const fields = next.fields;\n next.fields = {};\n\n for (const key of keys) {\n delete fields[key];\n }\n\n return next.withMutation(() => next.shape(fields));\n }\n\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (obj == null) return obj;\n let newObj = obj;\n\n if (has(obj, from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n }\n\n noUnknown(noAllow = true, message = locale.noUnknown) {\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n\n unknown(allow = true, message = locale.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n\n transformKeys(fn) {\n return this.transform(obj => obj && mapKeys(obj, (_, key) => fn(key)));\n }\n\n camelCase() {\n return this.transformKeys(camelCase);\n }\n\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n\n describe() {\n let base = super.describe();\n base.fields = mapValues(this.fields, value => value.describe());\n return base;\n }\n\n}\nexport function create(spec) {\n return new ObjectSchema(spec);\n}\ncreate.prototype = ObjectSchema.prototype;","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\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport printValue from './util/printValue';\nimport { array as locale } from './locale';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\nexport function create(type) {\n return new ArraySchema(type);\n}\nexport default class ArraySchema extends BaseSchema {\n constructor(type) {\n super({\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this.innerType = type;\n this.withMutation(() => {\n this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n });\n }\n\n _typeCheck(v) {\n return Array.isArray(v);\n }\n\n get _subType() {\n return this.innerType;\n }\n\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, _extends({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n\n _validate(_value, options = {}, callback) {\n var _options$abortEarly, _options$recursive;\n\n let errors = [];\n let sync = options.sync;\n let path = options.path;\n let innerType = this.innerType;\n let endEarly = (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n let originalValue = options.originalValue != null ? options.originalValue : _value;\n\n super._validate(_value, options, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || endEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !innerType || !this._typeCheck(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n let tests = new Array(value.length);\n\n for (let idx = 0; idx < value.length; idx++) {\n let item = value[idx];\n let path = `${options.path || ''}[${idx}]`; // object._validate note for isStrict explanation\n\n let innerOptions = _extends({}, options, {\n path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n tests[idx] = (_, cb) => innerType.validate(item, innerOptions, cb);\n }\n\n runTests({\n sync,\n path,\n value,\n errors,\n endEarly,\n tests\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.innerType = this.innerType;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n next.innerType = this.innerType;\n if (schema.innerType) next.innerType = next.innerType ? // @ts-expect-error Lazy doesn't have concat()\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema)); // FIXME(ts):\n\n next.innerType = schema;\n return next;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message) {\n message = message || locale.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n // FIXME(ts): Array<typeof T>\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message) {\n message = message || locale.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n\n describe() {\n let base = super.describe();\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n\n nullable(isNullable = true) {\n return super.nullable(isNullable);\n }\n\n defined() {\n return super.defined();\n }\n\n required(msg) {\n return super.required(msg);\n }\n\n}\ncreate.prototype = ArraySchema.prototype; //\n// Interfaces\n//","/// <reference types=\"@fullcalendar/core-preact\" />\nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n","import { EventSource } from '../structs/event-source'\nimport { CalendarContext } from '../CalendarContext'\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\nexport class EventSourceApi {\n constructor(\n private context: CalendarContext,\n public internalEventSource: EventSource<any>, // rename?\n ) {\n }\n\n remove() {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId,\n })\n }\n\n refetch() {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true,\n })\n }\n\n get id(): string {\n return this.internalEventSource.publicId\n }\n\n get url(): string {\n return this.internalEventSource.meta.url\n }\n\n get format(): string {\n return this.internalEventSource.meta.format // TODO: bad. not guaranteed\n }\n}\n","import { Dictionary } from '../options'\n\nexport function removeElement(el: HTMLElement) { // removes nodes in addition to elements. bad name\n if (el.parentNode) {\n el.parentNode.removeChild(el)\n }\n}\n\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function elementClosest(el: HTMLElement, selector: string): HTMLElement {\n if (el.closest) {\n return el.closest(selector)\n\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null\n }\n do {\n if (elementMatches(el, selector)) {\n return el\n }\n el = (el.parentElement || el.parentNode) as HTMLElement\n } while (el !== null && el.nodeType === 1)\n return null\n}\n\nexport function elementMatches(el: HTMLElement, selector: string): HTMLElement {\n let method = el.matches || (el as any).matchesSelector || (el as any).msMatchesSelector\n\n return method.call(el, selector)\n}\n\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nexport function findElements(container: HTMLElement[] | HTMLElement | NodeListOf<HTMLElement>, selector: string): HTMLElement[] {\n let containers = container instanceof HTMLElement ? [container] : container\n let allMatches: HTMLElement[] = []\n\n for (let i = 0; i < containers.length; i += 1) {\n let matches = containers[i].querySelectorAll(selector)\n\n for (let j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j] as HTMLElement)\n }\n }\n\n return allMatches\n}\n\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nexport function findDirectChildren(parent: HTMLElement[] | HTMLElement, selector?: string): HTMLElement[] {\n let parents = parent instanceof HTMLElement ? [parent] : parent\n let allMatches = []\n\n for (let i = 0; i < parents.length; i += 1) {\n let childNodes = parents[i].children // only ever elements\n\n for (let j = 0; j < childNodes.length; j += 1) {\n let childNode = childNodes[j]\n\n if (!selector || elementMatches(childNode as HTMLElement, selector)) {\n allMatches.push(childNode)\n }\n }\n }\n\n return allMatches\n}\n\n// Style\n// ----------------------------------------------------------------------------------------------------------------\n\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i\n\nexport function applyStyle(el: HTMLElement, props: Dictionary) {\n for (let propName in props) {\n applyStyleProp(el, propName, props[propName])\n }\n}\n\nexport function applyStyleProp(el: HTMLElement, name: string, val) {\n if (val == null) {\n el.style[name] = ''\n } else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = `${val}px`\n } else {\n el.style[name] = val\n }\n}\n\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nexport function getEventTargetViaRoot(ev: Event) {\n return ev.composedPath?.()[0] ?? ev.target\n}\n\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function getElRoot(el: HTMLElement): ShadowRoot | Document {\n return el.getRootNode ? el.getRootNode() as ShadowRoot : document\n}\n\n// Unique ID for DOM attribute\n\nlet guid = 0\n\nexport function getUniqueDomId() {\n guid += 1\n return 'fc-dom-' + guid\n}\n","import { elementClosest } from './dom-manip'\nimport { VUIEvent } from '../vdom'\n\n// Stops a mouse/touch event from doing it's native browser action\nexport function preventDefault(ev) {\n ev.preventDefault()\n}\n\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function buildDelegationHandler<EventType extends (Event | VUIEvent)>(\n selector: string,\n handler: (ev: EventType, matchedTarget: HTMLElement) => void,\n) {\n return (ev: EventType) => {\n let matchedChild = elementClosest(ev.target as HTMLElement, selector)\n\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild)\n }\n }\n}\n\nexport function listenBySelector(\n container: HTMLElement,\n eventType: string,\n selector: string,\n handler: (ev: Event, matchedTarget: HTMLElement) => void,\n) {\n let attachedHandler = buildDelegationHandler(selector, handler)\n\n container.addEventListener(eventType, attachedHandler)\n\n return () => {\n container.removeEventListener(eventType, attachedHandler)\n }\n}\n\nexport function listenToHoverBySelector(\n container: HTMLElement,\n selector: string,\n onMouseEnter: (ev: Event, matchedTarget: HTMLElement) => void,\n onMouseLeave: (ev: Event, matchedTarget: HTMLElement) => void,\n) {\n let currentMatchedChild\n\n return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild\n onMouseEnter(mouseOverEv, matchedChild)\n\n let realOnMouseLeave = (mouseLeaveEv) => {\n currentMatchedChild = null\n onMouseLeave(mouseLeaveEv, matchedChild)\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave)\n }\n\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave)\n }\n })\n}\n\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\n\nconst transitionEventNames = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend',\n]\n\n// triggered only when the next single subsequent transition finishes\nexport function whenTransitionDone(el: HTMLElement, callback: (ev: Event) => void) {\n let realCallback = (ev) => {\n callback(ev)\n transitionEventNames.forEach((eventName) => {\n el.removeEventListener(eventName, realCallback)\n })\n }\n\n transitionEventNames.forEach((eventName) => {\n el.addEventListener(eventName, realCallback) // cross-browser way to determine when the transition finishes\n })\n}\n\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\n\nexport function createAriaClickAttrs(handler: ((ev: UIEvent) => void)) {\n return {\n onClick: handler,\n ...createAriaKeyboardAttrs(handler),\n }\n}\n\nexport function createAriaKeyboardAttrs(handler: ((ev: UIEvent) => void)) {\n return {\n tabIndex: 0,\n onKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev)\n ev.preventDefault() // if space, don't scroll down page\n }\n },\n }\n}\n","import { preventDefault } from './dom-event'\n\nexport type GenericHash = { [key: string]: any } // already did this somewhere\n\nlet guidNumber = 0\n\nexport function guid() {\n guidNumber += 1\n return String(guidNumber)\n}\n\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n// Make the mouse cursor express that an event is not allowed in the current area\nexport function disableCursor() {\n document.body.classList.add('fc-not-allowed')\n}\n\n// Returns the mouse cursor to its original look\nexport function enableCursor() {\n document.body.classList.remove('fc-not-allowed')\n}\n\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function preventSelection(el: HTMLElement) {\n el.classList.add('fc-unselectable')\n el.addEventListener('selectstart', preventDefault)\n}\n\nexport function allowSelection(el: HTMLElement) {\n el.classList.remove('fc-unselectable')\n el.removeEventListener('selectstart', preventDefault)\n}\n\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function preventContextMenu(el: HTMLElement) {\n el.addEventListener('contextmenu', preventDefault)\n}\n\nexport function allowContextMenu(el: HTMLElement) {\n el.removeEventListener('contextmenu', preventDefault)\n}\n\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport interface OrderSpec<Subject> {\n field?: string\n order?: number\n func?: FieldSpecInputFunc<Subject>\n}\n\nexport type FieldSpecInput<Subject> = string | string[] | FieldSpecInputFunc<Subject> | FieldSpecInputFunc<Subject>[]\nexport type FieldSpecInputFunc<Subject> = (a: Subject, b: Subject) => number\n\nexport function parseFieldSpecs<Subject>(input: FieldSpecInput<Subject>): OrderSpec<Subject>[] {\n let specs: OrderSpec<Subject>[] = []\n let tokens = []\n let i\n let token\n\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/)\n } else if (typeof input === 'function') {\n tokens = [input]\n } else if (Array.isArray(input)) {\n tokens = input\n }\n\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i]\n\n if (typeof token === 'string') {\n specs.push(\n token.charAt(0) === '-' ?\n { field: token.substring(1), order: -1 } :\n { field: token, order: 1 },\n )\n } else if (typeof token === 'function') {\n specs.push({ func: token })\n }\n }\n\n return specs\n}\n\nexport function compareByFieldSpecs<Subject>(obj0: Subject, obj1: Subject, fieldSpecs: OrderSpec<Subject>[]): number {\n let i\n let cmp\n\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i])\n if (cmp) {\n return cmp\n }\n }\n\n return 0\n}\n\nexport function compareByFieldSpec<Subject>(obj0: Subject, obj1: Subject, fieldSpec: OrderSpec<Subject>): number {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1)\n }\n\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n * (fieldSpec.order || 1)\n}\n\nexport function flexibleCompare(a, b) {\n if (!a && !b) {\n return 0\n }\n if (b == null) {\n return -1\n }\n if (a == null) {\n return 1\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b))\n }\n return a - b\n}\n\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function padStart(val, len) { // doesn't work with total length more than 3\n let s = String(val)\n return '000'.substr(0, len - s.length) + s\n}\n\nexport function formatWithOrdinals<Args extends any[]>(\n formatter: string | ((...formatterArgs: Args) => string),\n args: Args,\n fallbackText: string,\n) {\n if (typeof formatter === 'function') {\n return formatter(...args)\n }\n if (typeof formatter === 'string') { // non-blank string\n return args.reduce((str, arg, index) => (\n str.replace('$' + index, arg || '')\n ), formatter)\n }\n return fallbackText\n}\n\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function compareNumbers(a, b) { // for .sort()\n return a - b\n}\n\nexport function isInt(n) {\n return n % 1 === 0\n}\n\n/* Weird Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function firstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (args[i] !== undefined) {\n return args[i]\n }\n }\n return undefined\n}\n\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport function computeSmallestCellWidth(cellEl: HTMLElement) {\n let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame')\n let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion')\n\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className') // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className')\n }\n\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width\n}\n","import { Duration } from './duration'\n\nexport type DateMarker = Date\n\nexport const DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']\n\n// Adding\n\nexport function addWeeks(m: DateMarker, n: number) {\n let a = dateToUtcArray(m)\n a[2] += n * 7\n return arrayToUtcDate(a)\n}\n\nexport function addDays(m: DateMarker, n: number) {\n let a = dateToUtcArray(m)\n a[2] += n\n return arrayToUtcDate(a)\n}\n\nexport function addMs(m: DateMarker, n: number) {\n let a = dateToUtcArray(m)\n a[6] += n\n return arrayToUtcDate(a)\n}\n\n// Diffing (all return floats)\n// TODO: why not use ranges?\n\nexport function diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7\n}\n\nexport function diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24)\n}\n\nexport function diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60)\n}\n\nexport function diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60)\n}\n\nexport function diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000\n}\n\nexport function diffDayAndTime(m0: DateMarker, m1: DateMarker): Duration {\n let m0day = startOfDay(m0)\n let m1day = startOfDay(m1)\n\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n }\n}\n\n// Diffing Whole Units\n\nexport function diffWholeWeeks(m0: DateMarker, m1: DateMarker): number {\n let d = diffWholeDays(m0, m1)\n\n if (d !== null && d % 7 === 0) {\n return d / 7\n }\n\n return null\n}\n\nexport function diffWholeDays(m0: DateMarker, m1: DateMarker): number {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1))\n }\n return null\n}\n\n// Start-Of\n\nexport function startOfDay(m: DateMarker): DateMarker {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n ])\n}\n\nexport function startOfHour(m: DateMarker) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n ])\n}\n\nexport function startOfMinute(m: DateMarker) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n ])\n}\n\nexport function startOfSecond(m: DateMarker) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds(),\n ])\n}\n\n// Week Computation\n\nexport function weekOfYear(marker, dow, doy) {\n let y = marker.getUTCFullYear()\n let w = weekOfGivenYear(marker, y, dow, doy)\n\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy)\n }\n\n let nextW = weekOfGivenYear(marker, y + 1, dow, doy)\n if (nextW >= 1) {\n return Math.min(w, nextW)\n }\n\n return w\n}\n\nfunction weekOfGivenYear(marker, year, dow, doy) {\n let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)])\n let dayStart = startOfDay(marker)\n let days = Math.round(diffDays(firstWeekStart, dayStart))\n\n return Math.floor(days / 7) + 1 // zero-indexed\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n let fwd = 7 + dow - doy\n\n // first-week day local weekday -- which local weekday is fwd\n let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7\n\n return -fwdlw + fwd - 1\n}\n\n// Array Conversion\n\nexport function dateToLocalArray(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ]\n}\n\nexport function arrayToLocalDate(a) {\n return new Date(\n a[0],\n a[1] || 0,\n a[2] == null ? 1 : a[2], // day of month\n a[3] || 0,\n a[4] || 0,\n a[5] || 0,\n )\n}\n\nexport function dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n ]\n}\n\nexport function arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0])\n }\n\n return new Date(Date.UTC(...(a as [any, any])))\n}\n\n// Other Utils\n\nexport function isValidDate(m: DateMarker) {\n return !isNaN(m.valueOf())\n}\n\nexport function timeAsMs(m: DateMarker) {\n return m.getUTCHours() * 1000 * 60 * 60 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds()\n}\n","import { DateRange } from '../datelib/date-range'\nimport { guid } from '../util/misc'\n\nexport interface EventInstance {\n instanceId: string\n defId: string\n range: DateRange\n forcedStartTzo: number | null\n forcedEndTzo: number | null\n}\n\nexport type EventInstanceHash = { [instanceId: string]: EventInstance }\n\nexport function createEventInstance(\n defId: string,\n range: DateRange,\n forcedStartTzo?: number,\n forcedEndTzo?: number,\n): EventInstance {\n return {\n instanceId: guid(),\n defId,\n range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n }\n}\n","const { hasOwnProperty } = Object.prototype\n\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nexport function mergeProps(propObjs, complexPropsMap?): any {\n let dest = {}\n\n if (complexPropsMap) {\n for (let name in complexPropsMap) {\n let complexObjs = []\n\n // collect the trailing object values, stopping when a non-object is discovered\n for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n let val = propObjs[i][name]\n\n if (typeof val === 'object' && val) { // non-null object\n complexObjs.unshift(val)\n } else if (val !== undefined) {\n dest[name] = val // if there were no objects, this value will be used\n break\n }\n }\n\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name] = mergeProps(complexObjs)\n }\n }\n }\n\n // copy values into the destination, going from last to first\n for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n let props = propObjs[i]\n\n for (let name in props) {\n if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n dest[name] = props[name]\n }\n }\n }\n\n return dest\n}\n\nexport function filterHash(hash, func) {\n let filtered = {}\n\n for (let key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key]\n }\n }\n\n return filtered\n}\n\nexport function mapHash<InputItem, OutputItem>(\n hash: { [key: string]: InputItem },\n func: (input: InputItem, key: string) => OutputItem,\n): { [key: string]: OutputItem } {\n let newHash = {}\n\n for (let key in hash) {\n newHash[key] = func(hash[key], key)\n }\n\n return newHash\n}\n\nexport function arrayToHash(a): { [key: string]: true } { // TODO: rename to strinArrayToHash or something\n let hash = {}\n\n for (let item of a) {\n hash[item] = true\n }\n\n return hash\n}\n\nexport function buildHashFromArray<Item, ItemRes>(a: Item[], func: (item: Item, index: number) => [ string, ItemRes ]) {\n let hash: { [key: string]: ItemRes } = {}\n\n for (let i = 0; i < a.length; i += 1) {\n let tuple = func(a[i], i)\n\n hash[tuple[0]] = tuple[1]\n }\n\n return hash\n}\n\nexport function hashValuesToArray(obj) { // can't use Object.values yet because of no IE support\n let a = []\n\n for (let key in obj) {\n a.push(obj[key])\n }\n\n return a\n}\n\nexport function isPropsEqual(obj0, obj1) { // TODO: merge with compareObjs\n if (obj0 === obj1) {\n return true\n }\n\n for (let key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false\n }\n }\n }\n\n for (let key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false\n }\n }\n }\n\n return true\n}\n\nexport function getUnequalProps(obj0, obj1) {\n let keys: string[] = []\n\n for (let key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key)\n }\n }\n }\n\n for (let key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key)\n }\n }\n }\n\n return keys\n}\n\nexport type EqualityFunc<T> = (a: T, b: T) => boolean\nexport type EqualityThing<T> = EqualityFunc<T> | true\n\nexport type EqualityFuncs<ObjType> = { // not really just a \"func\" anymore\n [K in keyof ObjType]?: EqualityThing<ObjType[K]>\n}\n\nexport function compareObjs(oldProps, newProps, equalityFuncs: EqualityFuncs<any> = {}) {\n if (oldProps === newProps) {\n return true\n }\n\n for (let key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {\n // equal\n } else {\n return false\n }\n }\n\n // check for props that were omitted in the new\n for (let key in oldProps) {\n if (!(key in newProps)) {\n return false\n }\n }\n\n return true\n}\n\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual<T>(val0: T, val1: T, comparator: EqualityThing<T>) {\n if (val0 === val1 || comparator === true) {\n return true\n }\n if (comparator) {\n return comparator(val0, val1)\n }\n return false\n}\n\nexport function collectFromHash<Item>(\n hash: { [key: string]: Item },\n startIndex = 0,\n endIndex?: number,\n step = 1,\n) {\n let res: Item[] = []\n\n if (endIndex == null) {\n endIndex = Object.keys(hash).length\n }\n\n for (let i = startIndex; i < endIndex; i += step) {\n let val = hash[i]\n\n if (val !== undefined) { // will disregard undefined for sparse arrays\n res.push(val)\n }\n }\n\n return res\n}\n","import { EventDef } from './event-def'\nimport { EventInstance, createEventInstance } from './event-instance'\nimport { DateRange } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { Duration } from '../datelib/duration'\nimport { DateMarker, startOfDay } from '../datelib/marker'\nimport { EventStore } from './event-store'\nimport { CalendarContext } from '../CalendarContext'\nimport { filterHash } from '../util/object'\nimport { EventRefined } from './event-parse'\n\n/*\nThe plugin system for defining how a recurring event is expanded into individual instances.\n*/\n\nexport interface ParsedRecurring<RecurringData> {\n typeData: RecurringData\n allDayGuess: boolean | null\n duration: Duration | null // signals hasEnd\n}\n\nexport interface RecurringType<RecurringData> {\n parse: (refined: EventRefined, dateEnv: DateEnv) => ParsedRecurring<RecurringData> | null // TODO: rename to post-process or something\n expand: (typeData: any, framingRange: DateRange, dateEnv: DateEnv) => DateMarker[]\n}\n\nexport function parseRecurring(\n refined: EventRefined,\n defaultAllDay: boolean | null,\n dateEnv: DateEnv,\n recurringTypes: RecurringType<any>[],\n) {\n for (let i = 0; i < recurringTypes.length; i += 1) {\n let parsed = recurringTypes[i].parse(refined, dateEnv)\n\n if (parsed) {\n let { allDay } = refined\n if (allDay == null) {\n allDay = defaultAllDay\n if (allDay == null) {\n allDay = parsed.allDayGuess\n if (allDay == null) {\n allDay = false\n }\n }\n }\n\n return {\n allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i,\n }\n }\n }\n\n return null\n}\n\nexport function expandRecurring(eventStore: EventStore, framingRange: DateRange, context: CalendarContext): EventStore {\n let { dateEnv, pluginHooks, options } = context\n let { defs, instances } = eventStore\n\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, (instance: EventInstance) => !defs[instance.defId].recurringDef)\n\n for (let defId in defs) {\n let def = defs[defId]\n\n if (def.recurringDef) {\n let { duration } = def.recurringDef\n\n if (!duration) {\n duration = def.allDay ?\n options.defaultAllDayEventDuration :\n options.defaultTimedEventDuration\n }\n\n let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes)\n\n for (let start of starts) {\n let instance = createEventInstance(defId, {\n start,\n end: dateEnv.add(start, duration),\n })\n instances[instance.instanceId] = instance\n }\n }\n }\n\n return { defs, instances }\n}\n\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(\n eventDef: EventDef,\n duration: Duration,\n framingRange: DateRange,\n dateEnv: DateEnv,\n recurringTypes: RecurringType<any>[],\n): DateMarker[] {\n let typeDef = recurringTypes[eventDef.recurringDef.typeId]\n let markers = typeDef.expand(\n eventDef.recurringDef.typeData,\n {\n start: dateEnv.subtract(framingRange.start, duration), // for when event starts before framing range and goes into\n end: framingRange.end,\n },\n dateEnv,\n )\n\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay)\n }\n\n return markers\n}\n","import { isInt } from '../util/misc'\n\nexport type DurationInput = DurationObjectInput | string | number\n\nexport interface DurationObjectInput {\n years?: number\n year?: number\n months?: number\n month?: number\n weeks?: number\n week?: number\n days?: number\n day?: number\n hours?: number\n hour?: number\n minutes?: number\n minute?: number\n seconds?: number\n second?: number\n milliseconds?: number\n millisecond?: number\n ms?: number\n}\n\nexport interface Duration {\n years: number\n months: number\n days: number\n milliseconds: number\n specifiedWeeks?: boolean\n}\n\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds']\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/\n\n// Parsing and Creation\n\nexport function createDuration(input: DurationInput, unit?: string): Duration | null {\n if (typeof input === 'string') {\n return parseString(input)\n }\n\n if (typeof input === 'object' && input) { // non-null object\n return parseObject(input)\n }\n\n if (typeof input === 'number') {\n return parseObject({ [unit || 'milliseconds']: input })\n }\n return null\n}\n\nfunction parseString(s: string): Duration {\n let m = PARSE_RE.exec(s)\n if (m) {\n let sign = m[1] ? -1 : 1\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * (\n (m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n (m[6] ? parseInt(m[6], 10) : 0) // ms\n ),\n }\n }\n return null\n}\n\nfunction parseObject(obj: DurationObjectInput): Duration {\n let duration: Duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds:\n (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // seconds\n (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n }\n\n let weeks = obj.weeks || obj.week\n if (weeks) {\n duration.days += weeks * 7\n duration.specifiedWeeks = true\n }\n\n return duration\n}\n\n// Equality\n\nexport function durationsEqual(d0: Duration, d1: Duration): boolean {\n return d0.years === d1.years &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n d0.milliseconds === d1.milliseconds\n}\n\nexport function asCleanDays(dur: Duration) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days\n }\n return 0\n}\n\n// Simple Math\n\nexport function addDurations(d0: Duration, d1: Duration) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds,\n }\n}\n\nexport function subtractDurations(d1: Duration, d0: Duration): Duration {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds,\n }\n}\n\nexport function multiplyDuration(d: Duration, n: number) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n,\n }\n}\n\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\n\nexport function asRoughYears(dur: Duration) {\n return asRoughDays(dur) / 365\n}\n\nexport function asRoughMonths(dur: Duration) {\n return asRoughDays(dur) / 30\n}\n\nexport function asRoughDays(dur: Duration) {\n return asRoughMs(dur) / 864e5\n}\n\nexport function asRoughHours(dur: Duration) {\n return asRoughMs(dur) / (1000 * 60 * 60)\n}\n\nexport function asRoughMinutes(dur: Duration) {\n return asRoughMs(dur) / (1000 * 60)\n}\n\nexport function asRoughSeconds(dur: Duration) {\n return asRoughMs(dur) / 1000\n}\n\nexport function asRoughMs(dur: Duration) {\n return dur.years * (365 * 864e5) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n dur.milliseconds\n}\n\n// Advanced Math\n\nexport function wholeDivideDurations(numerator: Duration, denominator: Duration): number {\n let res = null\n\n for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n let unit = INTERNAL_UNITS[i]\n\n if (denominator[unit]) {\n let localRes = numerator[unit] / denominator[unit]\n\n if (!isInt(localRes) || (res !== null && res !== localRes)) {\n return null\n }\n\n res = localRes\n } else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null\n }\n }\n\n return res\n}\n\nexport function greatestDurationDenominator(dur: Duration) {\n let ms = dur.milliseconds\n if (ms) {\n if (ms % 1000 !== 0) {\n return { unit: 'millisecond', value: ms }\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 }\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) }\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) }\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 }\n }\n return { unit: 'day', value: dur.days }\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months }\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years }\n }\n return { unit: 'millisecond', value: 0 }\n}\n","import { DateMarker } from './marker'\nimport { padStart } from '../util/misc'\n\n// timeZoneOffset is in minutes\nexport function buildIsoString(marker: DateMarker, timeZoneOffset?: number, stripZeroTime: boolean = false) {\n let s = marker.toISOString()\n\n s = s.replace('.000', '')\n\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '')\n }\n\n if (s.length > 10) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '')\n } else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true))\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n\n return s\n}\n\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nexport function formatDayString(marker: DateMarker) {\n return marker.toISOString().replace(/T.*$/, '')\n}\n\n// TODO: use Date::toISOString and use everything after the T?\nexport function formatIsoTimeString(marker: DateMarker) {\n return padStart(marker.getUTCHours(), 2) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2)\n}\n\nexport function formatTimeZoneOffset(minutes: number, doIso = false) {\n let sign = minutes < 0 ? '-' : '+'\n let abs = Math.abs(minutes)\n let hours = Math.floor(abs / 60)\n let mins = Math.round(abs % 60)\n\n if (doIso) {\n return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`\n }\n return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`\n}\n","// TODO: new util arrayify?\n// Array.prototype.slice.call(\n\nexport function removeMatching(array, testFunc) {\n let removeCnt = 0\n let i = 0\n\n while (i < array.length) {\n if (testFunc(array[i])) { // truthy value means *remove*\n array.splice(i, 1)\n removeCnt += 1\n } else {\n i += 1\n }\n }\n\n return removeCnt\n}\n\nexport function removeExact(array, exactVal) {\n let removeCnt = 0\n let i = 0\n\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1)\n removeCnt += 1\n } else {\n i += 1\n }\n }\n\n return removeCnt\n}\n\nexport function isArraysEqual(a0, a1, equalityFunc?: (v0, v1) => boolean) { // TODO: better typing\n if (a0 === a1) {\n return true\n }\n\n let len = a0.length\n let i\n\n if (len !== a1.length) { // not array? or not same length?\n return false\n }\n\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false\n }\n }\n\n return true\n}\n","import { isArraysEqual } from './array'\nimport { isPropsEqual } from './object'\nimport { Dictionary } from '../options'\n\nexport function memoize<Args extends any[], Res>(\n workerFunc: (...args: Args) => Res,\n resEquality?: (res0: Res, res1: Res) => boolean,\n teardownFunc?: (res: Res) => void,\n): (...args: Args) => Res {\n let currentArgs: Args | undefined\n let currentRes: Res | undefined\n\n return function (...newArgs: Args) { // eslint-disable-line func-names\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs)\n } else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes)\n }\n\n let res = workerFunc.apply(this, newArgs)\n\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res\n }\n }\n\n currentArgs = newArgs\n\n return currentRes\n }\n}\n\nexport function memoizeObjArg<Arg extends Dictionary, Res>(\n workerFunc: (arg: Arg) => Res,\n resEquality?: (res0: Res, res1: Res) => boolean,\n teardownFunc?: (res: Res) => void,\n): (arg: Arg) => Res {\n let currentArg: Arg | undefined\n let currentRes: Res | undefined\n\n return (newArg: Arg) => {\n if (!currentArg) {\n currentRes = workerFunc.call(this, newArg)\n } else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes)\n }\n\n let res = workerFunc.call(this, newArg)\n\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res\n }\n }\n\n currentArg = newArg\n\n return currentRes\n }\n}\n\nexport type MemoiseArrayFunc<Args extends any[], Res> =\n (argSets: Args[]) => Res[]\n\nexport function memoizeArraylike<Args extends any[], Res>( // used at all?\n workerFunc: (...args: Args) => Res,\n resEquality?: (res0: Res, res1: Res) => boolean,\n teardownFunc?: (res: Res) => void,\n): MemoiseArrayFunc<Args, Res> {\n let currentArgSets: Args[] = []\n let currentResults: Res[] = []\n\n return (newArgSets: Args[]) => {\n let currentLen = currentArgSets.length\n let newLen = newArgSets.length\n let i = 0\n\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) { // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i])\n }\n } else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i])\n }\n\n let res = workerFunc.apply(this, newArgSets[i])\n\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res\n }\n }\n }\n\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(this, newArgSets[i])\n }\n\n currentArgSets = newArgSets\n currentResults.splice(newLen) // remove excess\n\n return currentResults\n }\n}\n\nexport type MemoizeHashFunc<Args extends any[], Res> =\n (argHash: { [key: string]: Args }) => { [key: string]: Res }\n\nexport function memoizeHashlike<Args extends any[], Res>(\n workerFunc: (...args: Args) => Res,\n resEquality?: (res0: Res, res1: Res) => boolean,\n teardownFunc?: (res: Res) => void, // TODO: change arg order\n): MemoizeHashFunc<Args, Res> {\n let currentArgHash: { [key: string]: Args } = {}\n let currentResHash: { [key: string]: Res } = {}\n\n return (newArgHash: { [key: string]: Args }) => {\n let newResHash: { [key: string]: Res } = {}\n\n for (let key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(this, newArgHash[key])\n } else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key])\n }\n\n let res = workerFunc.apply(this, newArgHash[key])\n\n newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n ? currentResHash[key]\n : res\n } else {\n newResHash[key] = currentResHash[key]\n }\n }\n\n currentArgHash = newArgHash\n currentResHash = newResHash\n\n return newResHash\n }\n}\n","import { DateMarker, timeAsMs } from './marker'\nimport { CalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { DateFormatter, DateFormattingContext } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\nimport { formatTimeZoneOffset } from './formatting-utils'\nimport { memoize } from '../util/memoize'\n\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0, // 0 = not applicable\n omitZeroMinute: 0,\n meridiem: 0, // like am/pm\n omitCommas: 0,\n}\n\nconst STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1,\n}\n\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i // eats up leading spaces too\nconst COMMA_RE = /,/g // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g\nconst LTR_RE = /\\u200e/g // control character\nconst UTC_RE = /UTC|GMT/\n\nexport interface NativeFormatterOptions extends Intl.DateTimeFormatOptions {\n week?: 'long' | 'short' | 'narrow' | 'numeric'\n meridiem?: 'lowercase' | 'short' | 'narrow' | boolean\n omitZeroMinute?: boolean\n omitCommas?: boolean\n separator?: string\n}\n\nexport class NativeFormatter implements DateFormatter {\n standardDateProps: any\n extendedSettings: any\n severity: number\n private buildFormattingFunc: typeof buildFormattingFunc // caching for efficiency with same date env\n\n constructor(formatSettings: NativeFormatterOptions) {\n let standardDateProps: any = {}\n let extendedSettings: any = {}\n let severity = 0\n\n for (let name in formatSettings) {\n if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name] = formatSettings[name]\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity)\n } else {\n standardDateProps[name] = formatSettings[name]\n\n if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity)\n }\n }\n }\n\n this.standardDateProps = standardDateProps\n this.extendedSettings = extendedSettings\n this.severity = severity\n\n this.buildFormattingFunc = memoize(buildFormattingFunc)\n }\n\n format(date: ZonedMarker, context: DateFormattingContext) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date)\n }\n\n formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n let { standardDateProps, extendedSettings } = this\n\n let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem)\n if (!diffSeverity) {\n return this.format(start, context)\n }\n\n let biggestUnitForPartial = diffSeverity\n if (\n biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')\n ) {\n biggestUnitForPartial = 1 // make it look like the dates are only different in terms of time\n }\n\n let full0 = this.format(start, context)\n let full1 = this.format(end, context)\n\n if (full0 === full1) {\n return full0\n }\n\n let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial)\n let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context)\n let partial0 = partialFormattingFunc(start)\n let partial1 = partialFormattingFunc(end)\n\n let insertion = findCommonInsertion(full0, partial0, full1, partial1)\n let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || ''\n\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after\n }\n\n return full0 + separator + full1\n }\n\n getLargestUnit() {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year'\n case 4:\n return 'month'\n case 3:\n return 'week'\n case 2:\n return 'day'\n default:\n return 'time' // really?\n }\n }\n}\n\nfunction buildFormattingFunc(\n standardDateProps,\n extendedSettings,\n context: DateFormattingContext,\n): (date: ZonedMarker) => string {\n let standardDatePropCnt = Object.keys(standardDateProps).length\n\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return (date: ZonedMarker) => (\n formatTimeZoneOffset(date.timeZoneOffset)\n )\n }\n\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return (date: ZonedMarker) => (\n formatWeekNumber(\n context.computeWeekNumber(date.marker),\n context.weekText,\n context.weekTextLong,\n context.locale,\n extendedSettings.week,\n )\n )\n }\n\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context)\n}\n\nfunction buildNativeFormattingFunc(\n standardDateProps,\n extendedSettings,\n context: DateFormattingContext,\n): (date: ZonedMarker) => string {\n standardDateProps = { ...standardDateProps } // copy\n extendedSettings = { ...extendedSettings } // copy\n\n sanitizeSettings(standardDateProps, extendedSettings)\n\n standardDateProps.timeZone = 'UTC' // we leverage the only guaranteed timeZone for our UTC markers\n\n let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps)\n let zeroFormat // needed?\n\n if (extendedSettings.omitZeroMinute) {\n let zeroProps = { ...standardDateProps }\n delete zeroProps.minute // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps)\n }\n\n return (date: ZonedMarker) => {\n let { marker } = date\n let format\n\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat\n } else {\n format = normalFormat\n }\n\n let s = format.format(marker)\n\n return postProcess(s, date, standardDateProps, extendedSettings, context)\n }\n}\n\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit'\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit'\n }\n }\n\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short'\n }\n\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute\n }\n}\n\nfunction postProcess(s: string, date: ZonedMarker, standardDateProps, extendedSettings, context: DateFormattingContext): string {\n s = s.replace(LTR_RE, '') // remove left-to-right control chars. do first. good for other regexes\n\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(\n s,\n (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset),\n )\n }\n\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim()\n }\n\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', '') // zeroFormat doesn't always achieve this\n }\n\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim()\n } else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase())\n } else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`)\n } else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, (m0) => m0.toLocaleLowerCase())\n }\n\n s = s.replace(MULTI_SPACE_RE, ' ')\n s = s.trim()\n\n return s\n}\n\nfunction injectTzoStr(s: string, tzoStr: string): string {\n let replaced = false\n\n s = s.replace(UTC_RE, () => {\n replaced = true\n return tzoStr\n })\n\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += ` ${tzoStr}`\n }\n\n return s\n}\n\nfunction formatWeekNumber(\n num: number,\n weekText: string,\n weekTextLong: string,\n locale: Locale,\n display?: 'numeric' | 'narrow' | 'short' | 'long',\n): string {\n let parts = []\n\n if (display === 'long') {\n parts.push(weekTextLong)\n } else if (display === 'short' || display === 'narrow') {\n parts.push(weekText)\n }\n\n if (display === 'long' || display === 'short') {\n parts.push(' ')\n }\n\n parts.push(locale.simpleNumberFormat.format(num))\n\n if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n parts.reverse()\n }\n\n return parts.join('')\n}\n\n// Range Formatting Utils\n\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0: DateMarker, d1: DateMarker, ca: CalendarSystem) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1\n }\n return 0\n}\n\nfunction computePartialFormattingOptions(options, biggestUnit) {\n let partialOptions = {}\n\n for (let name in options) {\n if (\n !(name in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit\n ) {\n partialOptions[name] = options[name]\n }\n }\n\n return partialOptions\n}\n\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n let i0 = 0\n while (i0 < full0.length) {\n let found0 = full0.indexOf(partial0, i0)\n if (found0 === -1) {\n break\n }\n\n let before0 = full0.substr(0, found0)\n i0 = found0 + partial0.length\n let after0 = full0.substr(i0)\n\n let i1 = 0\n while (i1 < full1.length) {\n let found1 = full1.indexOf(partial1, i1)\n if (found1 === -1) {\n break\n }\n\n let before1 = full1.substr(0, found1)\n i1 = found1 + partial1.length\n let after1 = full1.substr(i1)\n\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0,\n }\n }\n }\n }\n\n return null\n}\n","import { DateMarker } from './marker'\nimport { CalendarSystem } from './calendar-system'\n\nexport interface ZonedMarker {\n marker: DateMarker,\n timeZoneOffset: number\n}\n\nexport interface ExpandedZonedMarker extends ZonedMarker {\n array: number[],\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number,\n millisecond: number\n}\n\nexport function expandZonedMarker(dateInfo: ZonedMarker, calendarSystem: CalendarSystem): ExpandedZonedMarker {\n let a = calendarSystem.markerToArray(dateInfo.marker)\n\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6],\n }\n}\n","import { DateMarker } from './marker'\nimport { CalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { ZonedMarker, ExpandedZonedMarker, expandZonedMarker } from './zoned-marker'\n\nexport interface VerboseFormattingArg { // TODO: kill this\n date: ExpandedZonedMarker\n start: ExpandedZonedMarker\n end?: ExpandedZonedMarker\n timeZone: string\n localeCodes: string[],\n defaultSeparator: string\n}\n\nexport function createVerboseFormattingArg(\n start: ZonedMarker,\n end: ZonedMarker,\n context: DateFormattingContext,\n betterDefaultSeparator?: string,\n): VerboseFormattingArg {\n let startInfo = expandZonedMarker(start, context.calendarSystem)\n let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null\n\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n }\n}\n\nexport type CmdFormatterFunc = (cmd: string, arg: VerboseFormattingArg) => string\n\nexport interface DateFormattingContext {\n timeZone: string,\n locale: Locale,\n calendarSystem: CalendarSystem\n computeWeekNumber: (d: DateMarker) => number\n weekText: string\n weekTextLong: string\n cmdFormatter?: CmdFormatterFunc\n defaultSeparator: string\n}\n\nexport interface DateFormatter {\n format(date: ZonedMarker, context: DateFormattingContext): string\n formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string): string\n}\n","import { DateFormatter, DateFormattingContext, createVerboseFormattingArg } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nexport class CmdFormatter implements DateFormatter {\n cmdStr: string\n\n constructor(cmdStr: string) {\n this.cmdStr = cmdStr\n }\n\n format(date: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator))\n }\n\n formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator))\n }\n}\n","import { DateFormatter, DateFormattingContext, createVerboseFormattingArg, VerboseFormattingArg } from './DateFormatter'\nimport { ZonedMarker } from './zoned-marker'\n\nexport type FuncFormatterFunc = (arg: VerboseFormattingArg) => string\n\nexport class FuncFormatter implements DateFormatter {\n func: FuncFormatterFunc\n\n constructor(func: FuncFormatterFunc) {\n this.func = func\n }\n\n format(date: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator))\n }\n\n formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, betterDefaultSeparator?: string) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator))\n }\n}\n","import { NativeFormatter, NativeFormatterOptions } from './formatting-native'\nimport { CmdFormatter } from './formatting-cmd'\nimport { FuncFormatter, FuncFormatterFunc } from './formatting-func'\nimport { DateFormatter } from './DateFormatter'\n\nexport type FormatterInput = NativeFormatterOptions | string | FuncFormatterFunc\n\nexport function createFormatter(input: FormatterInput): DateFormatter {\n if (typeof input === 'object' && input) { // non-null object\n return new NativeFormatter(input)\n }\n\n if (typeof input === 'string') {\n return new CmdFormatter(input)\n }\n\n if (typeof input === 'function') {\n return new FuncFormatter(input as FuncFormatterFunc)\n }\n\n return null\n}\n","export const OPTION_REFINERS = {\n schedulerLicenseKey: String,\n}\n","import { EventDef, EventDefHash } from './event-def'\nimport { EventInstance, EventInstanceHash } from './event-instance'\nimport { EventInput, parseEvent, EventTuple, buildEventRefiners } from './event-parse'\nimport { filterHash } from '../util/object'\nimport { CalendarContext } from '../CalendarContext'\nimport { EventSource } from './event-source'\n\n/*\nA data structure that encapsulates EventDefs and EventInstances.\nUtils for parsing this data from raw EventInputs.\nUtils for manipulating an EventStore.\n*/\n\nexport interface EventStore {\n defs: EventDefHash\n instances: EventInstanceHash\n}\n\nexport function parseEvents(\n rawEvents: EventInput[],\n eventSource: EventSource<any> | null,\n context: CalendarContext,\n allowOpenRange?: boolean,\n): EventStore {\n let eventStore = createEmptyEventStore()\n let eventRefiners = buildEventRefiners(context)\n\n for (let rawEvent of rawEvents) {\n let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners)\n\n if (tuple) {\n eventTupleToStore(tuple, eventStore)\n }\n }\n\n return eventStore\n}\n\nexport function eventTupleToStore(tuple: EventTuple, eventStore: EventStore = createEmptyEventStore()) {\n eventStore.defs[tuple.def.defId] = tuple.def\n\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance\n }\n\n return eventStore\n}\n\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nexport function getRelevantEvents(eventStore: EventStore, instanceId: string): EventStore {\n let instance = eventStore.instances[instanceId]\n\n if (instance) {\n let def = eventStore.defs[instance.defId]\n\n // get events/instances with same group\n let newStore = filterEventStoreDefs(eventStore, (lookDef) => isEventDefsGrouped(def, lookDef))\n\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def.defId] = def\n newStore.instances[instance.instanceId] = instance\n\n return newStore\n }\n\n return createEmptyEventStore()\n}\n\nfunction isEventDefsGrouped(def0: EventDef, def1: EventDef): boolean {\n return Boolean(def0.groupId && def0.groupId === def1.groupId)\n}\n\nexport function createEmptyEventStore(): EventStore {\n return { defs: {}, instances: {} }\n}\n\nexport function mergeEventStores(store0: EventStore, store1: EventStore): EventStore {\n return {\n defs: { ...store0.defs, ...store1.defs },\n instances: { ...store0.instances, ...store1.instances },\n }\n}\n\nexport function filterEventStoreDefs(eventStore: EventStore, filterFunc: (eventDef: EventDef) => boolean): EventStore {\n let defs = filterHash(eventStore.defs, filterFunc)\n let instances = filterHash(eventStore.instances, (instance: EventInstance) => (\n defs[instance.defId] // still exists?\n ))\n return { defs, instances }\n}\n\nexport function excludeSubEventStore(master: EventStore, sub: EventStore): EventStore {\n let { defs, instances } = master\n let filteredDefs: { [defId: string]: EventDef } = {}\n let filteredInstances: { [instanceId: string]: EventInstance } = {}\n\n for (let defId in defs) {\n if (!sub.defs[defId]) { // not explicitly excluded\n filteredDefs[defId] = defs[defId]\n }\n }\n\n for (let instanceId in instances) {\n if (\n !sub.instances[instanceId] && // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId]\n }\n }\n\n return {\n defs: filteredDefs,\n instances: filteredInstances,\n }\n}\n","export type ClassNamesInput = string | string[]\n\nexport function parseClassNames(raw: ClassNamesInput) {\n if (Array.isArray(raw)) {\n return raw\n }\n\n if (typeof raw === 'string') {\n return raw.split(/\\s+/)\n }\n\n return []\n}\n","import { Constraint, AllowFunc, normalizeConstraint } from '../structs/constraint'\nimport { parseClassNames } from '../util/html'\nimport { CalendarContext } from '../CalendarContext'\nimport { RawOptionsFromRefiners, RefinedOptionsFromRefiners, identity, Identity } from '../options'\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\n\nexport const EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity as Identity<any>, // Identity<ConstraintInput>, // circular reference. ts dies. event->constraint->event\n overlap: identity as Identity<boolean>,\n allow: identity as Identity<AllowFunc>,\n className: parseClassNames, // will both end up as array of strings\n classNames: parseClassNames, // \"\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String,\n}\n\nconst EMPTY_EVENT_UI: EventUi = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n}\n\ntype BuiltInEventUiRefiners = typeof EVENT_UI_REFINERS\n\ninterface EventUiRefiners extends BuiltInEventUiRefiners {\n // to prevent circular reference (and give is the option for ambient modification for later)\n}\n\nexport type EventUiInput = RawOptionsFromRefiners<Required<EventUiRefiners>> // Required hack\nexport type EventUiRefined = RefinedOptionsFromRefiners<Required<EventUiRefiners>> // Required hack\n\nexport interface EventUi {\n display: string | null\n startEditable: boolean | null\n durationEditable: boolean | null\n constraints: Constraint[]\n overlap: boolean | null\n allows: AllowFunc[] // crappy name to indicate plural\n backgroundColor: string\n borderColor: string\n textColor: string,\n classNames: string[]\n}\n\nexport type EventUiHash = { [defId: string]: EventUi }\n\nexport function createEventUi(refined: EventUiRefined, context: CalendarContext): EventUi {\n let constraint = normalizeConstraint(refined.constraint, context)\n\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n }\n}\n\n// TODO: prevent against problems with <2 args!\nexport function combineEventUis(uis: EventUi[]): EventUi {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI)\n}\n\nfunction combineTwoEventUis(item0: EventUi, item1: EventUi): EventUi { // hash1 has higher precedence\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames),\n }\n}\n","import { EventStore, parseEvents } from './event-store'\nimport { EventInput } from './event-parse'\nimport { DateSpanApi } from './date-span'\nimport { EventApi } from '../api/EventApi'\nimport { SplittableProps } from '../component/event-splitting'\nimport { CalendarContext } from '../CalendarContext'\n\n// TODO: rename to \"criteria\" ?\nexport type ConstraintInput = 'businessHours' | string | EventInput | EventInput[]\nexport type Constraint = 'businessHours' | string | EventStore | false // false means won't pass at all\nexport type OverlapFunc = ((stillEvent: EventApi, movingEvent: EventApi | null) => boolean)\nexport type AllowFunc = (span: DateSpanApi, movingEvent: EventApi | null) => boolean\nexport type isPropsValidTester = (props: SplittableProps, context: CalendarContext) => boolean\n\nexport function normalizeConstraint(input: ConstraintInput, context: CalendarContext): Constraint | null {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true) // allowOpenRange=true\n } if (typeof input === 'object' && input) { // non-null object\n return parseEvents([input], null, context, true) // allowOpenRange=true\n } if (input != null) {\n return String(input)\n }\n return null\n}\n","import { EventRefined, identity, Identity } from '@fullcalendar/common'\n\nexport const EVENT_REFINERS = {\n resourceId: String,\n resourceIds: identity as Identity<string[]>,\n resourceEditable: Boolean,\n}\n\nexport function generateEventDefResourceMembers(refined: EventRefined) {\n return {\n resourceIds: ensureStringArray(refined.resourceIds)\n .concat(refined.resourceId ? [refined.resourceId] : []),\n resourceEditable: refined.resourceEditable,\n }\n}\n\nfunction ensureStringArray(items: any[]) {\n return (items || []).map((item) => String(item))\n}\n","import { DateMarker, startOfDay, addDays, diffDays, diffDayAndTime } from '../datelib/marker'\nimport { Duration, asRoughMs, createDuration } from '../datelib/duration'\nimport { DateEnv } from '../datelib/env'\nimport { DateRange, OpenDateRange } from '../datelib/date-range'\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nexport function computeAlignedDayRange(timedRange: DateRange): DateRange {\n let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1\n let start = startOfDay(timedRange.start)\n let end = addDays(start, dayCnt)\n return { start, end }\n}\n\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nexport function computeVisibleDayRange(timedRange: OpenDateRange, nextDayThreshold: Duration = createDuration(0)): OpenDateRange {\n let startDay: DateMarker = null\n let endDay: DateMarker = null\n\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end)\n\n let endTimeMS: number = timedRange.end.valueOf() - endDay.valueOf() // # of milliseconds into `endDay`\n\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1)\n }\n }\n\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start) // the beginning of the day the range starts\n\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1)\n }\n }\n\n return { start: startDay, end: endDay }\n}\n\n// spans from one day into another?\nexport function isMultiDayRange(range: DateRange) {\n let visibleRange = computeVisibleDayRange(range)\n\n return diffDays(visibleRange.start, visibleRange.end) > 1\n}\n\nexport function diffDates(date0: DateMarker, date1: DateMarker, dateEnv: DateEnv, largeUnit?: string) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year')!\n }\n\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month')!\n }\n\n return diffDayAndTime(date0, date1) // returns a duration\n}\n","import { DateMarker } from './marker'\nimport { DateEnv, DateInput } from './env'\n\nexport interface DateRangeInput {\n start?: DateInput\n end?: DateInput\n}\n\nexport interface OpenDateRange {\n start: DateMarker | null\n end: DateMarker | null\n}\n\nexport interface DateRange {\n start: DateMarker\n end: DateMarker\n}\n\nexport function parseRange(input: DateRangeInput, dateEnv: DateEnv): OpenDateRange {\n let start = null\n let end = null\n\n if (input.start) {\n start = dateEnv.createMarker(input.start)\n }\n\n if (input.end) {\n end = dateEnv.createMarker(input.end)\n }\n\n if (!start && !end) {\n return null\n }\n\n if (start && end && end < start) {\n return null\n }\n\n return { start, end }\n}\n\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nexport function invertRanges(ranges: DateRange[], constraintRange: DateRange): DateRange[] {\n let invertedRanges: DateRange[] = []\n let { start } = constraintRange // the end of the previous range. the start of the new range\n let i\n let dateRange\n\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges)\n\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i]\n\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start, end: dateRange.start })\n }\n\n if (dateRange.end > start) {\n start = dateRange.end\n }\n }\n\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start, end: constraintRange.end })\n }\n\n return invertedRanges\n}\n\nfunction compareRanges(range0: DateRange, range1: DateRange) {\n return range0.start.valueOf() - range1.start.valueOf() // earlier ranges go first\n}\n\nexport function intersectRanges(range0: OpenDateRange, range1: OpenDateRange): OpenDateRange {\n let { start, end } = range0\n let newRange = null\n\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start\n } else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()))\n }\n }\n\n if (range1.end != null) {\n if (end === null) {\n end = range1.end\n } else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()))\n }\n }\n\n if (start === null || end === null || start < end) {\n newRange = { start, end }\n }\n\n return newRange\n}\n\nexport function rangesEqual(range0: OpenDateRange, range1: OpenDateRange): boolean {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf())\n}\n\nexport function rangesIntersect(range0: OpenDateRange, range1: OpenDateRange): boolean {\n return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n (range0.start === null || range1.end === null || range0.start < range1.end)\n}\n\nexport function rangeContainsRange(outerRange: OpenDateRange, innerRange: OpenDateRange): boolean {\n return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end))\n}\n\nexport function rangeContainsMarker(range: OpenDateRange, date: DateMarker | number): boolean { // date can be a millisecond time\n return (range.start === null || date >= range.start) &&\n (range.end === null || date < range.end)\n}\n\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nexport function constrainMarkerToRange(date: DateMarker, range: DateRange): DateMarker {\n if (range.start != null && date < range.start) {\n return range.start\n }\n\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1)\n }\n\n return date\n}\n","import { EventDef, EventDefHash } from '../structs/event-def'\nimport { EventTuple } from '../structs/event-parse'\nimport { EventStore } from '../structs/event-store'\nimport { DateRange, invertRanges, intersectRanges, rangeContainsMarker } from '../datelib/date-range'\nimport { Duration } from '../datelib/duration'\nimport { compareByFieldSpecs, OrderSpec } from '../util/misc'\nimport { computeVisibleDayRange } from '../util/date'\nimport { Seg } from './DateComponent'\nimport { EventApi } from '../api/EventApi'\nimport { EventUi, EventUiHash, combineEventUis } from './event-ui'\nimport { mapHash } from '../util/object'\nimport { ViewContext } from '../ViewContext'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { addMs, DateMarker, startOfDay } from '../datelib/marker'\nimport { ViewApi } from '../ViewApi'\nimport { MountArg } from '../common/render-hook'\nimport { createAriaKeyboardAttrs } from '../util/dom-event'\n\nexport interface EventRenderRange extends EventTuple {\n ui: EventUi\n range: DateRange\n isStart: boolean\n isEnd: boolean\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nexport function sliceEventStore(eventStore: EventStore, eventUiBases: EventUiHash, framingRange: DateRange, nextDayThreshold?: Duration) {\n let inverseBgByGroupId: { [groupId: string]: DateRange[] } = {}\n let inverseBgByDefId: { [defId: string]: DateRange[] } = {}\n let defByGroupId: { [groupId: string]: EventDef } = {}\n let bgRanges: EventRenderRange[] = []\n let fgRanges: EventRenderRange[] = []\n let eventUis = compileEventUis(eventStore.defs, eventUiBases)\n\n for (let defId in eventStore.defs) {\n let def = eventStore.defs[defId]\n let ui = eventUis[def.defId]\n\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = []\n\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def\n }\n } else {\n inverseBgByDefId[defId] = []\n }\n }\n }\n\n for (let instanceId in eventStore.instances) {\n let instance = eventStore.instances[instanceId]\n let def = eventStore.defs[instance.defId]\n let ui = eventUis[def.defId]\n let origRange = instance.range\n\n let normalRange = (!def.allDay && nextDayThreshold) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n origRange\n\n let slicedRange = intersectRanges(normalRange, framingRange)\n\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange)\n } else {\n inverseBgByDefId[instance.defId].push(slicedRange)\n }\n } else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def,\n ui,\n instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n })\n }\n }\n }\n\n for (let groupId in inverseBgByGroupId) { // BY GROUP\n let ranges = inverseBgByGroupId[groupId]\n let invertedRanges = invertRanges(ranges, framingRange)\n\n for (let invertedRange of invertedRanges) {\n let def = defByGroupId[groupId]\n let ui = eventUis[def.defId]\n\n bgRanges.push({\n def,\n ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n })\n }\n }\n\n for (let defId in inverseBgByDefId) {\n let ranges = inverseBgByDefId[defId]\n let invertedRanges = invertRanges(ranges, framingRange)\n\n for (let invertedRange of invertedRanges) {\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n })\n }\n }\n\n return { bg: bgRanges, fg: fgRanges }\n}\n\nexport function hasBgRendering(def: EventDef) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background'\n}\n\nexport function setElSeg(el: HTMLElement, seg: Seg) {\n (el as any).fcSeg = seg\n}\n\nexport function getElSeg(el: HTMLElement): Seg | null {\n return (el as any).fcSeg ||\n (el.parentNode as any).fcSeg || // for the harness\n null\n}\n\n// event ui computation\n\nexport function compileEventUis(eventDefs: EventDefHash, eventUiBases: EventUiHash) {\n return mapHash(eventDefs, (eventDef: EventDef) => compileEventUi(eventDef, eventUiBases))\n}\n\nexport function compileEventUi(eventDef: EventDef, eventUiBases: EventUiHash) {\n let uis = []\n\n if (eventUiBases['']) {\n uis.push(eventUiBases[''])\n }\n\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId])\n }\n\n uis.push(eventDef.ui)\n\n return combineEventUis(uis)\n}\n\nexport function sortEventSegs(segs, eventOrderSpecs: OrderSpec<EventApi>[]): Seg[] {\n let objs = segs.map(buildSegCompareObj)\n\n objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs))\n\n return objs.map((c) => c._seg)\n}\n\n// returns a object with all primitive props that can be compared\nexport function buildSegCompareObj(seg: Seg) {\n let { eventRange } = seg\n let eventDef = eventRange.def\n let range = eventRange.instance ? eventRange.instance.range : eventRange.range\n let start = range.start ? range.start.valueOf() : 0 // TODO: better support for open-range events\n let end = range.end ? range.end.valueOf() : 0 // \"\n\n return {\n ...eventDef.extendedProps,\n ...eventDef,\n id: eventDef.publicId,\n start,\n end,\n duration: end - start,\n allDay: Number(eventDef.allDay),\n _seg: seg, // for later retrieval\n }\n}\n\n// other stuff\n\nexport interface EventContentArg { // for *Content handlers\n event: EventApi\n timeText: string\n backgroundColor: string // TODO: add other EventUi props?\n borderColor: string //\n textColor: string //\n isDraggable: boolean\n isStartResizable: boolean\n isEndResizable: boolean\n isMirror: boolean\n isStart: boolean\n isEnd: boolean\n isPast: boolean\n isFuture: boolean\n isToday: boolean\n isSelected: boolean\n isDragging: boolean\n isResizing: boolean\n view: ViewApi // specifically for the API\n}\n\nexport type EventMountArg = MountArg<EventContentArg>\n\nexport function computeSegDraggable(seg: Seg, context: ViewContext) {\n let { pluginHooks } = context\n let transformers = pluginHooks.isDraggableTransformers\n let { def, ui } = seg.eventRange\n let val = ui.startEditable\n\n for (let transformer of transformers) {\n val = transformer(val, def, ui, context)\n }\n\n return val\n}\n\nexport function computeSegStartResizable(seg: Seg, context: ViewContext) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart\n}\n\nexport function computeSegEndResizable(seg: Seg, context: ViewContext) {\n return seg.isEnd && seg.eventRange.ui.durationEditable\n}\n\nexport function buildSegTimeText(\n seg: Seg,\n timeFormat: DateFormatter,\n context: ViewContext,\n defaultDisplayEventTime?: boolean, // defaults to true\n defaultDisplayEventEnd?: boolean, // defaults to true\n startOverride?: DateMarker,\n endOverride?: DateMarker,\n) {\n let { dateEnv, options } = context\n let { displayEventTime, displayEventEnd } = options\n let eventDef = seg.eventRange.def\n let eventInstance = seg.eventRange.instance\n\n if (displayEventTime == null) { displayEventTime = defaultDisplayEventTime !== false }\n if (displayEventEnd == null) { displayEventEnd = defaultDisplayEventEnd !== false }\n\n let wholeEventStart = eventInstance.range.start\n let wholeEventEnd = eventInstance.range.end\n let segStart = startOverride || seg.start || seg.eventRange.range.start\n let segEnd = endOverride || seg.end || seg.eventRange.range.end\n let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf()\n let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf()\n\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart\n segEnd = isEndDay ? wholeEventEnd : segEnd\n\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooooooooooo, give tzo if same date\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n })\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n })\n }\n\n return ''\n}\n\nexport function getSegMeta(seg: Seg, todayRange: DateRange, nowDate?: DateMarker) { // TODO: make arg order consistent with date util\n let segRange = seg.eventRange.range\n\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n }\n}\n\nexport function getEventClassNames(props: EventContentArg) { // weird that we use this interface, but convenient\n let classNames: string[] = ['fc-event']\n\n if (props.isMirror) {\n classNames.push('fc-event-mirror')\n }\n\n if (props.isDraggable) {\n classNames.push('fc-event-draggable')\n }\n\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable')\n }\n\n if (props.isDragging) {\n classNames.push('fc-event-dragging')\n }\n\n if (props.isResizing) {\n classNames.push('fc-event-resizing')\n }\n\n if (props.isSelected) {\n classNames.push('fc-event-selected')\n }\n\n if (props.isStart) {\n classNames.push('fc-event-start')\n }\n\n if (props.isEnd) {\n classNames.push('fc-event-end')\n }\n\n if (props.isPast) {\n classNames.push('fc-event-past')\n }\n\n if (props.isToday) {\n classNames.push('fc-event-today')\n }\n\n if (props.isFuture) {\n classNames.push('fc-event-future')\n }\n\n return classNames\n}\n\nexport function buildEventRangeKey(eventRange: EventRenderRange) {\n return eventRange.instance\n ? eventRange.instance.instanceId\n : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`\n // inverse-background events don't have specific instances. TODO: better solution\n}\n\nexport function getSegAnchorAttrs(seg: Seg, context: ViewContext) {\n let { def, instance } = seg.eventRange\n let { url } = def\n\n if (url) {\n return { href: url }\n }\n\n let { emitter, options } = context\n let { eventInteractive } = options\n\n if (eventInteractive == null) {\n eventInteractive = def.interactive\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'))\n }\n }\n\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs((ev: UIEvent) => {\n emitter.trigger('eventClick', {\n el: ev.target as HTMLElement,\n event: new EventApi(context, def, instance),\n jsEvent: ev as MouseEvent,\n view: context.viewApi,\n })\n })\n }\n\n return {}\n}\n","import { DateRange, rangesEqual, OpenDateRange } from '../datelib/date-range'\nimport { DateInput, DateEnv } from '../datelib/env'\nimport { Duration } from '../datelib/duration'\nimport { createEventInstance } from './event-instance'\nimport { parseEventDef, refineEventDef } from './event-parse'\nimport { EventRenderRange, compileEventUi } from '../component/event-rendering'\nimport { EventUiHash } from '../component/event-ui'\nimport { CalendarContext } from '../CalendarContext'\nimport { refineProps, identity, Identity } from '../options'\n\n/*\nA data-structure for a date-range that will be visually displayed.\nContains other metadata like allDay, and anything else Components might like to store.\n\nTODO: in future, put otherProps in own object.\n*/\n\nexport interface OpenDateSpanInput {\n start?: DateInput\n end?: DateInput\n allDay?: boolean\n [otherProp: string]: any\n}\n\nexport interface DateSpanInput extends OpenDateSpanInput {\n start: DateInput\n end: DateInput\n}\n\nexport interface OpenDateSpan {\n range: OpenDateRange\n allDay: boolean\n [otherProp: string]: any\n}\n\nexport interface DateSpan extends OpenDateSpan {\n range: DateRange\n}\n\nexport interface RangeApi {\n start: Date\n end: Date\n startStr: string\n endStr: string\n}\n\nexport interface DateSpanApi extends RangeApi {\n allDay: boolean\n}\n\nexport interface RangeApiWithTimeZone extends RangeApi {\n timeZone: string\n}\n\nexport interface DatePointApi {\n date: Date\n dateStr: string\n allDay: boolean\n}\n\nconst STANDARD_PROPS = {\n start: identity as Identity<DateInput>,\n end: identity as Identity<DateInput>,\n allDay: Boolean,\n}\n\nexport function parseDateSpan(raw: DateSpanInput, dateEnv: DateEnv, defaultDuration?: Duration): DateSpan | null {\n let span = parseOpenDateSpan(raw, dateEnv)\n let { range } = span\n\n if (!range.start) {\n return null\n }\n\n if (!range.end) {\n if (defaultDuration == null) {\n return null\n }\n range.end = dateEnv.add(range.start, defaultDuration)\n }\n\n return span as DateSpan\n}\n\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nexport function parseOpenDateSpan(raw: OpenDateSpanInput, dateEnv: DateEnv): OpenDateSpan | null {\n let { refined: standardProps, extra } = refineProps(raw, STANDARD_PROPS)\n let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null\n let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null\n let { allDay } = standardProps\n\n if (allDay == null) {\n allDay = (startMeta && startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified)\n }\n\n return {\n range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null,\n },\n allDay,\n ...extra,\n }\n}\n\nexport function isDateSpansEqual(span0: DateSpan, span1: DateSpan): boolean {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n isSpanPropsEqual(span0, span1)\n}\n\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0: DateSpan, span1: DateSpan): boolean {\n for (let propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false\n }\n }\n }\n\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (let propName in span0) {\n if (!(propName in span1)) {\n return false\n }\n }\n\n return true\n}\n\nexport function buildDateSpanApi(span: DateSpan, dateEnv: DateEnv): DateSpanApi {\n return {\n ...buildRangeApi(span.range, dateEnv, span.allDay),\n allDay: span.allDay,\n }\n}\n\nexport function buildRangeApiWithTimeZone(range: DateRange, dateEnv: DateEnv, omitTime?: boolean): RangeApiWithTimeZone {\n return {\n ...buildRangeApi(range, dateEnv, omitTime),\n timeZone: dateEnv.timeZone,\n }\n}\n\nexport function buildRangeApi(range: DateRange, dateEnv: DateEnv, omitTime?: boolean): RangeApi {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, { omitTime }),\n endStr: dateEnv.formatIso(range.end, { omitTime }),\n }\n}\n\nexport function fabricateEventRange(dateSpan: DateSpan, eventUiBases: EventUiHash, context: CalendarContext): EventRenderRange {\n let res = refineEventDef({ editable: false }, context)\n let def = parseEventDef(\n res.refined,\n res.extra,\n '', // sourceId\n dateSpan.allDay,\n true, // hasEnd\n context,\n )\n\n return {\n def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true,\n }\n}\n","import { __assign } from 'tslib'\nimport { PointerDragEvent } from './interactions/pointer'\nimport { buildDateSpanApi, DateSpanApi, DatePointApi, DateSpan } from './structs/date-span'\nimport { CalendarContext } from './CalendarContext'\nimport { ViewApi } from './ViewApi'\nimport { DateMarker, startOfDay } from './datelib/marker'\n\nexport interface DateClickApi extends DatePointApi {\n dayEl: HTMLElement\n jsEvent: UIEvent\n view: ViewApi\n}\n\nexport interface DateSelectionApi extends DateSpanApi {\n jsEvent: UIEvent\n view: ViewApi\n}\n\nexport type DatePointTransform = (dateSpan: DateSpan, context: CalendarContext) => any\nexport type DateSpanTransform = (dateSpan: DateSpan, context: CalendarContext) => any\n\nexport type CalendarInteraction = { destroy: () => void }\nexport type CalendarInteractionClass = { new(context: CalendarContext): CalendarInteraction }\n\nexport type OptionChangeHandler = (propValue: any, context: CalendarContext) => void\nexport type OptionChangeHandlerMap = { [propName: string]: OptionChangeHandler }\n\nexport interface DateSelectArg extends DateSpanApi {\n jsEvent: MouseEvent | null\n view: ViewApi\n}\n\nexport function triggerDateSelect(selection: DateSpan, pev: PointerDragEvent | null, context: CalendarContext & { viewApi?: ViewApi }) {\n context.emitter.trigger('select', {\n ...buildDateSpanApiWithContext(selection, context),\n jsEvent: pev ? pev.origEvent as MouseEvent : null, // Is this always a mouse event? See #4655\n view: context.viewApi || context.calendarApi.view,\n } as DateSelectArg)\n}\n\nexport interface DateUnselectArg {\n jsEvent: MouseEvent\n view: ViewApi\n}\n\nexport function triggerDateUnselect(pev: PointerDragEvent | null, context: CalendarContext & { viewApi?: ViewApi }) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view,\n } as DateUnselectArg)\n}\n\nexport function buildDateSpanApiWithContext(dateSpan: DateSpan, context: CalendarContext) {\n let props = {} as DateSpanApi\n\n for (let transform of context.pluginHooks.dateSpanTransforms) {\n __assign(props, transform(dateSpan, context))\n }\n\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv))\n\n return props\n}\n\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nexport function getDefaultEventEnd(allDay: boolean, marker: DateMarker, context: CalendarContext): DateMarker {\n let { dateEnv, options } = context\n let end = marker\n\n if (allDay) {\n end = startOfDay(end)\n end = dateEnv.add(end, options.defaultAllDayEventDuration)\n } else {\n end = dateEnv.add(end, options.defaultTimedEventDuration)\n }\n\n return end\n}\n","import { Duration } from '../datelib/duration'\nimport { EventStore, createEmptyEventStore } from './event-store'\nimport { EventDef } from './event-def'\nimport { EventInstance } from './event-instance'\nimport { computeAlignedDayRange } from '../util/date'\nimport { startOfDay } from '../datelib/marker'\nimport { EventUiHash, EventUi } from '../component/event-ui'\nimport { compileEventUis } from '../component/event-rendering'\nimport { CalendarContext } from '../CalendarContext'\nimport { getDefaultEventEnd } from '../calendar-utils'\n\n/*\nA data structure for how to modify an EventDef/EventInstance within an EventStore\n*/\n\nexport interface EventMutation {\n datesDelta?: Duration // body start+end moving together. for dragging\n startDelta?: Duration // for resizing\n endDelta?: Duration // for resizing\n standardProps?: any // for the def. should not include extendedProps\n extendedProps?: any // for the def\n}\n\n// applies the mutation to ALL defs/instances within the event store\nexport function applyMutationToEventStore(\n eventStore: EventStore,\n eventConfigBase: EventUiHash,\n mutation: EventMutation,\n context: CalendarContext,\n): EventStore {\n let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase)\n let dest = createEmptyEventStore()\n\n for (let defId in eventStore.defs) {\n let def = eventStore.defs[defId]\n\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context)\n }\n\n for (let instanceId in eventStore.instances) {\n let instance = eventStore.instances[instanceId]\n let def = dest.defs[instance.defId] // important to grab the newly modified def\n\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context)\n }\n\n return dest\n}\n\nexport type eventDefMutationApplier = (eventDef: EventDef, mutation: EventMutation, context: CalendarContext) => void\n\nfunction applyMutationToEventDef(eventDef: EventDef, eventConfig: EventUi, mutation: EventMutation, context: CalendarContext): EventDef {\n let standardProps = mutation.standardProps || {}\n\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (\n standardProps.hasEnd == null &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)\n ) {\n standardProps.hasEnd = true // TODO: is this mutation okay?\n }\n\n let copy: EventDef = {\n ...eventDef,\n ...standardProps,\n ui: { ...eventDef.ui, ...standardProps.ui }, // the only prop we want to recursively overlay\n }\n\n if (mutation.extendedProps) {\n copy.extendedProps = { ...copy.extendedProps, ...mutation.extendedProps }\n }\n\n for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n applier(copy, mutation, context)\n }\n\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true\n }\n\n return copy\n}\n\nfunction applyMutationToEventInstance(\n eventInstance: EventInstance,\n eventDef: EventDef, // must first be modified by applyMutationToEventDef\n eventConfig: EventUi,\n mutation: EventMutation,\n context: CalendarContext,\n): EventInstance {\n let { dateEnv } = context\n let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true\n let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false\n let copy = { ...eventInstance } as EventInstance\n\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range)\n }\n\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta),\n }\n }\n\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end,\n }\n }\n\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta),\n }\n }\n\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n }\n }\n\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end),\n }\n }\n\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context)\n }\n\n return copy\n}\n","import { DateEnv } from './datelib/env'\nimport { CalendarData } from './reducers/data-types'\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\n\nexport class ViewApi { // always represents the current view. otherwise, it'd need to change value every time date changes\n constructor(\n public type: string,\n private getCurrentData: () => CalendarData,\n private dateEnv: DateEnv,\n ) {\n }\n\n get calendar() {\n return this.getCurrentData().calendarApi\n }\n\n get title() {\n return this.getCurrentData().viewTitle\n }\n\n get activeStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)\n }\n\n get activeEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)\n }\n\n get currentStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)\n }\n\n get currentEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)\n }\n\n getOption(name: string) {\n return this.getCurrentData().options[name] // are the view-specific options\n }\n}\n","import { EventInput, EventInputTransformer } from './event-parse'\nimport { EventSourceFunc } from '../event-sources/func-event-source'\nimport { EventSource, EventSourceSuccessResponseHandler, EventSourceErrorResponseHandler } from './event-source'\nimport { JSON_FEED_EVENT_SOURCE_REFINERS } from '../event-sources/json-feed-event-source-refiners'\nimport { CalendarContext } from '../CalendarContext'\nimport { guid } from '../util/misc'\nimport { EVENT_UI_REFINERS, createEventUi, EventUiInput, EventUiRefined } from '../component/event-ui'\nimport { identity, Identity, RawOptionsFromRefiners, refineProps, RefinedOptionsFromRefiners } from '../options'\n\nconst EVENT_SOURCE_REFINERS = { // does NOT include EVENT_UI_REFINERS\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity as Identity<EventInput[] | EventSourceFunc>, // array or function\n eventDataTransform: identity as Identity<EventInputTransformer>,\n\n // for any network-related sources\n success: identity as Identity<EventSourceSuccessResponseHandler>,\n failure: identity as Identity<EventSourceErrorResponseHandler>,\n}\n\ntype BuiltInEventSourceRefiners = typeof EVENT_SOURCE_REFINERS &\n typeof JSON_FEED_EVENT_SOURCE_REFINERS\n\nexport interface EventSourceRefiners extends BuiltInEventSourceRefiners {\n // for extending\n}\n\nexport type EventSourceInputObject =\n EventUiInput &\n RawOptionsFromRefiners<Required<EventSourceRefiners>> // Required hack\n\nexport type EventSourceInput =\n EventSourceInputObject | // object in extended form\n EventInput[] |\n EventSourceFunc | // just a function\n string // a URL for a JSON feed\n\nexport type EventSourceRefined =\n EventUiRefined &\n RefinedOptionsFromRefiners<Required<EventSourceRefiners>> // Required hack\n\nexport function parseEventSource(\n raw: EventSourceInput,\n context: CalendarContext,\n refiners = buildEventSourceRefiners(context),\n): EventSource<any> | null {\n let rawObj: EventSourceInputObject\n\n if (typeof raw === 'string') {\n rawObj = { url: raw }\n } else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = { events: raw }\n } else if (typeof raw === 'object' && raw) { // not null\n rawObj = raw\n }\n\n if (rawObj) {\n let { refined, extra } = refineProps(rawObj, refiners)\n let metaRes = buildEventSourceMeta(refined, context)\n\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra,\n }\n }\n }\n\n return null\n}\n\nexport function buildEventSourceRefiners(context: CalendarContext) {\n return { ...EVENT_UI_REFINERS, ...EVENT_SOURCE_REFINERS, ...context.pluginHooks.eventSourceRefiners }\n}\n\nfunction buildEventSourceMeta(raw: EventSourceRefined, context: CalendarContext) {\n let defs = context.pluginHooks.eventSourceDefs\n\n for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n let def = defs[i]\n let meta = def.parseMeta(raw)\n\n if (meta) {\n return { sourceDefId: i, meta }\n }\n }\n\n return null\n}\n","import { DateEnv, DateInput } from '../datelib/env'\nimport { DateMarker } from '../datelib/marker'\nimport { Action } from './Action'\nimport { BaseOptionsRefined } from '../options'\n\nexport function reduceCurrentDate(currentDate: DateMarker, action: Action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker\n default:\n return currentDate\n }\n}\n\nexport function getInitialDate(options: BaseOptionsRefined, dateEnv: DateEnv) {\n let initialDateInput = options.initialDate\n\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput)\n }\n return getNow(options.now, dateEnv) // getNow already returns unzoned\n}\n\nexport function getNow(nowInput: DateInput | (() => DateInput), dateEnv: DateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput()\n }\n\n if (nowInput == null) {\n return dateEnv.createNowMarker()\n }\n\n return dateEnv.createMarker(nowInput)\n}\n","import { DateMarker } from './datelib/marker'\nimport { createFormatter } from './datelib/formatting'\nimport { createDuration } from './datelib/duration'\nimport { parseDateSpan } from './structs/date-span'\nimport { parseEventSource } from './structs/event-source-parse'\nimport { parseEvent } from './structs/event-parse'\nimport { eventTupleToStore } from './structs/event-store'\nimport { ViewSpec } from './structs/view-spec'\nimport { PointerDragEvent } from './interactions/pointer'\nimport { getNow } from './reducers/current-date'\nimport { triggerDateSelect, triggerDateUnselect } from './calendar-utils'\nimport { hashValuesToArray } from './util/object'\nimport { CalendarDataManager } from './reducers/CalendarDataManager'\nimport { Action } from './reducers/Action'\nimport { EventSource } from './structs/event-source'\nimport { eventApiToStore, buildEventApis } from './api/EventApi'\n\n// public\nimport {\n CalendarOptions,\n CalendarListeners,\n DateInput,\n DurationInput,\n DateSpanInput,\n DateRangeInput,\n EventSourceInput,\n EventInput,\n EventSourceApi,\n EventApi,\n ViewApi,\n} from './api-type-deps'\n\nexport class CalendarApi {\n currentDataManager?: CalendarDataManager // will be set by CalendarDataManager\n\n getCurrentData() {\n return this.currentDataManager!.getCurrentData()\n }\n\n dispatch(action: Action) {\n return this.currentDataManager!.dispatch(action)\n }\n\n get view(): ViewApi { return this.getCurrentData().viewApi } // for public API\n\n batchRendering(callback: () => void) { // subclasses should implement\n callback()\n }\n\n updateSize() { // public\n this.trigger('_resize', true)\n }\n\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n\n setOption<OptionName extends keyof CalendarOptions>(name: OptionName, val: CalendarOptions[OptionName]) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val,\n })\n }\n\n getOption<OptionName extends keyof CalendarOptions>(name: OptionName): CalendarOptions[OptionName] { // getter, used externally. WTF TS\n return this.currentDataManager!.currentCalendarOptionsInput[name]\n }\n\n getAvailableLocaleCodes() {\n return Object.keys(this.getCurrentData().availableRawLocales)\n }\n\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n\n on<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, handler: CalendarListeners[ListenerName]) {\n let { currentDataManager } = this\n\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler)\n } else {\n console.warn(`Unknown listener name '${handlerName}'`)\n }\n }\n\n off<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, handler: CalendarListeners[ListenerName]) {\n this.currentDataManager!.emitter.off(handlerName, handler)\n }\n\n // not meant for public use\n trigger<ListenerName extends keyof CalendarListeners>(handlerName: ListenerName, ...args: Parameters<CalendarListeners[ListenerName]>) {\n this.currentDataManager!.emitter.trigger(handlerName, ...args)\n }\n\n // View\n // -----------------------------------------------------------------------------------------------------------------\n\n changeView(viewType: string, dateOrRange?: DateRangeInput | DateInput) {\n this.batchRendering(() => {\n this.unselect()\n\n if (dateOrRange) {\n if ((dateOrRange as DateRangeInput).start && (dateOrRange as DateRangeInput).end) { // a range\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType,\n })\n this.dispatch({ // not very efficient to do two dispatches\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange,\n })\n } else {\n let { dateEnv } = this.getCurrentData()\n\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType,\n dateMarker: dateEnv.createMarker(dateOrRange as DateInput),\n })\n }\n } else {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType,\n })\n }\n })\n }\n\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n zoomTo(dateMarker: DateMarker, viewType?: string) {\n let state = this.getCurrentData()\n let spec\n\n viewType = viewType || 'day' // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType)\n\n this.unselect()\n\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker,\n })\n } else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker,\n })\n }\n }\n\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n private getUnitViewSpec(unit: string): ViewSpec | null {\n let { viewSpecs, toolbarConfig } = this.getCurrentData()\n let viewTypes = [].concat(\n toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [],\n toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : [],\n )\n let i\n let spec\n\n for (let viewType in viewSpecs) {\n viewTypes.push(viewType)\n }\n\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]]\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec\n }\n }\n }\n\n return null\n }\n\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n\n prev() {\n this.unselect()\n this.dispatch({ type: 'PREV' })\n }\n\n next() {\n this.unselect()\n this.dispatch({ type: 'NEXT' })\n }\n\n prevYear() {\n let state = this.getCurrentData()\n this.unselect()\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n })\n }\n\n nextYear() {\n let state = this.getCurrentData()\n\n this.unselect()\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n })\n }\n\n today() {\n let state = this.getCurrentData()\n\n this.unselect()\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv),\n })\n }\n\n gotoDate(zonedDateInput) {\n let state = this.getCurrentData()\n\n this.unselect()\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput),\n })\n }\n\n incrementDate(deltaInput) { // is public facing\n let state = this.getCurrentData()\n let delta = createDuration(deltaInput)\n\n if (delta) { // else, warn about invalid input?\n this.unselect()\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta),\n })\n }\n }\n\n // for external API\n getDate(): Date {\n let state = this.getCurrentData()\n return state.dateEnv.toDate(state.currentDate)\n }\n\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n formatDate(d: DateInput, formatter): string {\n let { dateEnv } = this.getCurrentData()\n\n return dateEnv.format(\n dateEnv.createMarker(d),\n createFormatter(formatter),\n )\n }\n\n // `settings` is for formatter AND isEndExclusive\n formatRange(d0: DateInput, d1: DateInput, settings) {\n let { dateEnv } = this.getCurrentData()\n\n return dateEnv.formatRange(\n dateEnv.createMarker(d0),\n dateEnv.createMarker(d1),\n createFormatter(settings),\n settings,\n )\n }\n\n formatIso(d: DateInput, omitTime?: boolean) {\n let { dateEnv } = this.getCurrentData()\n\n return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime })\n }\n\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n select(dateOrObj: DateInput | any, endDate?: DateInput) {\n let selectionInput: DateSpanInput\n\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj as DateSpanInput\n } else {\n selectionInput = {\n start: dateOrObj,\n end: null,\n }\n }\n } else {\n selectionInput = {\n start: dateOrObj,\n end: endDate,\n } as DateSpanInput\n }\n\n let state = this.getCurrentData()\n let selection = parseDateSpan(\n selectionInput,\n state.dateEnv,\n createDuration({ days: 1 }), // TODO: cache this?\n )\n\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection })\n triggerDateSelect(selection, null, state)\n }\n }\n\n // public method\n unselect(pev?: PointerDragEvent) {\n let state = this.getCurrentData()\n\n if (state.dateSelection) {\n this.dispatch({ type: 'UNSELECT_DATES' })\n triggerDateUnselect(pev, state)\n }\n }\n\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n\n addEvent(eventInput: EventInput, sourceInput?: EventSourceApi | string | boolean): EventApi | null {\n if (eventInput instanceof EventApi) {\n let def = eventInput._def\n let instance = eventInput._instance\n let currentData = this.getCurrentData()\n\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({ def, instance }), // TODO: better util for two args?\n })\n this.triggerEventAdd(eventInput)\n }\n\n return eventInput\n }\n\n let state = this.getCurrentData()\n let eventSource: EventSource<any>\n\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource\n } else if (typeof sourceInput === 'boolean') {\n if (sourceInput) { // true. part of the first event source\n [eventSource] = hashValuesToArray(state.eventSources)\n }\n } else if (sourceInput != null) { // an ID. accepts a number too\n let sourceApi = this.getEventSourceById(sourceInput) // TODO: use an internal function\n\n if (!sourceApi) {\n console.warn(`Could not find an event source with ID \"${sourceInput}\"`) // TODO: test\n return null\n }\n eventSource = sourceApi.internalEventSource\n }\n\n let tuple = parseEvent(eventInput, eventSource, state, false)\n\n if (tuple) {\n let newEventApi = new EventApi(\n state,\n tuple.def,\n tuple.def.recurringDef ? null : tuple.instance,\n )\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple),\n })\n this.triggerEventAdd(newEventApi)\n\n return newEventApi\n }\n\n return null\n }\n\n private triggerEventAdd(eventApi: EventApi) {\n let { emitter } = this.getCurrentData()\n\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: () => {\n this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi),\n })\n },\n })\n }\n\n // TODO: optimize\n getEventById(id: string): EventApi | null {\n let state = this.getCurrentData()\n let { defs, instances } = state.eventStore\n id = String(id)\n\n for (let defId in defs) {\n let def = defs[defId]\n\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null)\n }\n\n for (let instanceId in instances) {\n let instance = instances[instanceId]\n\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance)\n }\n }\n }\n }\n\n return null\n }\n\n getEvents(): EventApi[] {\n let currentData = this.getCurrentData()\n\n return buildEventApis(currentData.eventStore, currentData)\n }\n\n removeAllEvents() {\n this.dispatch({ type: 'REMOVE_ALL_EVENTS' })\n }\n\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n\n getEventSources(): EventSourceApi[] {\n let state = this.getCurrentData()\n let sourceHash = state.eventSources\n let sourceApis: EventSourceApi[] = []\n\n for (let internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]))\n }\n\n return sourceApis\n }\n\n getEventSourceById(id: string): EventSourceApi | null {\n let state = this.getCurrentData()\n let sourceHash = state.eventSources\n id = String(id)\n\n for (let sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId])\n }\n }\n\n return null\n }\n\n addEventSource(sourceInput: EventSourceInput): EventSourceApi {\n let state = this.getCurrentData()\n\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource],\n })\n }\n\n return sourceInput\n }\n\n let eventSource = parseEventSource(sourceInput, state)\n\n if (eventSource) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] })\n\n return new EventSourceApi(state, eventSource)\n }\n\n return null\n }\n\n removeAllEventSources() {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' })\n }\n\n refetchEvents() {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true })\n }\n\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n\n scrollToTime(timeInput: DurationInput) {\n let time = createDuration(timeInput)\n\n if (time) {\n this.trigger('_scrollRequest', { time })\n }\n }\n}\n","import { __assign } from 'tslib'\nimport { EventDef } from '../structs/event-def'\nimport { EVENT_NON_DATE_REFINERS, EVENT_DATE_REFINERS } from '../structs/event-parse'\nimport { EventInstance } from '../structs/event-instance'\nimport { EVENT_UI_REFINERS, EventUiHash } from '../component/event-ui'\nimport { EventMutation, applyMutationToEventStore } from '../structs/event-mutation'\nimport { diffDates, computeAlignedDayRange } from '../util/date'\nimport { createDuration, durationsEqual } from '../datelib/duration'\nimport { createFormatter } from '../datelib/formatting'\nimport { CalendarContext } from '../CalendarContext'\nimport { getRelevantEvents, EventStore } from '../structs/event-store'\nimport { Dictionary } from '../options'\n\n// public\nimport {\n DateInput,\n DurationInput,\n FormatterInput,\n EventSourceApi,\n} from '../api-type-deps'\n\nexport class EventApi {\n _context: CalendarContext\n _def: EventDef\n _instance: EventInstance | null\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n\n constructor(context: CalendarContext, def: EventDef, instance?: EventInstance) {\n this._context = context\n this._def = def\n this._instance = instance || null\n }\n\n /*\n TODO: make event struct more responsible for this\n */\n setProp(name: string, val: any) {\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.')\n // TODO: make proper aliasing system?\n } else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val)\n\n this.mutate({\n standardProps: { publicId: val }, // hardcoded internal name\n })\n } else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val)\n\n this.mutate({\n standardProps: { [name]: val },\n })\n } else if (name in EVENT_UI_REFINERS) {\n let ui = EVENT_UI_REFINERS[name](val)\n\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val }\n } else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val }\n } else {\n ui = { [name]: val }\n }\n\n this.mutate({\n standardProps: { ui },\n })\n } else {\n console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`)\n }\n }\n\n setExtendedProp(name: string, val: any) {\n this.mutate({\n extendedProps: { [name]: val },\n })\n }\n\n setStart(startInput: DateInput, options: { granularity?: string, maintainDuration?: boolean } = {}) {\n let { dateEnv } = this._context\n let start = dateEnv.createMarker(startInput)\n\n if (start && this._instance) { // TODO: warning if parsed bad\n let instanceRange = this._instance.range\n let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity) // what if parsed bad!?\n\n if (options.maintainDuration) {\n this.mutate({ datesDelta: startDelta })\n } else {\n this.mutate({ startDelta })\n }\n }\n }\n\n setEnd(endInput: DateInput | null, options: { granularity?: string } = {}) {\n let { dateEnv } = this._context\n let end\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput)\n\n if (!end) {\n return // TODO: warning if parsed bad\n }\n }\n\n if (this._instance) {\n if (end) {\n let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity)\n this.mutate({ endDelta })\n } else {\n this.mutate({ standardProps: { hasEnd: false } })\n }\n }\n }\n\n setDates(startInput: DateInput, endInput: DateInput | null, options: { allDay?: boolean, granularity?: string } = {}) {\n let { dateEnv } = this._context\n let standardProps = { allDay: options.allDay } as any\n let start = dateEnv.createMarker(startInput)\n let end\n\n if (!start) {\n return // TODO: warning if parsed bad\n }\n\n if (endInput != null) {\n end = dateEnv.createMarker(endInput)\n\n if (!end) { // TODO: warning if parsed bad\n return\n }\n }\n\n if (this._instance) {\n let instanceRange = this._instance.range\n\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange)\n }\n\n let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity)\n\n if (end) {\n let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity)\n\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({ datesDelta: startDelta, standardProps })\n } else {\n this.mutate({ startDelta, endDelta, standardProps })\n }\n } else { // means \"clear the end\"\n standardProps.hasEnd = false\n this.mutate({ datesDelta: startDelta, standardProps })\n }\n }\n }\n\n moveStart(deltaInput: DurationInput) {\n let delta = createDuration(deltaInput)\n\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta })\n }\n }\n\n moveEnd(deltaInput: DurationInput) {\n let delta = createDuration(deltaInput)\n\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta })\n }\n }\n\n moveDates(deltaInput: DurationInput) {\n let delta = createDuration(deltaInput)\n\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta })\n }\n }\n\n setAllDay(allDay: boolean, options: { maintainDuration?: boolean } = {}) {\n let standardProps = { allDay } as any\n let { maintainDuration } = options\n\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration\n }\n\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration\n }\n\n this.mutate({ standardProps })\n }\n\n formatRange(formatInput: FormatterInput) {\n let { dateEnv } = this._context\n let instance = this._instance\n let formatter = createFormatter(formatInput)\n\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo,\n })\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo,\n })\n }\n\n mutate(mutation: EventMutation) { // meant to be private. but plugins need access\n let instance = this._instance\n\n if (instance) {\n let def = this._def\n let context = this._context\n let { eventStore } = context.getCurrentData()\n let relevantEvents = getRelevantEvents(eventStore, instance.instanceId)\n let eventConfigBase = {\n '': { // HACK. always allow API to mutate events\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n },\n } as EventUiHash\n\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context)\n\n let oldEvent = new EventApi(context, def, instance) // snapshot\n this._def = relevantEvents.defs[def.defId]\n this._instance = relevantEvents.instances[instance.instanceId]\n\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents,\n })\n\n context.emitter.trigger('eventChange', {\n oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context, instance),\n revert() {\n context.dispatch({\n type: 'RESET_EVENTS',\n eventStore, // the ORIGINAL store\n })\n },\n })\n }\n }\n\n remove() {\n let context = this._context\n let asStore = eventApiToStore(this)\n\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore,\n })\n\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert() {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore,\n })\n },\n })\n }\n\n get source(): EventSourceApi | null {\n let { sourceId } = this._def\n\n if (sourceId) {\n return new EventSourceApi(\n this._context,\n this._context.getCurrentData().eventSources[sourceId],\n )\n }\n return null\n }\n\n get start(): Date | null {\n return this._instance ?\n this._context.dateEnv.toDate(this._instance.range.start) :\n null\n }\n\n get end(): Date | null {\n return (this._instance && this._def.hasEnd) ?\n this._context.dateEnv.toDate(this._instance.range.end) :\n null\n }\n\n get startStr(): string {\n let instance = this._instance\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo,\n })\n }\n return ''\n }\n\n get endStr(): string {\n let instance = this._instance\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo,\n })\n }\n return ''\n }\n\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get id() { return this._def.publicId }\n get groupId() { return this._def.groupId }\n get allDay() { return this._def.allDay }\n get title() { return this._def.title }\n get url() { return this._def.url }\n get display() { return this._def.ui.display || 'auto' } // bad. just normalize the type earlier\n get startEditable() { return this._def.ui.startEditable }\n get durationEditable() { return this._def.ui.durationEditable }\n get constraint() { return this._def.ui.constraints[0] || null }\n get overlap() { return this._def.ui.overlap }\n get allow() { return this._def.ui.allows[0] || null }\n get backgroundColor() { return this._def.ui.backgroundColor }\n get borderColor() { return this._def.ui.borderColor }\n get textColor() { return this._def.ui.textColor }\n\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get classNames() { return this._def.ui.classNames }\n get extendedProps() { return this._def.extendedProps }\n\n toPlainObject(settings: { collapseExtendedProps?: boolean, collapseColor?: boolean } = {}): Dictionary {\n let def = this._def\n let { ui } = def\n let { startStr, endStr } = this\n let res: Dictionary = {}\n\n if (def.title) {\n res.title = def.title\n }\n\n if (startStr) {\n res.start = startStr\n }\n\n if (endStr) {\n res.end = endStr\n }\n\n if (def.publicId) {\n res.id = def.publicId\n }\n\n if (def.groupId) {\n res.groupId = def.groupId\n }\n\n if (def.url) {\n res.url = def.url\n }\n\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display\n }\n\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor\n } else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor\n }\n }\n\n if (ui.textColor) {\n res.textColor = ui.textColor\n }\n\n if (ui.classNames.length) {\n res.classNames = ui.classNames\n }\n\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps)\n } else {\n res.extendedProps = def.extendedProps\n }\n }\n\n return res\n }\n\n toJSON() {\n return this.toPlainObject()\n }\n}\n\nexport function eventApiToStore(eventApi: EventApi): EventStore {\n let def = eventApi._def\n let instance = eventApi._instance\n\n return {\n defs: { [def.defId]: def },\n instances: instance\n ? { [instance.instanceId]: instance }\n : {},\n }\n}\n\nexport function buildEventApis(eventStore: EventStore, context: CalendarContext, excludeInstance?: EventInstance): EventApi[] {\n let { defs, instances } = eventStore\n let eventApis: EventApi[] = []\n let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : ''\n\n for (let id in instances) {\n let instance = instances[id]\n let def = defs[instance.defId]\n\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance))\n }\n }\n\n return eventApis\n}\n","import { DateMarker, arrayToUtcDate, dateToUtcArray } from './marker'\n\nexport interface CalendarSystem {\n getMarkerYear(d: DateMarker): number\n getMarkerMonth(d: DateMarker): number\n getMarkerDay(d: DateMarker): number\n arrayToMarker(arr: number[]): DateMarker\n markerToArray(d: DateMarker): number[]\n}\n\nlet calendarSystemClassMap = {}\n\nexport function registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass\n}\n\nexport function createCalendarSystem(name) {\n return new calendarSystemClassMap[name]()\n}\n\nclass GregorianCalendarSystem implements CalendarSystem {\n getMarkerYear(d: DateMarker) {\n return d.getUTCFullYear()\n }\n\n getMarkerMonth(d: DateMarker) {\n return d.getUTCMonth()\n }\n\n getMarkerDay(d: DateMarker) {\n return d.getUTCDate()\n }\n\n arrayToMarker(arr) {\n return arrayToUtcDate(arr)\n }\n\n markerToArray(marker) {\n return dateToUtcArray(marker)\n }\n}\n\nregisterCalendarSystem('gregory', GregorianCalendarSystem)\n","import { isValidDate } from './marker'\n\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/\n\nexport function parse(str) {\n let m = ISO_RE.exec(str)\n\n if (m) {\n let marker = new Date(Date.UTC(\n Number(m[1]),\n m[3] ? Number(m[3]) - 1 : 0,\n Number(m[5] || 1),\n Number(m[7] || 0),\n Number(m[8] || 0),\n Number(m[10] || 0),\n m[12] ? Number(`0.${m[12]}`) * 1000 : 0,\n ))\n\n if (isValidDate(marker)) {\n let timeZoneOffset = null\n\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (\n Number(m[16] || 0) * 60 +\n Number(m[18] || 0)\n )\n }\n\n return {\n marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset,\n }\n }\n }\n\n return null\n}\n","import {\n DateMarker, addMs,\n diffHours, diffMinutes, diffSeconds, diffWholeWeeks, diffWholeDays,\n startOfDay, startOfHour, startOfMinute, startOfSecond,\n weekOfYear, arrayToUtcDate, dateToUtcArray, dateToLocalArray, arrayToLocalDate, timeAsMs, isValidDate,\n} from './marker'\nimport { CalendarSystem, createCalendarSystem } from './calendar-system'\nimport { Locale } from './locale'\nimport { NamedTimeZoneImpl, NamedTimeZoneImplClass } from './timezone'\nimport { Duration, asRoughYears, asRoughMonths, asRoughDays, asRoughMs } from './duration'\nimport { DateFormatter, CmdFormatterFunc } from './DateFormatter'\nimport { buildIsoString } from './formatting-utils'\nimport { parse } from './parsing'\nimport { isInt } from '../util/misc'\n\nexport type WeekNumberCalculation = 'local' | 'ISO' | ((m: Date) => number)\n\nexport interface DateEnvSettings {\n timeZone: string\n namedTimeZoneImpl?: NamedTimeZoneImplClass\n calendarSystem: string\n locale: Locale\n weekNumberCalculation?: WeekNumberCalculation\n firstDay?: number, // will override what the locale wants\n weekText?: string,\n weekTextLong?: string\n cmdFormatter?: CmdFormatterFunc\n defaultSeparator?: string\n}\n\nexport type DateInput = Date | string | number | number[]\n\nexport interface DateMarkerMeta {\n marker: DateMarker\n isTimeUnspecified: boolean\n forcedTzo: number | null\n}\n\nexport class DateEnv {\n timeZone: string\n namedTimeZoneImpl: NamedTimeZoneImpl\n canComputeOffset: boolean\n\n calendarSystem: CalendarSystem\n locale: Locale\n weekDow: number // which day begins the week\n weekDoy: number // which day must be within the year, for computing the first week number\n weekNumberFunc: any\n weekText: string // DON'T LIKE how options are confused with local\n weekTextLong: string\n cmdFormatter?: CmdFormatterFunc\n defaultSeparator: string\n\n constructor(settings: DateEnvSettings) {\n let timeZone = this.timeZone = settings.timeZone\n let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC'\n\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone)\n }\n\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl)\n\n this.calendarSystem = createCalendarSystem(settings.calendarSystem)\n this.locale = settings.locale\n this.weekDow = settings.locale.week.dow\n this.weekDoy = settings.locale.week.doy\n\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1\n this.weekDoy = 4\n }\n\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay\n }\n\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation\n }\n\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText\n\n this.cmdFormatter = settings.cmdFormatter\n this.defaultSeparator = settings.defaultSeparator\n }\n\n // Creating / Parsing\n\n createMarker(input: DateInput): DateMarker {\n let meta = this.createMarkerMeta(input)\n if (meta === null) {\n return null\n }\n return meta.marker\n }\n\n createNowMarker(): DateMarker {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf())\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()))\n }\n\n createMarkerMeta(input: DateInput): DateMarkerMeta {\n if (typeof input === 'string') {\n return this.parse(input)\n }\n\n let marker = null\n\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input)\n } else if (input instanceof Date) {\n input = input.valueOf()\n\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input)\n }\n } else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input)\n }\n\n if (marker === null || !isValidDate(marker)) {\n return null\n }\n\n return { marker, isTimeUnspecified: false, forcedTzo: null }\n }\n\n parse(s: string) {\n let parts = parse(s)\n if (parts === null) {\n return null\n }\n\n let { marker } = parts\n let forcedTzo = null\n\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000)\n } else {\n forcedTzo = parts.timeZoneOffset\n }\n }\n\n return { marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo }\n }\n\n // Accessors\n\n getYear(marker: DateMarker): number {\n return this.calendarSystem.getMarkerYear(marker)\n }\n\n getMonth(marker: DateMarker): number {\n return this.calendarSystem.getMarkerMonth(marker)\n }\n\n // Adding / Subtracting\n\n add(marker: DateMarker, dur: Duration): DateMarker {\n let a = this.calendarSystem.markerToArray(marker)\n a[0] += dur.years\n a[1] += dur.months\n a[2] += dur.days\n a[6] += dur.milliseconds\n return this.calendarSystem.arrayToMarker(a)\n }\n\n subtract(marker: DateMarker, dur: Duration): DateMarker {\n let a = this.calendarSystem.markerToArray(marker)\n a[0] -= dur.years\n a[1] -= dur.months\n a[2] -= dur.days\n a[6] -= dur.milliseconds\n return this.calendarSystem.arrayToMarker(a)\n }\n\n addYears(marker: DateMarker, n: number) {\n let a = this.calendarSystem.markerToArray(marker)\n a[0] += n\n return this.calendarSystem.arrayToMarker(a)\n }\n\n addMonths(marker: DateMarker, n: number) {\n let a = this.calendarSystem.markerToArray(marker)\n a[1] += n\n return this.calendarSystem.arrayToMarker(a)\n }\n\n // Diffing Whole Units\n\n diffWholeYears(m0: DateMarker, m1: DateMarker): number {\n let { calendarSystem } = this\n\n if (\n timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)\n ) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)\n }\n return null\n }\n\n diffWholeMonths(m0: DateMarker, m1: DateMarker): number {\n let { calendarSystem } = this\n\n if (\n timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)\n ) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12\n }\n return null\n }\n\n // Range / Duration\n\n greatestWholeUnit(m0: DateMarker, m1: DateMarker) {\n let n = this.diffWholeYears(m0, m1)\n\n if (n !== null) {\n return { unit: 'year', value: n }\n }\n\n n = this.diffWholeMonths(m0, m1)\n\n if (n !== null) {\n return { unit: 'month', value: n }\n }\n\n n = diffWholeWeeks(m0, m1)\n\n if (n !== null) {\n return { unit: 'week', value: n }\n }\n\n n = diffWholeDays(m0, m1)\n\n if (n !== null) {\n return { unit: 'day', value: n }\n }\n\n n = diffHours(m0, m1)\n\n if (isInt(n)) {\n return { unit: 'hour', value: n }\n }\n\n n = diffMinutes(m0, m1)\n\n if (isInt(n)) {\n return { unit: 'minute', value: n }\n }\n\n n = diffSeconds(m0, m1)\n\n if (isInt(n)) {\n return { unit: 'second', value: n }\n }\n\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() }\n }\n\n countDurationsBetween(m0: DateMarker, m1: DateMarker, d: Duration) {\n // TODO: can use greatestWholeUnit\n let diff\n\n if (d.years) {\n diff = this.diffWholeYears(m0, m1)\n if (diff !== null) {\n return diff / asRoughYears(d)\n }\n }\n\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1)\n if (diff !== null) {\n return diff / asRoughMonths(d)\n }\n }\n\n if (d.days) {\n diff = diffWholeDays(m0, m1)\n if (diff !== null) {\n return diff / asRoughDays(d)\n }\n }\n\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d)\n }\n\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n\n startOf(m: DateMarker, unit: string) {\n if (unit === 'year') {\n return this.startOfYear(m)\n }\n if (unit === 'month') {\n return this.startOfMonth(m)\n }\n if (unit === 'week') {\n return this.startOfWeek(m)\n }\n if (unit === 'day') {\n return startOfDay(m)\n }\n if (unit === 'hour') {\n return startOfHour(m)\n }\n if (unit === 'minute') {\n return startOfMinute(m)\n }\n if (unit === 'second') {\n return startOfSecond(m)\n }\n return null\n }\n\n startOfYear(m: DateMarker): DateMarker {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n ])\n }\n\n startOfMonth(m: DateMarker): DateMarker {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n ])\n }\n\n startOfWeek(m: DateMarker): DateMarker {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n ])\n }\n\n // Week Number\n\n computeWeekNumber(marker: DateMarker): number {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker))\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy)\n }\n\n // TODO: choke on timeZoneName: long\n format(marker: DateMarker, formatter: DateFormatter, dateOptions: { forcedTzo?: number } = {}) {\n return formatter.format(\n {\n marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker),\n },\n this,\n )\n }\n\n formatRange(\n start: DateMarker,\n end: DateMarker,\n formatter: DateFormatter,\n dateOptions: { forcedStartTzo?: number, forcedEndTzo?: number, isEndExclusive?: boolean, defaultSeparator?: string } = {},\n ) {\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1)\n }\n\n return formatter.formatRange(\n {\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start),\n },\n {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n this.offsetForMarker(end),\n },\n this,\n dateOptions.defaultSeparator,\n )\n }\n\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n formatIso(marker: DateMarker, extraOptions: any = {}) {\n let timeZoneOffset = null\n\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo\n } else {\n timeZoneOffset = this.offsetForMarker(marker)\n }\n }\n\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime)\n }\n\n // TimeZone\n\n timestampToMarker(ms: number) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)))\n } if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms)\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms))\n }\n\n offsetForMarker(m: DateMarker) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset() // convert \"inverse\" offset to \"normal\" offset\n } if (this.timeZone === 'UTC') {\n return 0\n } if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m))\n }\n return null\n }\n\n // Conversion\n\n toDate(m: DateMarker, forcedTzo?: number): Date {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m))\n }\n\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()) // make sure it's a copy\n }\n\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0))\n }\n\n return new Date(\n m.valueOf() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60, // convert minutes -> ms\n )\n }\n}\n","import { LocaleInput } from './datelib/locale'\n\nexport const globalLocales: LocaleInput[] = []\n","import { mergeProps } from '../util/object'\nimport { globalLocales } from '../global-locales' // weird to be importing this\nimport { CalendarOptions, CalendarOptionsRefined } from '../options'\n\nexport type LocaleCodeArg = string | string[]\nexport type LocaleSingularArg = LocaleCodeArg | LocaleInput\n\nexport interface Locale {\n codeArg: LocaleCodeArg\n codes: string[]\n week: { dow: number, doy: number }\n simpleNumberFormat: Intl.NumberFormat\n options: CalendarOptionsRefined\n}\n\nexport interface LocaleInput extends CalendarOptions {\n code: string\n}\n\nexport type LocaleInputMap = { [code: string]: LocaleInput }\n\nexport interface RawLocaleInfo {\n map: LocaleInputMap\n defaultCode: string\n}\n\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr' as ('ltr' | 'rtl'), // TODO: make a real type for this\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n}\n\nconst RAW_EN_LOCALE = {\n ...MINIMAL_RAW_EN_LOCALE,\n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today(buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : `This ${buttonText}`\n },\n },\n viewHint: '$0 view',\n navLinkHint: 'Go to $0',\n moreLinkHint(eventCnt: number) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`\n },\n}\n\nexport function organizeRawLocales(explicitRawLocales: LocaleInput[]): RawLocaleInfo {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'\n let allRawLocales = globalLocales.concat(explicitRawLocales)\n let rawLocaleMap: LocaleInputMap = {\n en: RAW_EN_LOCALE,\n }\n\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale\n }\n\n return {\n map: rawLocaleMap,\n defaultCode,\n }\n}\n\nexport function buildLocale(inputSingular: LocaleSingularArg, available: LocaleInputMap) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(\n inputSingular.code,\n [inputSingular.code],\n inputSingular,\n )\n }\n return queryLocale(inputSingular, available)\n}\n\nfunction queryLocale(codeArg: LocaleCodeArg, available: LocaleInputMap): Locale {\n let codes = [].concat(codeArg || []) // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE\n\n return parseLocale(codeArg, codes, raw)\n}\n\nfunction queryRawLocale(codes: string[], available: LocaleInputMap): LocaleInput {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-')\n\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-')\n\n if (available[simpleId]) {\n return available[simpleId]\n }\n }\n }\n return null\n}\n\nfunction parseLocale(codeArg: LocaleCodeArg, codes: string[], raw: LocaleInput): Locale {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText'])\n\n delete merged.code // don't want this part of the options\n let { week } = merged\n delete merged.week\n\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n }\n}\n","import { EventInput } from './event-parse'\nimport { EventStore, parseEvents } from './event-store'\nimport { CalendarContext } from '../CalendarContext'\n\n/*\nUtils for converting raw business hour input into an EventStore,\nfor both rendering and the constraint system.\n*/\n\nexport type BusinessHoursInput = boolean | EventInput | EventInput[]\n\nconst DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5], // monday - friday\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours', // so multiple defs get grouped\n}\n\n/*\nTODO: pass around as EventDefHash!!!\n*/\nexport function parseBusinessHours(input: BusinessHoursInput, context: CalendarContext): EventStore {\n return parseEvents(\n refineInputs(input),\n null,\n context,\n )\n}\n\nfunction refineInputs(input: BusinessHoursInput) {\n let rawDefs\n\n if (input === true) {\n rawDefs = [{}] // will get DEF_DEFAULTS verbatim\n } else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter((rawDef) => rawDef.daysOfWeek)\n } else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input]\n } else { // is probably false\n rawDefs = []\n }\n\n rawDefs = rawDefs.map((rawDef) => ({ ...DEF_DEFAULTS, ...rawDef }))\n\n return rawDefs\n}\n","let canVGrowWithinCell: boolean\n\nexport function getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell()\n }\n return canVGrowWithinCell\n}\n\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true\n }\n\n let el = document.createElement('div')\n el.style.position = 'absolute'\n el.style.top = '0px'\n el.style.left = '0px'\n el.innerHTML = '<table><tr><td><div></div></td></tr></table>'\n el.querySelector('table').style.height = '100px'\n el.querySelector('div').style.height = '100%'\n\n document.body.appendChild(el)\n\n let div = el.querySelector('div')\n let possible = div.offsetHeight > 0\n document.body.removeChild(el)\n return possible\n}\n","export interface Point {\n left: number\n top: number\n}\n\nexport interface Rect {\n left: number\n right: number\n top: number\n bottom: number\n}\n\nexport function pointInsideRect(point: Point, rect: Rect): boolean {\n return point.left >= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n point.top < rect.bottom\n}\n\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nexport function intersectRects(rect1: Rect, rect2: Rect): Rect | false {\n let res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom),\n }\n\n if (res.left < res.right && res.top < res.bottom) {\n return res\n }\n\n return false\n}\n\nexport function translateRect(rect: Rect, deltaX: number, deltaY: number): Rect {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY,\n }\n}\n\n// Returns a new point that will have been moved to reside within the given rectangle\nexport function constrainPoint(point: Point, rect: Rect): Point {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n }\n}\n\n// Returns a point that is the center of the given rectangle\nexport function getRectCenter(rect: Rect): Point {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2,\n }\n}\n\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nexport function diffPoints(point1: Point, point2: Point): Point {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top,\n }\n}\n","import { __assign } from 'tslib'\nimport { EventStore, createEmptyEventStore } from '../structs/event-store'\nimport { EventDef } from '../structs/event-def'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\nimport { mapHash } from '../util/object'\nimport { memoize } from '../util/memoize'\nimport { EventUiHash, EventUi, combineEventUis } from './event-ui'\nimport { DateSpan } from '../structs/date-span'\n\nexport interface SplittableProps {\n businessHours: EventStore | null // is this really allowed to be null?\n dateSelection: DateSpan | null\n eventStore: EventStore\n eventUiBases: EventUiHash\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n}\n\nconst EMPTY_EVENT_STORE = createEmptyEventStore() // for purecomponents. TODO: keep elsewhere\n\nexport abstract class Splitter<PropsType extends SplittableProps = SplittableProps> {\n private getKeysForEventDefs = memoize(this._getKeysForEventDefs)\n private splitDateSelection = memoize(this._splitDateSpan)\n private splitEventStore = memoize(this._splitEventStore)\n private splitIndividualUi = memoize(this._splitIndividualUi)\n private splitEventDrag = memoize(this._splitInteraction)\n private splitEventResize = memoize(this._splitInteraction)\n private eventUiBuilders = {} // TODO: typescript protection\n\n abstract getKeyInfo(props: PropsType): { [key: string]: { ui?: EventUi, businessHours?: EventStore } }\n abstract getKeysForDateSpan(dateSpan: DateSpan): string[]\n abstract getKeysForEventDef(eventDef: EventDef): string[]\n\n splitProps(props: PropsType): { [key: string]: SplittableProps } {\n let keyInfos = this.getKeyInfo(props)\n let defKeys = this.getKeysForEventDefs(props.eventStore)\n let dateSelections = this.splitDateSelection(props.dateSelection)\n let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys) // the individual *bases*\n let eventStores = this.splitEventStore(props.eventStore, defKeys)\n let eventDrags = this.splitEventDrag(props.eventDrag)\n let eventResizes = this.splitEventResize(props.eventResize)\n let splitProps: { [key: string]: SplittableProps } = {}\n\n this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey))\n\n for (let key in keyInfos) {\n let keyInfo = keyInfos[key]\n let eventStore = eventStores[key] || EMPTY_EVENT_STORE\n let buildEventUi = this.eventUiBuilders[key]\n\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null,\n }\n }\n\n return splitProps\n }\n\n private _splitDateSpan(dateSpan: DateSpan | null) {\n let dateSpans = {}\n\n if (dateSpan) {\n let keys = this.getKeysForDateSpan(dateSpan)\n\n for (let key of keys) {\n dateSpans[key] = dateSpan\n }\n }\n\n return dateSpans\n }\n\n private _getKeysForEventDefs(eventStore: EventStore) {\n return mapHash(eventStore.defs, (eventDef: EventDef) => this.getKeysForEventDef(eventDef))\n }\n\n private _splitEventStore(eventStore: EventStore, defKeys): { [key: string]: EventStore } {\n let { defs, instances } = eventStore\n let splitStores = {}\n\n for (let defId in defs) {\n for (let key of defKeys[defId]) {\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore()\n }\n\n splitStores[key].defs[defId] = defs[defId]\n }\n }\n\n for (let instanceId in instances) {\n let instance = instances[instanceId]\n\n for (let key of defKeys[instance.defId]) {\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance\n }\n }\n }\n\n return splitStores\n }\n\n private _splitIndividualUi(eventUiBases: EventUiHash, defKeys): { [key: string]: EventUiHash } {\n let splitHashes: { [key: string]: EventUiHash } = {}\n\n for (let defId in eventUiBases) {\n if (defId) { // not the '' key\n for (let key of defKeys[defId]) {\n if (!splitHashes[key]) {\n splitHashes[key] = {}\n }\n\n splitHashes[key][defId] = eventUiBases[defId]\n }\n }\n }\n\n return splitHashes\n }\n\n private _splitInteraction(interaction: EventInteractionState | null): { [key: string]: EventInteractionState } {\n let splitStates: { [key: string]: EventInteractionState } = {}\n\n if (interaction) {\n let affectedStores = this._splitEventStore(\n interaction.affectedEvents,\n this._getKeysForEventDefs(interaction.affectedEvents), // can't use cached. might be events from other calendar\n )\n\n // can't rely on defKeys because event data is mutated\n let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents)\n let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId)\n\n let populate = (key) => {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n }\n }\n }\n\n for (let key in affectedStores) {\n populate(key)\n }\n\n for (let key in mutatedStores) {\n populate(key)\n }\n }\n\n return splitStates\n }\n}\n\nfunction buildEventUiForKey(allUi: EventUi | null, eventUiForKey: EventUi | null, individualUi: EventUiHash | null) {\n let baseParts = []\n\n if (allUi) {\n baseParts.push(allUi)\n }\n\n if (eventUiForKey) {\n baseParts.push(eventUiForKey)\n }\n\n let stuff = {\n '': combineEventUis(baseParts),\n }\n\n if (individualUi) {\n __assign(stuff, individualUi)\n }\n\n return stuff\n}\n","import { DateMarker, DAY_IDS } from '../datelib/marker'\nimport { rangeContainsMarker, DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Theme } from '../theme/Theme'\n\nexport interface DateMeta {\n dow: number\n isDisabled: boolean\n isOther: boolean // like, is it in the non-current \"other\" month\n isToday: boolean\n isPast: boolean\n isFuture: boolean\n}\n\nexport function getDateMeta(date: DateMarker, todayRange?: DateRange, nowDate?: DateMarker, dateProfile?: DateProfile): DateMeta {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n }\n}\n\nexport function getDayClassNames(meta: DateMeta, theme: Theme) {\n let classNames: string[] = [\n 'fc-day',\n `fc-day-${DAY_IDS[meta.dow]}`,\n ]\n\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled')\n } else {\n if (meta.isToday) {\n classNames.push('fc-day-today')\n classNames.push(theme.getClass('today'))\n }\n\n if (meta.isPast) {\n classNames.push('fc-day-past')\n }\n\n if (meta.isFuture) {\n classNames.push('fc-day-future')\n }\n\n if (meta.isOther) {\n classNames.push('fc-day-other')\n }\n }\n\n return classNames\n}\n\nexport function getSlotClassNames(meta: DateMeta, theme: Theme) {\n let classNames: string[] = [\n 'fc-slot',\n `fc-slot-${DAY_IDS[meta.dow]}`,\n ]\n\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled')\n } else {\n if (meta.isToday) {\n classNames.push('fc-slot-today')\n classNames.push(theme.getClass('today'))\n }\n\n if (meta.isPast) {\n classNames.push('fc-slot-past')\n }\n\n if (meta.isFuture) {\n classNames.push('fc-slot-future')\n }\n }\n\n return classNames\n}\n","import { createFormatter } from '../datelib/formatting'\nimport { DateMarker } from '../datelib/marker'\nimport { createAriaClickAttrs } from '../util/dom-event'\nimport { formatWithOrdinals } from '../util/misc'\nimport { ViewContext } from '../ViewContext'\n\nconst DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' })\nconst WEEK_FORMAT = createFormatter({ week: 'long' })\n\nexport function buildNavLinkAttrs(\n context: ViewContext,\n dateMarker: DateMarker,\n viewType = 'day',\n isTabbable = true,\n) {\n const { dateEnv, options, calendarApi } = context\n let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT)\n\n if (options.navLinks) {\n let zonedDate = dateEnv.toDate(dateMarker)\n\n const handleInteraction = (ev: UIEvent) => {\n let customAction =\n viewType === 'day' ? options.navLinkDayClick :\n viewType === 'week' ? options.navLinkWeekClick : null\n\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev)\n } else {\n if (typeof customAction === 'string') {\n viewType = customAction\n }\n calendarApi.zoomTo(dateMarker, viewType)\n }\n }\n\n return {\n title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr),\n 'data-navlink': '', // for legacy selectors. TODO: use className?\n ...(isTabbable\n ? createAriaClickAttrs(handleInteraction)\n : { onClick: handleInteraction }\n ),\n }\n }\n\n return { 'aria-label': dateStr }\n}\n","import { removeElement, applyStyle } from './dom-manip'\n\nlet _isRtlScrollbarOnLeft: boolean | null = null\n\nexport function getIsRtlScrollbarOnLeft() { // responsible for caching the computation\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft()\n }\n return _isRtlScrollbarOnLeft\n}\n\nfunction computeIsRtlScrollbarOnLeft() { // creates an offscreen test element, then removes it\n let outerEl = document.createElement('div')\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl',\n })\n outerEl.innerHTML = '<div></div>'\n\n document.body.appendChild(outerEl)\n let innerEl = outerEl.firstChild as HTMLElement\n let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left\n\n removeElement(outerEl)\n return res\n}\n","export interface ScrollbarWidths {\n x: number\n y: number // TODO: rename to vertical. less confusing when dealing with width/height verbage\n}\n\nlet _scrollbarWidths: ScrollbarWidths | undefined\n\nexport function getScrollbarWidths() { // TODO: way to force recompute?\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths()\n }\n\n return _scrollbarWidths\n}\n\nfunction computeScrollbarWidths(): ScrollbarWidths {\n let el = document.createElement('div')\n el.style.overflow = 'scroll'\n el.style.position = 'absolute'\n el.style.top = '-9999px'\n el.style.left = '-9999px'\n document.body.appendChild(el)\n let res = computeScrollbarWidthsForEl(el)\n document.body.removeChild(el)\n return res\n}\n\n// WARNING: will include border\nexport function computeScrollbarWidthsForEl(el: HTMLElement): ScrollbarWidths {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth,\n }\n}\n","import { intersectRects, Rect } from './geom'\nimport { getIsRtlScrollbarOnLeft } from './scrollbar-side'\nimport { computeScrollbarWidthsForEl } from './scrollbar-width'\n\nexport interface EdgeInfo {\n borderLeft: number\n borderRight: number\n borderTop: number\n borderBottom: number\n scrollbarLeft: number\n scrollbarRight: number\n scrollbarBottom: number\n paddingLeft?: number\n paddingRight?: number\n paddingTop?: number\n paddingBottom?: number\n}\n\nexport function computeEdges(el: HTMLElement, getPadding = false): EdgeInfo { // cache somehow?\n let computedStyle = window.getComputedStyle(el)\n let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0\n let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0\n let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0\n let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0\n let badScrollbarWidths = computeScrollbarWidthsForEl(el) // includes border!\n let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight\n let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom\n\n let res: EdgeInfo = {\n borderLeft,\n borderRight,\n borderTop,\n borderBottom,\n scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0,\n }\n\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight\n } else {\n res.scrollbarRight = scrollbarLeftRight\n }\n\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0\n }\n\n return res\n}\n\nexport function computeInnerRect(el, goWithinPadding = false, doFromWindowViewport?: boolean) {\n let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el)\n let edges = computeEdges(el, goWithinPadding)\n let res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n }\n\n if (goWithinPadding) {\n res.left += edges.paddingLeft\n res.right -= edges.paddingRight\n res.top += edges.paddingTop\n res.bottom -= edges.paddingBottom\n }\n\n return res\n}\n\nexport function computeRect(el): Rect {\n let rect = el.getBoundingClientRect()\n\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset,\n }\n}\n\nexport function computeClippedClientRect(el: HTMLElement): Rect | null {\n let clippingParents = getClippingParents(el)\n let rect: Rect = el.getBoundingClientRect()\n\n for (let clippingParent of clippingParents) {\n let intersection = intersectRects(rect, clippingParent.getBoundingClientRect())\n if (intersection) {\n rect = intersection\n } else {\n return null\n }\n }\n\n return rect\n}\n\nexport function computeHeightAndMargins(el: HTMLElement) {\n return el.getBoundingClientRect().height + computeVMargins(el)\n}\n\nexport function computeVMargins(el: HTMLElement) {\n let computed = window.getComputedStyle(el)\n\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10)\n}\n\n// does not return window\nexport function getClippingParents(el: HTMLElement): HTMLElement[] {\n let parents: HTMLElement[] = []\n\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n let computedStyle = window.getComputedStyle(el)\n\n if (computedStyle.position === 'fixed') {\n break\n }\n\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el)\n }\n\n el = el.parentNode as HTMLElement\n }\n\n return parents\n}\n","// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nexport function unpromisify(func, success, failure?) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n let isResolved = false\n let wrappedSuccess = function () { // eslint-disable-line func-names\n if (!isResolved) {\n isResolved = true\n success.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n }\n let wrappedFailure = function () { // eslint-disable-line func-names\n if (!isResolved) {\n isResolved = true\n if (failure) {\n failure.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n }\n }\n\n let res = func(wrappedSuccess, wrappedFailure)\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure)\n }\n}\n","export interface HandlerFuncTypeHash {\n [eventName: string]: (...args: any[]) => any // with all properties required\n}\n\nexport class Emitter<HandlerFuncs extends HandlerFuncTypeHash> {\n private handlers: { [Prop in keyof HandlerFuncs]?: HandlerFuncs[Prop][] } = {}\n\n private options: Partial<HandlerFuncs>\n\n private thisContext: any = null\n\n setThisContext(thisContext) {\n this.thisContext = thisContext\n }\n\n setOptions(options: Partial<HandlerFuncs>) {\n this.options = options\n }\n\n on<Prop extends keyof HandlerFuncs>(type: Prop, handler: HandlerFuncs[Prop]) {\n addToHash(this.handlers, type, handler)\n }\n\n off<Prop extends keyof HandlerFuncs>(type: Prop, handler?: HandlerFuncs[Prop]) {\n removeFromHash(this.handlers, type, handler)\n }\n\n trigger<Prop extends keyof HandlerFuncs>(type: Prop, ...args: Parameters<HandlerFuncs[Prop]>) {\n let attachedHandlers = this.handlers[type] || []\n let optionHandler = this.options && this.options[type]\n let handlers = [].concat(optionHandler || [], attachedHandlers)\n\n for (let handler of handlers) {\n handler.apply(this.thisContext, args)\n }\n }\n\n hasHandlers(type: keyof HandlerFuncs): boolean {\n return Boolean(\n (this.handlers[type] && this.handlers[type].length) ||\n (this.options && this.options[type]),\n )\n }\n}\n\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler)\n}\n\nfunction removeFromHash(hash, type, handler?) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter((func) => func !== handler)\n }\n } else {\n delete hash[type] // remove all handler funcs for this type\n }\n}\n","/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nexport class PositionCache {\n els: HTMLElement[] // assumed to be siblings\n originClientRect: ClientRect\n\n // arrays of coordinates (from topleft of originEl)\n // caller can access these directly\n lefts: any\n rights: any\n tops: any\n bottoms: any\n\n constructor(originEl: HTMLElement, els: HTMLElement[], isHorizontal: boolean, isVertical: boolean) {\n this.els = els\n\n let originClientRect = this.originClientRect = originEl.getBoundingClientRect() // relative to viewport top-left\n\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left)\n }\n\n if (isVertical) {\n this.buildElVerticals(originClientRect.top)\n }\n }\n\n // Populates the left/right internal coordinate arrays\n buildElHorizontals(originClientLeft: number) {\n let lefts = []\n let rights = []\n\n for (let el of this.els) {\n let rect = el.getBoundingClientRect()\n lefts.push(rect.left - originClientLeft)\n rights.push(rect.right - originClientLeft)\n }\n\n this.lefts = lefts\n this.rights = rights\n }\n\n // Populates the top/bottom internal coordinate arrays\n buildElVerticals(originClientTop: number) {\n let tops = []\n let bottoms = []\n\n for (let el of this.els) {\n let rect = el.getBoundingClientRect()\n tops.push(rect.top - originClientTop)\n bottoms.push(rect.bottom - originClientTop)\n }\n\n this.tops = tops\n this.bottoms = bottoms\n }\n\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n leftToIndex(leftPosition: number) {\n let { lefts, rights } = this\n let len = lefts.length\n let i\n\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i\n }\n }\n\n return undefined // TODO: better\n }\n\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n topToIndex(topPosition: number) {\n let { tops, bottoms } = this\n let len = tops.length\n let i\n\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i\n }\n }\n\n return undefined // TODO: better\n }\n\n // Gets the width of the element at the given index\n getWidth(leftIndex: number) {\n return this.rights[leftIndex] - this.lefts[leftIndex]\n }\n\n // Gets the height of the element at the given index\n getHeight(topIndex: number) {\n return this.bottoms[topIndex] - this.tops[topIndex]\n }\n}\n","/* eslint max-classes-per-file: \"off\" */\n\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nexport abstract class ScrollController {\n abstract getScrollTop(): number\n abstract getScrollLeft(): number\n abstract setScrollTop(top: number): void\n abstract setScrollLeft(left: number): void\n abstract getClientWidth(): number\n abstract getClientHeight(): number\n abstract getScrollWidth(): number\n abstract getScrollHeight(): number\n\n getMaxScrollTop() {\n return this.getScrollHeight() - this.getClientHeight()\n }\n\n getMaxScrollLeft() {\n return this.getScrollWidth() - this.getClientWidth()\n }\n\n canScrollVertically() {\n return this.getMaxScrollTop() > 0\n }\n\n canScrollHorizontally() {\n return this.getMaxScrollLeft() > 0\n }\n\n canScrollUp() {\n return this.getScrollTop() > 0\n }\n\n canScrollDown() {\n return this.getScrollTop() < this.getMaxScrollTop()\n }\n\n canScrollLeft() {\n return this.getScrollLeft() > 0\n }\n\n canScrollRight() {\n return this.getScrollLeft() < this.getMaxScrollLeft()\n }\n}\n\nexport class ElementScrollController extends ScrollController {\n el: HTMLElement\n\n constructor(el: HTMLElement) {\n super()\n this.el = el\n }\n\n getScrollTop() {\n return this.el.scrollTop\n }\n\n getScrollLeft() {\n return this.el.scrollLeft\n }\n\n setScrollTop(top: number) {\n this.el.scrollTop = top\n }\n\n setScrollLeft(left: number) {\n this.el.scrollLeft = left\n }\n\n getScrollWidth() {\n return this.el.scrollWidth\n }\n\n getScrollHeight() {\n return this.el.scrollHeight\n }\n\n getClientHeight() {\n return this.el.clientHeight\n }\n\n getClientWidth() {\n return this.el.clientWidth\n }\n}\n\nexport class WindowScrollController extends ScrollController {\n getScrollTop() {\n return window.pageYOffset\n }\n\n getScrollLeft() {\n return window.pageXOffset\n }\n\n setScrollTop(n: number) {\n window.scroll(window.pageXOffset, n)\n }\n\n setScrollLeft(n: number) {\n window.scroll(n, window.pageYOffset)\n }\n\n getScrollWidth() {\n return document.documentElement.scrollWidth\n }\n\n getScrollHeight() {\n return document.documentElement.scrollHeight\n }\n\n getClientHeight() {\n return document.documentElement.clientHeight\n }\n\n getClientWidth() {\n return document.documentElement.clientWidth\n }\n}\n","import { CalendarOptionsRefined } from '../options'\n\nexport class Theme {\n // settings. default values are set after the class\n classes: any\n iconClasses: any\n rtlIconClasses: any\n baseIconClass: string // className that ALL icon elements for this theme should have\n iconOverrideOption: any // the name of the setting to use for icons. the subclass must set this.\n iconOverrideCustomButtonOption: any // the name of the setting, *within* each customButtons object, to use for icons\n iconOverridePrefix: string\n\n constructor(calendarOptions: CalendarOptionsRefined) {\n if (this.iconOverrideOption) {\n this.setIconOverride(\n calendarOptions[this.iconOverrideOption],\n )\n }\n }\n\n setIconOverride(iconOverrideHash) {\n let iconClassesCopy\n let buttonName\n\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = { ...this.iconClasses }\n\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(\n iconOverrideHash[buttonName],\n )\n }\n\n this.iconClasses = iconClassesCopy\n } else if (iconOverrideHash === false) {\n this.iconClasses = {}\n }\n }\n\n applyIconOverridePrefix(className) {\n let prefix = this.iconOverridePrefix\n\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className\n }\n\n return className\n }\n\n getClass(key) {\n return this.classes[key] || ''\n }\n\n getIconClass(buttonName, isRtl?: boolean) {\n let className\n\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName]\n } else {\n className = this.iconClasses[buttonName]\n }\n\n if (className) {\n return `${this.baseIconClass} ${className}`\n }\n\n return ''\n }\n\n getCustomButtonIconClass(customButtonProps) {\n let className\n\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption]\n\n if (className) {\n return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`\n }\n }\n\n return ''\n }\n}\n\nTheme.prototype.classes = {}\nTheme.prototype.iconClasses = {}\nTheme.prototype.baseIconClass = ''\nTheme.prototype.iconOverridePrefix = ''\n\nexport type ThemeClass = { new(calendarOptions: any): Theme }\n","import { __assign } from 'tslib'\nimport { Duration } from './datelib/duration'\nimport { Emitter } from './common/Emitter'\nimport { CalendarListeners } from './options'\n\nexport interface ScrollRequest {\n time?: Duration\n [otherProp: string]: any\n}\n\nexport type ScrollRequestHandler = (request: ScrollRequest) => boolean\n\nexport class ScrollResponder {\n queuedRequest: ScrollRequest\n\n constructor(\n private execFunc: ScrollRequestHandler,\n private emitter: Emitter<CalendarListeners>,\n private scrollTime: Duration,\n private scrollTimeReset: boolean,\n ) {\n emitter.on('_scrollRequest', this.handleScrollRequest)\n this.fireInitialScroll()\n }\n\n detach() {\n this.emitter.off('_scrollRequest', this.handleScrollRequest)\n }\n\n update(isDatesNew: boolean) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll() // will drain\n } else {\n this.drain()\n }\n }\n\n private fireInitialScroll() {\n this.handleScrollRequest({\n time: this.scrollTime,\n })\n }\n\n private handleScrollRequest = (request: ScrollRequest) => {\n this.queuedRequest = __assign({}, this.queuedRequest || {}, request)\n this.drain()\n }\n\n private drain() {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null\n }\n }\n}\n","import { CalendarApi } from './CalendarApi'\nimport { ViewApi } from './ViewApi'\nimport { Theme } from './theme/Theme'\nimport { DateEnv } from './datelib/env'\nimport { PluginHooks } from './plugin-system-struct'\nimport { createContext, Context } from './vdom'\nimport { ScrollResponder, ScrollRequestHandler } from './ScrollResponder'\nimport { DateProfileGenerator } from './DateProfileGenerator'\nimport { ViewSpec } from './structs/view-spec'\nimport { CalendarData } from './reducers/data-types'\nimport { Action } from './reducers/Action'\nimport { Emitter } from './common/Emitter'\nimport { InteractionSettingsInput } from './interactions/interaction'\nimport { DateComponent } from './component/DateComponent'\nimport { CalendarContext } from './CalendarContext'\nimport { createDuration } from './datelib/duration'\nimport { ViewOptionsRefined, CalendarListeners } from './options'\n\nexport const ViewContextType: Context<any> = createContext<ViewContext>({} as any) // for Components\nexport type ResizeHandler = (force: boolean) => void\n\n/*\nit's important that ViewContext extends CalendarContext so that components that subscribe to ViewContext\ncan pass in their ViewContext to util functions that accept CalendarContext.\n*/\nexport interface ViewContext extends CalendarContext {\n options: ViewOptionsRefined // more specific than BaseOptionsRefined\n theme: Theme\n isRtl: boolean\n dateProfileGenerator: DateProfileGenerator\n viewSpec: ViewSpec\n viewApi: ViewApi\n addResizeHandler: (handler: ResizeHandler) => void\n removeResizeHandler: (handler: ResizeHandler) => void\n createScrollResponder: (execFunc: ScrollRequestHandler) => ScrollResponder\n registerInteractiveComponent: (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => void\n unregisterInteractiveComponent: (component: DateComponent<any>) => void\n}\n\nexport function buildViewContext(\n viewSpec: ViewSpec,\n viewApi: ViewApi,\n viewOptions: ViewOptionsRefined,\n dateProfileGenerator: DateProfileGenerator,\n dateEnv: DateEnv,\n theme: Theme,\n pluginHooks: PluginHooks,\n dispatch: (action: Action) => void,\n getCurrentData: () => CalendarData,\n emitter: Emitter<CalendarListeners>,\n calendarApi: CalendarApi,\n registerInteractiveComponent: (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => void,\n unregisterInteractiveComponent: (component: DateComponent<any>) => void,\n): ViewContext {\n return {\n dateEnv,\n options: viewOptions,\n pluginHooks,\n emitter,\n dispatch,\n getCurrentData,\n calendarApi,\n viewSpec,\n viewApi,\n dateProfileGenerator,\n theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler(handler: ResizeHandler) {\n emitter.on('_resize', handler)\n },\n removeResizeHandler(handler: ResizeHandler) {\n emitter.off('_resize', handler)\n },\n createScrollResponder(execFunc: ScrollRequestHandler) {\n return new ScrollResponder(\n execFunc,\n emitter,\n createDuration(viewOptions.scrollTime),\n viewOptions.scrollTimeReset,\n )\n },\n registerInteractiveComponent,\n unregisterInteractiveComponent,\n }\n}\n","/* eslint max-classes-per-file: off */\n\nimport { __assign } from 'tslib'\nimport { Component, Ref } from './vdom'\nimport { ViewContextType, ViewContext } from './ViewContext'\nimport { compareObjs, EqualityFuncs, getUnequalProps } from './util/object'\nimport { Dictionary } from './options'\n\nexport abstract class PureComponent<Props=Dictionary, State=Dictionary> extends Component<Props, State> {\n static addPropsEquality = addPropsEquality\n static addStateEquality = addStateEquality\n static contextType: any = ViewContextType\n\n context: ViewContext\n propEquality: EqualityFuncs<Props>\n stateEquality: EqualityFuncs<State>\n\n debug: boolean\n\n shouldComponentUpdate(nextProps: Props, nextState: State) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state))\n }\n\n return !compareObjs(this.props, nextProps, this.propEquality) ||\n !compareObjs(this.state, nextState, this.stateEquality)\n }\n\n // HACK for freakin' React StrictMode\n safeSetState(newState: Partial<State>): void {\n if (!compareObjs(this.state, { ...this.state, ...newState }, this.stateEquality)) {\n this.setState(newState)\n }\n }\n}\n\nPureComponent.prototype.propEquality = {}\nPureComponent.prototype.stateEquality = {}\n\nexport abstract class BaseComponent<Props=Dictionary, State=Dictionary> extends PureComponent<Props, State> {\n static contextType: any = ViewContextType\n\n context: ViewContext\n}\n\nfunction addPropsEquality(this: { prototype: { propEquality: any } }, propEquality) {\n let hash = Object.create(this.prototype.propEquality)\n __assign(hash, propEquality)\n this.prototype.propEquality = hash\n}\n\nfunction addStateEquality(this: { prototype: { stateEquality: any } }, stateEquality) {\n let hash = Object.create(this.prototype.stateEquality)\n __assign(hash, stateEquality)\n this.prototype.stateEquality = hash\n}\n\n// use other one\nexport function setRef<RefType>(ref: Ref<RefType> | void, current: RefType) {\n if (typeof ref === 'function') {\n ref(current)\n } else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n (ref as any).current = current\n }\n}\n","import { BaseComponent } from '../vdom-util'\nimport { EventRenderRange } from './event-rendering'\nimport { EventInstanceHash } from '../structs/event-instance'\nimport { Hit } from '../interactions/hit'\nimport { elementClosest } from '../util/dom-manip'\nimport { guid } from '../util/misc'\nimport { Dictionary } from '../options'\n\nexport type DateComponentHash = { [uid: string]: DateComponent<any, any> }\n\n// NOTE: for fg-events, eventRange.range is NOT sliced,\n// thus, we need isStart/isEnd\nexport interface Seg {\n component?: DateComponent<any, any>\n isStart: boolean\n isEnd: boolean\n eventRange?: EventRenderRange\n [otherProp: string]: any // TODO: remove this. extending Seg will handle this\n el?: never\n // NOTE: can sometimes have start/end, which are important values :(\n}\n\nexport interface EventSegUiInteractionState {\n affectedInstances: EventInstanceHash\n segs: Seg[]\n isEvent: boolean\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nexport abstract class DateComponent<Props=Dictionary, State=Dictionary> extends BaseComponent<Props, State> {\n uid = guid()\n\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n\n prepareHits() {\n }\n\n queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null {\n return null // this should be abstract\n }\n\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n\n isValidSegDownEl(el: HTMLElement) {\n return !(this.props as any).eventDrag && // HACK\n !(this.props as any).eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror')\n }\n\n isValidDateDownEl(el: HTMLElement) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover') // hack\n }\n}\n","import { guid } from './util/misc'\nimport { PluginDefInput, PluginDef, PluginHooks } from './plugin-system-struct'\nimport { isArraysEqual } from './util/array'\n\n// TODO: easier way to add new hooks? need to update a million things\n\nexport function createPlugin(input: PluginDefInput): PluginDef {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n }\n}\n\nfunction buildPluginHooks(pluginDefs: PluginDef[], globalDefs: PluginDef[]): PluginHooks {\n let isAdded: { [pluginId: string]: boolean } = {}\n let hooks: PluginHooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n }\n\n function addDefs(defs: PluginDef[]) {\n for (let def of defs) {\n if (!isAdded[def.id]) {\n isAdded[def.id] = true\n addDefs(def.deps)\n hooks = combineHooks(hooks, def)\n }\n }\n }\n\n if (pluginDefs) {\n addDefs(pluginDefs)\n }\n\n addDefs(globalDefs)\n\n return hooks\n}\n\nexport function buildBuildPluginHooks() { // memoizes\n let currentOverrideDefs: PluginDef[] = []\n let currentGlobalDefs: PluginDef[] = []\n let currentHooks: PluginHooks\n\n return (overrideDefs: PluginDef[], globalDefs: PluginDef[]) => {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs)\n }\n currentOverrideDefs = overrideDefs\n currentGlobalDefs = globalDefs\n return currentHooks\n }\n}\n\nfunction combineHooks(hooks0: PluginHooks, hooks1: PluginHooks): PluginHooks {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: { ...hooks0.eventRefiners, ...hooks1.eventRefiners },\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: { ...hooks0.eventSourceRefiners, ...hooks1.eventSourceRefiners },\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: { ...hooks0.views, ...hooks1.views },\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: { ...hooks0.themeClasses, ...hooks1.themeClasses },\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView, // put earlier plugins FIRST\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, // \"\n optionChangeHandlers: { ...hooks0.optionChangeHandlers, ...hooks1.optionChangeHandlers },\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: { ...hooks0.contentTypeHandlers, ...hooks1.contentTypeHandlers },\n listenerRefiners: { ...hooks0.listenerRefiners, ...hooks1.listenerRefiners },\n optionRefiners: { ...hooks0.optionRefiners, ...hooks1.optionRefiners },\n propSetHandlers: { ...hooks0.propSetHandlers, ...hooks1.propSetHandlers },\n }\n}\n","import { Theme } from './Theme'\n\nexport class StandardTheme extends Theme {\n}\n\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard', // TODO: compute this off of registered theme name\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n}\n\nStandardTheme.prototype.baseIconClass = 'fc-icon'\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n}\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n}\n\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons' // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-'\n","import { ViewConfigHash, ViewComponentType } from './view-config'\nimport { ViewOptions } from '../options'\n\n/*\nRepresents information for an instantiatable View class along with settings\nthat are specific to that view. No other settings, like calendar-wide settings, are stored.\n*/\nexport interface ViewDef {\n type: string\n component: ViewComponentType\n overrides: ViewOptions\n defaults: ViewOptions\n}\n\nexport type ViewDefHash = { [viewType: string]: ViewDef }\n\nexport function compileViewDefs(defaultConfigs: ViewConfigHash, overrideConfigs: ViewConfigHash): ViewDefHash {\n let hash: ViewDefHash = {}\n let viewType: string\n\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n }\n\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n }\n\n return hash\n}\n\nfunction ensureViewDef(\n viewType: string,\n hash: ViewDefHash,\n defaultConfigs: ViewConfigHash,\n overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n if (hash[viewType]) {\n return hash[viewType]\n }\n\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n\n if (viewDef) {\n hash[viewType] = viewDef\n }\n\n return viewDef\n}\n\nfunction buildViewDef(\n viewType: string,\n hash: ViewDefHash,\n defaultConfigs: ViewConfigHash,\n overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n let defaultConfig = defaultConfigs[viewType]\n let overrideConfig = overrideConfigs[viewType]\n\n let queryProp = (name) => (\n (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)\n )\n\n let theComponent = queryProp('component') as ViewComponentType\n let superType = queryProp('superType') as string\n let superDef: ViewDef | null = null\n\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself')\n }\n\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs)\n }\n\n if (!theComponent && superDef) {\n theComponent = superDef.component\n }\n\n if (!theComponent) {\n return null // don't throw a warning, might be settings for a single-unit view\n }\n\n return {\n type: viewType,\n component: theComponent,\n defaults: {\n ...(superDef ? superDef.defaults : {}),\n ...(defaultConfig ? defaultConfig.rawOptions : {}),\n },\n overrides: {\n ...(superDef ? superDef.overrides : {}),\n ...(overrideConfig ? overrideConfig.rawOptions : {}),\n },\n }\n}\n","/* eslint max-classes-per-file: off */\n\nimport { Ref, createRef, ComponentChildren, createElement, RefObject, createContext, Context } from '../vdom'\nimport { setRef, BaseComponent } from '../vdom-util'\nimport { isPropsEqual } from '../util/object'\nimport { parseClassNames, ClassNamesInput } from '../util/html'\n\nexport type MountArg<ContentArg> = ContentArg & { el: HTMLElement }\nexport type DidMountHandler<TheMountArg extends { el: HTMLElement }> = (mountArg: TheMountArg) => void\nexport type WillUnmountHandler<TheMountArg extends { el: HTMLElement }> = (mountArg: TheMountArg) => void\n\nexport interface RenderHookProps<ContentArg> {\n hookProps: ContentArg\n classNames: ClassNamesGenerator<ContentArg>\n content: CustomContentGenerator<ContentArg>\n defaultContent?: DefaultContentGenerator<ContentArg>\n didMount: DidMountHandler<MountArg<ContentArg>>\n willUnmount: WillUnmountHandler<MountArg<ContentArg>>\n children: RenderHookPropsChildren\n elRef?: Ref<any>\n}\n\nexport type RenderHookPropsChildren = (\n rootElRef: Ref<any>,\n classNames: string[],\n innerElRef: Ref<any>,\n innerContent: ComponentChildren // if falsy, means it wasn't specified\n) => ComponentChildren\n\nexport interface ContentTypeHandlers {\n [contentKey: string]: () => ({\n render: (el: HTMLElement, contentVal: any) => void\n destroy?: () => void\n })\n}\n\n// NOTE: in JSX, you should always use this class with <HookProps> arg. otherwise, will default to any???\nexport class RenderHook<HookProps> extends BaseComponent<RenderHookProps<HookProps>> {\n private rootElRef = createRef()\n\n render() {\n let { props } = this\n let { hookProps } = props\n\n return (\n <MountHook hookProps={hookProps} didMount={props.didMount} willUnmount={props.willUnmount} elRef={this.handleRootEl}>\n {(rootElRef) => (\n <ContentHook hookProps={hookProps} content={props.content} defaultContent={props.defaultContent} backupElRef={this.rootElRef}>\n {(innerElRef, innerContent) => props.children(\n rootElRef,\n normalizeClassNames(props.classNames, hookProps),\n innerElRef,\n innerContent,\n )}\n </ContentHook>\n )}\n </MountHook>\n )\n }\n\n handleRootEl = (el: HTMLElement | null) => {\n setRef(this.rootElRef, el)\n\n if (this.props.elRef) {\n setRef(this.props.elRef, el)\n }\n }\n}\n\nexport interface ObjCustomContent {\n html: string\n domNodes: any[]\n [custom: string]: any // TODO: expose hook for plugins to add!\n}\n\nexport type CustomContent = ComponentChildren | ObjCustomContent\nexport type CustomContentGenerator<HookProps> = CustomContent | ((hookProps: HookProps) => CustomContent)\n\nexport type DefaultContentGenerator<HookProps> = (hookProps: HookProps) => ComponentChildren\n// TODO: rename to be about function, not default. use in above type\n\n// for forcing rerender of components that use the ContentHook\nexport const CustomContentRenderContext: Context<number> = createContext<number>(0)\n\nexport interface ContentHookProps<HookProps> {\n hookProps: HookProps // produced by FullCalendar internally, for rendering an entity/whatever\n content: CustomContentGenerator<HookProps> // the value of a user-hook, like `eventContent`\n defaultContent?: DefaultContentGenerator<HookProps> // if content not specified (TODO: just use content?)\n children: ( // for producing a wrapper around the content\n innerElRef: Ref<any>,\n innerContent: ComponentChildren // if falsy, means it wasn't specified\n ) => ComponentChildren\n backupElRef?: RefObject<any>\n}\n\ninterface ContentHookInnerProps<HookProps> extends ContentHookProps<HookProps> {\n renderId: number\n}\n\nexport function ContentHook<HookProps>(props: ContentHookProps<HookProps>) { // TODO: rename to CustomContentHook?\n return (\n <CustomContentRenderContext.Consumer>\n {(renderId) => (\n <ContentHookInner renderId={renderId} {...props} />\n )}\n </CustomContentRenderContext.Consumer>\n )\n}\n\nclass ContentHookInner<HookProps> extends BaseComponent<ContentHookInnerProps<HookProps>> {\n private innerElRef = createRef()\n\n private customContentInfo: {\n contentKey: string\n contentVal: any\n render: (el: HTMLElement, contentVal: any) => void\n destroy?: () => void\n }\n\n render() {\n return this.props.children(this.innerElRef, this.renderInnerContent())\n }\n\n componentDidMount() {\n this.updateCustomContent()\n }\n\n componentDidUpdate() {\n this.updateCustomContent()\n }\n\n componentWillUnmount() {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy()\n }\n }\n\n private renderInnerContent() {\n let { customContentInfo } = this // only populated if using non-[p]react node(s)\n let innerContent = this.getInnerContent()\n let meta = this.getContentMeta(innerContent)\n\n // initial run, or content-type changing? (from vue -> react for example)\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy()\n }\n customContentInfo = this.customContentInfo = null\n }\n // assigning new value\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = { // for non-[p]react\n contentKey: meta.contentKey,\n contentVal: innerContent[meta.contentKey],\n ...meta.buildLifecycleFuncs(),\n }\n }\n // updating\n } else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey]\n }\n\n return customContentInfo\n ? [] // signal that something was specified\n : innerContent // assume a [p]react vdom node. use it\n }\n\n private getInnerContent() {\n let { props } = this\n let innerContent = normalizeContent(props.content, props.hookProps)\n\n if (innerContent === undefined) { // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps)\n }\n\n return innerContent == null ? null : innerContent // convert undefined to null (better for React)\n }\n\n private getContentMeta(innerContent: any) {\n let { contentTypeHandlers } = this.context.pluginHooks\n let contentKey = ''\n let buildLifecycleFuncs = null\n\n if (innerContent) { // allowed to be null, for convenience to caller\n for (let searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey\n buildLifecycleFuncs = contentTypeHandlers[searchKey]\n break\n }\n }\n }\n\n return { contentKey, buildLifecycleFuncs }\n }\n\n private updateCustomContent() {\n if (this.customContentInfo) { // for non-[p]react\n this.customContentInfo.render(\n this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal,\n )\n }\n }\n}\n\nexport interface MountHookProps<ContentArg> {\n hookProps: ContentArg\n didMount: DidMountHandler<MountArg<ContentArg>>\n willUnmount: WillUnmountHandler<MountArg<ContentArg>>\n children: (rootElRef: Ref<any>) => ComponentChildren\n elRef?: Ref<any> // maybe get rid of once we have better API for caller to combine refs\n}\n\nexport class MountHook<ContentArg> extends BaseComponent<MountHookProps<ContentArg>> {\n rootEl: HTMLElement\n\n render() {\n return this.props.children(this.handleRootEl)\n }\n\n componentDidMount() {\n let callback = this.props.didMount\n\n if (callback) {\n callback({ ...this.props.hookProps, el: this.rootEl })\n }\n }\n\n componentWillUnmount() {\n let callback = this.props.willUnmount\n\n if (callback) {\n callback({ ...this.props.hookProps, el: this.rootEl })\n }\n }\n\n private handleRootEl = (rootEl: HTMLElement) => {\n this.rootEl = rootEl\n\n if (this.props.elRef) {\n setRef(this.props.elRef, rootEl)\n }\n }\n}\n\nexport function buildClassNameNormalizer<HookProps>() { // TODO: general deep-memoizer?\n let currentGenerator: ClassNamesGenerator<HookProps>\n let currentHookProps: HookProps\n let currentClassNames: string[] = []\n\n return (generator: ClassNamesGenerator<HookProps>, hookProps: HookProps) => {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator\n currentHookProps = hookProps\n currentClassNames = normalizeClassNames(generator, hookProps)\n }\n\n return currentClassNames\n }\n}\n\nexport type ClassNamesGenerator<HookProps> = ClassNamesInput | ((hookProps: HookProps) => ClassNamesInput)\n\nfunction normalizeClassNames<HookProps>(classNames: ClassNamesGenerator<HookProps>, hookProps: HookProps): string[] {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps)\n }\n\n return parseClassNames(classNames)\n}\n\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement) // give the function the vdom-creation func\n }\n return input\n}\n","import { ViewSpec } from '../structs/view-spec'\nimport { MountHook, buildClassNameNormalizer, MountArg } from './render-hook'\nimport { ComponentChildren, createElement, Ref } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { ViewApi } from '../ViewApi'\n\nexport interface ViewRootProps {\n viewSpec: ViewSpec\n children: (rootElRef: Ref<any>, classNames: string[]) => ComponentChildren\n elRef?: Ref<any>\n}\n\nexport interface ViewContentArg {\n view: ViewApi\n}\n\nexport type ViewMountArg = MountArg<ViewContentArg>\n\nexport class ViewRoot extends BaseComponent<ViewRootProps> {\n normalizeClassNames = buildClassNameNormalizer<ViewContentArg>()\n\n render() {\n let { props, context } = this\n let { options } = context\n let hookProps: ViewContentArg = { view: context.viewApi }\n let customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps)\n\n return (\n <MountHook\n hookProps={hookProps}\n didMount={options.viewDidMount}\n willUnmount={options.viewWillUnmount}\n elRef={props.elRef}\n >\n {(rootElRef) => props.children(\n rootElRef,\n [`fc-${props.viewSpec.type}-view`, 'fc-view'].concat(customClassNames),\n )}\n </MountHook>\n )\n }\n}\n","import { ViewProps } from '../View'\nimport { mapHash } from '../util/object'\nimport { ComponentType, Component, createElement } from '../vdom'\nimport { ViewRoot } from '../common/ViewRoot'\nimport { RenderHook, MountArg } from '../common/render-hook'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { ViewOptions } from '../options'\nimport { Duration } from '../datelib/duration'\n\n/*\nA view-config represents information for either:\nA) creating a new instantiatable view class. in which case, supplied a class/type in addition to options, OR\nB) options to customize an existing view, in which case only provides options.\n*/\n\nexport type ViewComponent = Component<ViewProps> // an instance\nexport type ViewComponentType = ComponentType<ViewProps>\n\nexport type ViewConfigInput = ViewComponentType | ViewOptions\nexport type ViewConfigInputHash = { [viewType: string]: ViewConfigInput }\n\nexport interface ViewConfig {\n superType: string\n component: ViewComponentType | null\n rawOptions: ViewOptions\n}\n\nexport type ViewConfigHash = { [viewType: string]: ViewConfig }\n\nexport function parseViewConfigs(inputs: ViewConfigInputHash): ViewConfigHash {\n return mapHash(inputs, parseViewConfig)\n}\n\nfunction parseViewConfig(input: ViewConfigInput): ViewConfig {\n let rawOptions: ViewOptions = typeof input === 'function' ?\n { component: input } :\n input\n let { component } = rawOptions\n\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions)\n // TODO: remove content/classNames/didMount/etc from options?\n }\n\n return {\n superType: rawOptions.type as any,\n component: component as any,\n rawOptions, // includes type and component too :(\n }\n}\n\nexport interface SpecificViewContentArg extends ViewProps {\n nextDayThreshold: Duration\n}\n\nexport type SpecificViewMountArg = MountArg<SpecificViewContentArg>\n\nfunction createViewHookComponent(options: ViewOptions) {\n return (viewProps: ViewProps) => (\n <ViewContextType.Consumer>\n {(context: ViewContext) => (\n <ViewRoot viewSpec={context.viewSpec}>\n {(viewElRef, viewClassNames) => {\n let hookProps: SpecificViewContentArg = {\n ...viewProps,\n nextDayThreshold: context.options.nextDayThreshold,\n }\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.classNames as any}\n content={options.content as any}\n didMount={options.didMount as any}\n willUnmount={options.willUnmount as any}\n elRef={viewElRef}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <div className={viewClassNames.concat(customClassNames).join(' ')} ref={rootElRef}>\n {innerContent}\n </div>\n )}\n </RenderHook>\n )\n }}\n </ViewRoot>\n )}\n </ViewContextType.Consumer>\n )\n}\n","import { ViewDef, compileViewDefs } from './view-def'\nimport { Duration, createDuration, greatestDurationDenominator, DurationInput } from '../datelib/duration'\nimport { mapHash } from '../util/object'\nimport { ViewOptions, CalendarOptions, BASE_OPTION_DEFAULTS } from '../options'\nimport { ViewConfigInputHash, parseViewConfigs, ViewConfigHash, ViewComponentType } from './view-config'\n\n/*\nRepresents everything needed to instantiate a new view instance,\nincluding options that have been compiled from view-specific and calendar-wide options,\nas well as duration information.\n\nOverall flow:\nViewConfig -> ViewDef -> ViewSpec\n*/\nexport interface ViewSpec {\n type: string\n component: ViewComponentType\n duration: Duration\n durationUnit: string\n singleUnit: string\n optionDefaults: ViewOptions\n optionOverrides: ViewOptions\n buttonTextOverride: string\n buttonTextDefault: string\n buttonTitleOverride: string | ((...args: any[]) => string)\n buttonTitleDefault: string | ((...args: any[]) => string)\n}\n\nexport type ViewSpecHash = { [viewType: string]: ViewSpec }\n\nexport function buildViewSpecs(\n defaultInputs: ViewConfigInputHash,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n localeDefaults,\n): ViewSpecHash {\n let defaultConfigs = parseViewConfigs(defaultInputs)\n let overrideConfigs = parseViewConfigs(optionOverrides.views)\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs)\n\n return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults))\n}\n\nfunction buildViewSpec(\n viewDef: ViewDef,\n overrideConfigs: ViewConfigHash,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n localeDefaults,\n): ViewSpec {\n let durationInput =\n viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration\n\n let duration = null\n let durationUnit = ''\n let singleUnit = ''\n let singleUnitOverrides: ViewOptions = {}\n\n if (durationInput) {\n duration = createDurationCached(durationInput)\n\n if (duration) { // valid?\n let denom = greatestDurationDenominator(duration)\n durationUnit = denom.unit\n\n if (denom.value === 1) {\n singleUnit = durationUnit\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {}\n }\n }\n }\n\n let queryButtonText = (optionsSubset) => {\n let buttonTextMap = optionsSubset.buttonText || {}\n let buttonTextKey = viewDef.defaults.buttonTextKey as string\n\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey]\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type]\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit]\n }\n return null\n }\n\n let queryButtonTitle = (optionsSubset) => { // TODO: more DRY with queryButtonText\n let buttonHints = optionsSubset.buttonHints || {}\n let buttonKey = viewDef.defaults.buttonTextKey as string // use same key as text\n\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey]\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type]\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit]\n }\n return null\n }\n\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: { ...singleUnitOverrides, ...viewDef.overrides },\n\n buttonTextOverride:\n queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText, // `buttonText` for view-specific options is a string\n buttonTextDefault:\n queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type, // fall back to given view name\n\n // not DRY\n buttonTitleOverride:\n queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault:\n queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n }\n}\n\n// hack to get memoization working\n\nlet durationInputMap: { [json: string]: Duration } = {}\n\nfunction createDurationCached(durationInput: DurationInput) {\n let json = JSON.stringify(durationInput)\n let res = durationInputMap[json]\n\n if (res === undefined) {\n res = createDuration(durationInput)\n durationInputMap[json] = res\n }\n\n return res\n}\n","import { DateMarker, startOfDay, addDays } from './datelib/marker'\nimport { Duration, createDuration, asRoughDays, asRoughMs, greatestDurationDenominator } from './datelib/duration'\nimport {\n DateRange,\n OpenDateRange,\n constrainMarkerToRange,\n intersectRanges,\n rangesIntersect,\n parseRange,\n DateRangeInput,\n} from './datelib/date-range'\nimport { DateEnv, DateInput } from './datelib/env'\nimport { computeVisibleDayRange } from './util/date'\nimport { getNow } from './reducers/current-date'\nimport { CalendarApi } from './CalendarApi'\n\nexport interface DateProfile {\n currentRange: DateRange // TODO: does this include slotMinTime/slotMaxTime?\n currentRangeUnit: string\n isRangeAllDay: boolean\n validRange: OpenDateRange\n activeRange: DateRange | null\n renderRange: DateRange\n slotMinTime: Duration\n slotMaxTime: Duration\n isValid: boolean\n dateIncrement: Duration\n}\n\nexport interface DateProfileGeneratorProps extends DateProfileOptions {\n dateProfileGeneratorClass: DateProfileGeneratorClass // not used by DateProfileGenerator itself\n duration: Duration\n durationUnit: string\n usesMinMaxTime: boolean\n dateEnv: DateEnv\n calendarApi: CalendarApi\n}\n\nexport interface DateProfileOptions {\n slotMinTime: Duration\n slotMaxTime: Duration\n showNonCurrentDates?: boolean\n dayCount?: number\n dateAlignment?: string\n dateIncrement?: Duration\n hiddenDays?: number[]\n weekends?: boolean\n nowInput?: DateInput | (() => DateInput)\n validRangeInput?: DateRangeInput | ((this: CalendarApi, nowDate: Date) => DateRangeInput)\n visibleRangeInput?: DateRangeInput | ((this: CalendarApi, nowDate: Date) => DateRangeInput)\n monthMode?: boolean\n fixedWeekCount?: boolean\n}\n\nexport type DateProfileGeneratorClass = {\n new(props: DateProfileGeneratorProps): DateProfileGenerator\n}\n\nexport class DateProfileGenerator { // only publicly used for isHiddenDay :(\n nowDate: DateMarker\n\n isHiddenDayHash: boolean[]\n\n constructor(protected props: DateProfileGeneratorProps) {\n this.nowDate = getNow(props.nowInput, props.dateEnv)\n this.initHiddenDays()\n }\n\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n buildPrev(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile {\n let { dateEnv } = this.props\n\n let prevDate = dateEnv.subtract(\n dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement,\n )\n\n return this.build(prevDate, -1, forceToValid)\n }\n\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n buildNext(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile {\n let { dateEnv } = this.props\n\n let nextDate = dateEnv.add(\n dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement,\n )\n\n return this.build(nextDate, 1, forceToValid)\n }\n\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n build(currentDate: DateMarker, direction?, forceToValid = true): DateProfile {\n let { props } = this\n let validRange: DateRange\n let currentInfo\n let isRangeAllDay\n let renderRange: DateRange\n let activeRange: DateRange\n let isValid\n\n validRange = this.buildValidRange()\n validRange = this.trimHiddenDays(validRange)\n\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange)\n }\n\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction)\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit)\n renderRange = this.buildRenderRange(\n this.trimHiddenDays(currentInfo.range),\n currentInfo.unit,\n isRangeAllDay,\n )\n renderRange = this.trimHiddenDays(renderRange)\n activeRange = renderRange\n\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range)\n }\n\n activeRange = this.adjustActiveRange(activeRange)\n activeRange = intersectRanges(activeRange, validRange) // might return null\n\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange)\n\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange,\n\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n\n isRangeAllDay,\n\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange,\n\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange,\n\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n\n isValid,\n\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration),\n // pass a fallback (might be null) ^\n }\n }\n\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n buildValidRange(): OpenDateRange {\n let input = this.props.validRangeInput\n let simpleInput = typeof input === 'function'\n ? input.call(this.props.calendarApi, this.nowDate)\n : input\n\n return this.refineRange(simpleInput) ||\n { start: null, end: null } // completely open-ended\n }\n\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n buildCurrentRangeInfo(date: DateMarker, direction) {\n let { props } = this\n let duration = null\n let unit = null\n let range = null\n let dayCount\n\n if (props.duration) {\n duration = props.duration\n unit = props.durationUnit\n range = this.buildRangeFromDuration(date, direction, duration, unit)\n } else if ((dayCount = this.props.dayCount)) {\n unit = 'day'\n range = this.buildRangeFromDayCount(date, direction, dayCount)\n } else if ((range = this.buildCustomVisibleRange(date))) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit\n } else {\n duration = this.getFallbackDuration()\n unit = greatestDurationDenominator(duration).unit\n range = this.buildRangeFromDuration(date, direction, duration, unit)\n }\n\n return { duration, unit, range }\n }\n\n getFallbackDuration(): Duration {\n return createDuration({ day: 1 })\n }\n\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n adjustActiveRange(range: DateRange) {\n let { dateEnv, usesMinMaxTime, slotMinTime, slotMaxTime } = this.props\n let { start, end } = range\n\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start) // necessary?\n start = dateEnv.add(start, slotMinTime)\n }\n\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end) // necessary?\n end = addDays(end, -1)\n end = dateEnv.add(end, slotMaxTime)\n }\n }\n\n return { start, end }\n }\n\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n buildRangeFromDuration(date: DateMarker, direction, duration: Duration, unit) {\n let { dateEnv, dateAlignment } = this.props\n let start: DateMarker\n let end: DateMarker\n let res\n\n // compute what the alignment should be\n if (!dateAlignment) {\n let { dateIncrement } = this.props\n\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit\n } else {\n dateAlignment = unit\n }\n } else {\n dateAlignment = unit\n }\n }\n\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction)\n start = startOfDay(start)\n }\n }\n\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment)\n end = dateEnv.add(start, duration)\n res = { start, end }\n }\n\n computeRes()\n\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction)\n computeRes()\n }\n\n return res\n }\n\n // Builds the \"current\" range when a dayCount is specified.\n buildRangeFromDayCount(date: DateMarker, direction, dayCount) {\n let { dateEnv, dateAlignment } = this.props\n let runningCount = 0\n let start: DateMarker = date\n let end: DateMarker\n\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment)\n }\n\n start = startOfDay(start)\n start = this.skipHiddenDays(start, direction)\n\n end = start\n do {\n end = addDays(end, 1)\n if (!this.isHiddenDay(end)) {\n runningCount += 1\n }\n } while (runningCount < dayCount)\n\n return { start, end }\n }\n\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n buildCustomVisibleRange(date: DateMarker) {\n let { props } = this\n let input = props.visibleRangeInput\n let simpleInput = typeof input === 'function'\n ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n : input\n\n let range = this.refineRange(simpleInput)\n\n if (range && (range.start == null || range.end == null)) {\n return null\n }\n\n return range\n }\n\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n buildRenderRange(currentRange: DateRange, currentRangeUnit, isRangeAllDay) {\n return currentRange\n }\n\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n buildDateIncrement(fallback): Duration {\n let { dateIncrement } = this.props\n let customAlignment\n\n if (dateIncrement) {\n return dateIncrement\n }\n\n if ((customAlignment = this.props.dateAlignment)) {\n return createDuration(1, customAlignment)\n }\n\n if (fallback) {\n return fallback\n }\n\n return createDuration({ days: 1 })\n }\n\n refineRange(rangeInput: DateRangeInput | undefined): DateRange | null {\n if (rangeInput) {\n let range = parseRange(rangeInput, this.props.dateEnv)\n\n if (range) {\n range = computeVisibleDayRange(range)\n }\n\n return range\n }\n\n return null\n }\n\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n\n // Initializes internal variables related to calculating hidden days-of-week\n initHiddenDays() {\n let hiddenDays = this.props.hiddenDays || [] // array of day-of-week indices that are hidden\n let isHiddenDayHash = [] // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n let dayCnt = 0\n let i\n\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6) // 0=sunday, 6=saturday\n }\n\n for (i = 0; i < 7; i += 1) {\n if (\n !(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)\n ) {\n dayCnt += 1\n }\n }\n\n if (!dayCnt) {\n throw new Error('invalid hiddenDays') // all days were hidden? bad.\n }\n\n this.isHiddenDayHash = isHiddenDayHash\n }\n\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n trimHiddenDays(range: DateRange): DateRange | null {\n let { start, end } = range\n\n if (start) {\n start = this.skipHiddenDays(start)\n }\n\n if (end) {\n end = this.skipHiddenDays(end, -1, true)\n }\n\n if (start == null || end == null || start < end) {\n return { start, end }\n }\n\n return null\n }\n\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n isHiddenDay(day) {\n if (day instanceof Date) {\n day = day.getUTCDay()\n }\n return this.isHiddenDayHash[day]\n }\n\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n skipHiddenDays(date: DateMarker, inc = 1, isExclusive = false) {\n while (\n this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]\n ) {\n date = addDays(date, inc)\n }\n return date\n }\n}\n","import { EventSource, EventSourceHash } from '../structs/event-source'\nimport { parseEventSource, buildEventSourceRefiners } from '../structs/event-source-parse'\nimport { arrayToHash, filterHash } from '../util/object'\nimport { DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Action } from './Action'\nimport { guid } from '../util/misc'\nimport { CalendarContext } from '../CalendarContext'\nimport { CalendarOptions } from '../options'\n\nexport function initEventSources(calendarOptions, dateProfile: DateProfile, context: CalendarContext) {\n let activeRange = dateProfile ? dateProfile.activeRange : null\n\n return addSources(\n {},\n parseInitialSources(calendarOptions, context),\n activeRange,\n context,\n )\n}\n\nexport function reduceEventSources(\n eventSources: EventSourceHash,\n action: Action,\n dateProfile: DateProfile,\n context: CalendarContext,\n): EventSourceHash {\n let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context)\n\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId)\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context)\n }\n return eventSources\n\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(\n eventSources,\n (action as any).sourceIds ? // why no type?\n arrayToHash((action as any).sourceIds) :\n excludeStaticSources(eventSources, context),\n activeRange,\n action.isRefetch || false,\n context,\n )\n\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange)\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {}\n\n default:\n return eventSources\n }\n}\n\nexport function reduceEventSourcesNewTimeZone(eventSources: EventSourceHash, dateProfile: DateProfile, context: CalendarContext) {\n let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n return fetchSourcesByIds(\n eventSources,\n excludeStaticSources(eventSources, context),\n activeRange,\n true,\n context,\n )\n}\n\nexport function computeEventSourcesLoading(eventSources: EventSourceHash): boolean {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true\n }\n }\n\n return false\n}\n\nfunction addSources(\n eventSourceHash: EventSourceHash,\n sources: EventSource<any>[],\n fetchRange: DateRange | null,\n context: CalendarContext,\n): EventSourceHash {\n let hash: EventSourceHash = {}\n\n for (let source of sources) {\n hash[source.sourceId] = source\n }\n\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context)\n }\n\n return { ...eventSourceHash, ...hash }\n}\n\nfunction removeSource(eventSourceHash: EventSourceHash, sourceId: string): EventSourceHash {\n return filterHash(eventSourceHash, (eventSource: EventSource<any>) => eventSource.sourceId !== sourceId)\n}\n\nfunction fetchDirtySources(sourceHash: EventSourceHash, fetchRange: DateRange, context: CalendarContext): EventSourceHash {\n return fetchSourcesByIds(\n sourceHash,\n filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)),\n fetchRange,\n false,\n context,\n )\n}\n\nfunction isSourceDirty(eventSource: EventSource<any>, fetchRange: DateRange, context: CalendarContext) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end\n}\n\nfunction fetchSourcesByIds(\n prevSources: EventSourceHash,\n sourceIdHash: { [sourceId: string]: any },\n fetchRange: DateRange,\n isRefetch: boolean,\n context: CalendarContext,\n): EventSourceHash {\n let nextSources: EventSourceHash = {}\n\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId]\n\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context)\n } else {\n nextSources[sourceId] = source\n }\n }\n\n return nextSources\n}\n\nfunction fetchSource(eventSource: EventSource<any>, fetchRange: DateRange, isRefetch: boolean, context: CalendarContext) {\n let { options, calendarApi } = context\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId]\n let fetchId = guid()\n\n sourceDef.fetch(\n {\n eventSource,\n range: fetchRange,\n isRefetch,\n context,\n },\n (res) => { // success callback\n let { rawEvents } = res\n\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents\n }\n\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents,\n })\n },\n (error) => { // failure callback\n console.warn(error.message, error)\n\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error)\n }\n\n if (eventSource.failure) {\n eventSource.failure(error)\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error,\n })\n },\n )\n\n return {\n ...eventSource,\n isFetching: true,\n latestFetchId: fetchId,\n }\n}\n\nfunction receiveResponse(sourceHash: EventSourceHash, sourceId: string, fetchId: string, fetchRange: DateRange) {\n let eventSource: EventSource<any> = sourceHash[sourceId]\n\n if (\n eventSource && // not already removed\n fetchId === eventSource.latestFetchId\n ) {\n return {\n ...sourceHash,\n [sourceId]: {\n ...eventSource,\n isFetching: false,\n fetchRange, // also serves as a marker that at least one fetch has completed\n },\n }\n }\n\n return sourceHash\n}\n\nfunction excludeStaticSources(eventSources: EventSourceHash, context: CalendarContext): EventSourceHash {\n return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context))\n}\n\nfunction parseInitialSources(rawOptions: CalendarOptions, context: CalendarContext) {\n let refiners = buildEventSourceRefiners(context)\n let rawSources = [].concat(rawOptions.eventSources || [])\n let sources = [] // parsed\n\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents)\n }\n\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events)\n }\n\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners)\n if (source) {\n sources.push(source)\n }\n }\n\n return sources\n}\n\nfunction doesSourceNeedRange(eventSource: EventSource<any>, context: CalendarContext) {\n let defs = context.pluginHooks.eventSourceDefs\n\n return !defs[eventSource.sourceDefId].ignoreRange\n}\n","import { filterHash, mapHash } from '../util/object'\nimport { EventDef } from '../structs/event-def'\nimport { EventInstance, EventInstanceHash } from '../structs/event-instance'\nimport { EventInput } from '../structs/event-parse'\nimport {\n EventStore,\n mergeEventStores,\n createEmptyEventStore,\n filterEventStoreDefs,\n excludeSubEventStore,\n parseEvents,\n} from '../structs/event-store'\nimport { Action } from './Action'\nimport { EventSourceHash, EventSource } from '../structs/event-source'\nimport { DateRange } from '../datelib/date-range'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DateEnv } from '../datelib/env'\nimport { CalendarContext } from '../CalendarContext'\nimport { expandRecurring } from '../structs/recurring-event'\n\nexport function reduceEventStore(\n eventStore: EventStore,\n action: Action,\n eventSources: EventSourceHash,\n dateProfile: DateProfile,\n context: CalendarContext,\n): EventStore {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(\n eventStore,\n eventSources[action.sourceId],\n action.fetchId,\n action.fetchRange,\n action.rawEvents,\n context,\n )\n\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(\n eventStore,\n action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null,\n context,\n )\n\n case 'RESET_EVENTS':\n return action.eventStore\n\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore)\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context)\n }\n return eventStore\n\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore)\n\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId)\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, (eventDef: EventDef) => (\n !eventDef.sourceId // only keep events with no source id\n ))\n\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore()\n\n default:\n return eventStore\n }\n}\n\nfunction receiveRawEvents(\n eventStore: EventStore,\n eventSource: EventSource<any>,\n fetchId: string,\n fetchRange: DateRange | null,\n rawEvents: EventInput[],\n context: CalendarContext,\n): EventStore {\n if (\n eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n let subset = parseEvents(\n transformRawEvents(rawEvents, eventSource, context),\n eventSource,\n context,\n )\n\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context)\n }\n\n return mergeEventStores(\n excludeEventsBySourceId(eventStore, eventSource.sourceId),\n subset,\n )\n }\n\n return eventStore\n}\n\nfunction transformRawEvents(rawEvents, eventSource: EventSource<any>, context: CalendarContext) {\n let calEachTransform = context.options.eventDataTransform\n let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null\n\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform)\n }\n\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform)\n }\n\n return rawEvents\n}\n\nfunction transformEachRawEvent(rawEvents, func) {\n let refinedEvents\n\n if (!func) {\n refinedEvents = rawEvents\n } else {\n refinedEvents = []\n\n for (let rawEvent of rawEvents) {\n let refinedEvent = func(rawEvent)\n\n if (refinedEvent) {\n refinedEvents.push(refinedEvent)\n } else if (refinedEvent == null) {\n refinedEvents.push(rawEvent)\n } // if a different falsy value, do nothing\n }\n }\n\n return refinedEvents\n}\n\nfunction addEvent(eventStore: EventStore, subset: EventStore, expandRange: DateRange | null, context: CalendarContext): EventStore {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context)\n }\n\n return mergeEventStores(eventStore, subset)\n}\n\nexport function rezoneEventStoreDates(eventStore: EventStore, oldDateEnv: DateEnv, newDateEnv: DateEnv): EventStore {\n let { defs } = eventStore\n\n let instances = mapHash(eventStore.instances, (instance: EventInstance): EventInstance => {\n let def = defs[instance.defId]\n\n if (def.allDay || def.recurringDef) {\n return instance // isn't dependent on timezone\n }\n return {\n ...instance,\n range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n },\n forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo,\n forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo,\n }\n })\n\n return { defs, instances }\n}\n\nfunction excludeEventsBySourceId(eventStore: EventStore, sourceId: string) {\n return filterEventStoreDefs(eventStore, (eventDef: EventDef) => eventDef.sourceId !== sourceId)\n}\n\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nexport function excludeInstances(eventStore: EventStore, removals: EventInstanceHash): EventStore {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, (instance: EventInstance) => !removals[instance.instanceId]),\n }\n}\n","import { DateSpan } from '../structs/date-span'\nimport { Action } from './Action'\n\nexport function reduceDateSelection(currentSelection: DateSpan | null, action: Action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null\n\n case 'SELECT_DATES':\n return action.selection\n\n default:\n return currentSelection\n }\n}\n","import { Action } from './Action'\n\nexport function reduceSelectedEvent(currentInstanceId: string, action: Action): string {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return ''\n\n case 'SELECT_EVENT':\n return action.eventInstanceId\n\n default:\n return currentInstanceId\n }\n}\n","import { Action } from './Action'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\n\nexport function reduceEventDrag(currentDrag: EventInteractionState | null, action: Action): EventInteractionState | null {\n let newDrag: EventInteractionState\n\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null\n\n case 'SET_EVENT_DRAG':\n newDrag = action.state\n\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n }\n\n default:\n return currentDrag\n }\n}\n","import { EventInteractionState } from '../interactions/event-interaction-state'\nimport { Action } from './Action'\n\nexport function reduceEventResize(currentResize: EventInteractionState | null, action: Action): EventInteractionState | null {\n let newResize: EventInteractionState\n\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null\n\n case 'SET_EVENT_RESIZE':\n newResize = action.state\n\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n }\n\n default:\n return currentResize\n }\n}\n","import { ViewSpec, ViewSpecHash } from './structs/view-spec'\nimport { Theme } from './theme/Theme'\nimport { CalendarApi } from './CalendarApi'\nimport { CalendarOptionsRefined, CalendarOptions } from './options'\nimport { ToolbarInput, ToolbarModel, ToolbarWidget, CustomButtonInput } from './toolbar-struct'\nimport { formatWithOrdinals } from './util/misc'\n\nexport function parseToolbars(\n calendarOptions: CalendarOptionsRefined,\n calendarOptionOverrides: CalendarOptions,\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarApi,\n) {\n let header = calendarOptions.headerToolbar ? parseToolbar(\n calendarOptions.headerToolbar,\n calendarOptions,\n calendarOptionOverrides,\n theme,\n viewSpecs,\n calendarApi,\n ) : null\n let footer = calendarOptions.footerToolbar ? parseToolbar(\n calendarOptions.footerToolbar,\n calendarOptions,\n calendarOptionOverrides,\n theme,\n viewSpecs,\n calendarApi,\n ) : null\n\n return { header, footer }\n}\n\nfunction parseToolbar(\n sectionStrHash: ToolbarInput,\n calendarOptions: CalendarOptionsRefined,\n calendarOptionOverrides: CalendarOptions,\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarApi,\n) : ToolbarModel {\n let sectionWidgets: { [sectionName: string]: ToolbarWidget[][] } = {}\n let viewsWithButtons: string[] = []\n let hasTitle = false\n\n for (let sectionName in sectionStrHash) {\n let sectionStr = sectionStrHash[sectionName]\n let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi)\n sectionWidgets[sectionName] = sectionRes.widgets\n viewsWithButtons.push(...sectionRes.viewsWithButtons)\n hasTitle = hasTitle || sectionRes.hasTitle\n }\n\n return { sectionWidgets, viewsWithButtons, hasTitle }\n}\n\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(\n sectionStr: string,\n calendarOptions: CalendarOptionsRefined, // defaults+overrides, then refined\n calendarOptionOverrides: CalendarOptions, // overrides only!, unrefined :(\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarApi,\n): { widgets: ToolbarWidget[][], viewsWithButtons: string[], hasTitle: boolean } {\n let isRtl = calendarOptions.direction === 'rtl'\n let calendarCustomButtons = calendarOptions.customButtons || {}\n let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {}\n let calendarButtonText = calendarOptions.buttonText || {}\n let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {}\n let calendarButtonHints = calendarOptions.buttonHints || {}\n let sectionSubstrs = sectionStr ? sectionStr.split(' ') : []\n let viewsWithButtons: string[] = []\n let hasTitle = false\n\n let widgets = sectionSubstrs.map(\n (buttonGroupStr): ToolbarWidget[] => (\n buttonGroupStr.split(',').map((buttonName): ToolbarWidget => {\n if (buttonName === 'title') {\n hasTitle = true\n return { buttonName }\n }\n\n let customButtonProps: CustomButtonInput\n let viewSpec: ViewSpec\n let buttonClick\n let buttonIcon // only one of these will be set\n let buttonText // \"\n let buttonHint: string | ((navUnit: string) => string)\n // ^ for the title=\"\" attribute, for accessibility\n\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = (ev: UIEvent) => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target) // TODO: use Calendar this context?\n }\n };\n\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text)\n\n buttonHint = customButtonProps.hint || customButtonProps.text\n } else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName)\n\n buttonClick = () => {\n calendarApi.changeView(buttonName)\n };\n\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault)\n\n let textFallback =\n viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault\n\n buttonHint = formatWithOrdinals(\n viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint,\n [textFallback, buttonName], // view-name = buttonName\n textFallback,\n )\n } else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]()\n };\n\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]) // everything else is considered default\n\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next'\n buttonHint = formatWithOrdinals(\n calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext],\n [\n calendarButtonText.year || 'year', // localize unit\n 'year',\n ],\n calendarButtonText[buttonName],\n )\n } else {\n buttonHint = (navUnit: string) => formatWithOrdinals(\n calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName],\n [\n calendarButtonText[navUnit] || navUnit, // localized unit\n navUnit,\n ],\n calendarButtonText[buttonName],\n )\n }\n }\n\n return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint }\n })\n ),\n )\n\n return { widgets, viewsWithButtons, hasTitle }\n}\n","import { Dictionary } from '../options'\n\nexport function requestJson(method: string, url: string, params: Dictionary, successCallback, failureCallback) {\n method = method.toUpperCase()\n\n let body = null\n\n if (method === 'GET') {\n url = injectQueryStringParams(url, params)\n } else {\n body = encodeParams(params)\n }\n\n let xhr = new XMLHttpRequest()\n xhr.open(method, url, true)\n\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n }\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 400) {\n let parsed = false\n let res\n\n try {\n res = JSON.parse(xhr.responseText)\n parsed = true\n } catch (err) {\n // will handle parsed=false\n }\n\n if (parsed) {\n successCallback(res, xhr)\n } else {\n failureCallback('Failure parsing JSON', xhr)\n }\n } else {\n failureCallback('Request failed', xhr)\n }\n }\n\n xhr.onerror = () => {\n failureCallback('Request failed', xhr)\n }\n\n xhr.send(body)\n}\n\nfunction injectQueryStringParams(url: string, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params)\n}\n\nfunction encodeParams(params) {\n let parts = []\n\n for (let key in params) {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)\n }\n\n return parts.join('&')\n}\n","import { CalendarContext } from '@fullcalendar/common'\n\nexport const optionChangeHandlers = {\n resources: handleResources,\n}\n\nfunction handleResources(newSourceInput, context: CalendarContext) {\n let oldSourceInput = context.getCurrentData().resourceSource._raw\n\n if (oldSourceInput !== newSourceInput) {\n context.dispatch({\n type: 'RESET_RESOURCE_SOURCE',\n resourceSourceInput: newSourceInput,\n })\n }\n}\n","import { PluginDef } from './plugin-system-struct'\nimport { createPlugin } from './plugin-system'\nimport { arrayEventSourcePlugin } from './event-sources/array-event-source'\nimport { funcEventSourcePlugin } from './event-sources/func-event-source'\nimport { jsonFeedEventSourcePlugin } from './event-sources/json-feed-event-source'\nimport { simpleRecurringEventsPlugin } from './structs/recurring-event-simple'\nimport { changeHandlerPlugin } from './option-change-handlers'\nimport { handleDateProfile } from './dates-set'\nimport { handleEventStore } from './event-crud'\nimport { isArraysEqual } from './util/array'\nimport { removeElement } from './util/dom-manip'\nimport { computeEventSourcesLoading } from './reducers/eventSources'\nimport { CalendarDataManagerState } from './reducers/data-types'\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nexport const globalPlugins: PluginDef[] = [ // TODO: make a const?\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({ // misc...\n isLoadingFuncs: [\n (state: CalendarDataManagerState) => computeEventSourcesLoading(state.eventSources),\n ],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer,\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n]\n\nfunction buildHtmlRenderer() {\n let currentEl: HTMLElement | null = null\n let currentHtml: string = ''\n\n function render(el: HTMLElement, html: string) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html\n }\n currentEl = el\n currentHtml = html\n }\n\n function destroy() {\n currentEl.innerHTML = ''\n currentEl = null\n currentHtml = ''\n }\n\n return { render, destroy }\n}\n\nfunction buildDomNodeRenderer() {\n let currentEl: HTMLElement | null = null\n let currentDomNodes: Node[] = []\n\n function render(el: HTMLElement, domNodes: Node[] | NodeList) {\n let newDomNodes = Array.prototype.slice.call(domNodes)\n\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (let newNode of newDomNodes) {\n el.appendChild(newNode)\n }\n destroy()\n }\n\n currentEl = el\n currentDomNodes = newDomNodes\n }\n\n function destroy() {\n currentDomNodes.forEach(removeElement)\n currentDomNodes = []\n currentEl = null\n }\n\n return { render, destroy }\n}\n","import { createPlugin } from '../plugin-system'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { EventInput } from '../structs/event-parse'\n\nlet eventSourceDef: EventSourceDef<EventInput[]> = {\n ignoreRange: true,\n\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events\n }\n return null\n },\n\n fetch(arg, success) {\n success({\n rawEvents: arg.eventSource.meta,\n })\n },\n}\n\nexport const arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef],\n})\n","import { unpromisify } from '../util/promise'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { EventSourceError } from '../structs/event-source'\nimport { EventInput } from '../structs/event-parse'\nimport { createPlugin } from '../plugin-system'\nimport { buildRangeApiWithTimeZone } from '../structs/date-span'\n\nexport type EventSourceFunc = (\n arg: {\n start: Date\n end: Date\n startStr: string\n endStr: string\n timeZone: string\n },\n successCallback: (events: EventInput[]) => void,\n failureCallback: (error: EventSourceError) => void\n) => (void | PromiseLike<EventInput[]>)\n\nlet eventSourceDef: EventSourceDef<EventSourceFunc> = {\n\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events\n }\n return null\n },\n\n fetch(arg, success, failure) {\n let { dateEnv } = arg.context\n let func = arg.eventSource.meta\n\n unpromisify(\n func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)),\n (rawEvents) => { // success\n success({ rawEvents }) // needs an object response\n },\n failure, // send errorObj directly to failure callback\n )\n },\n\n}\n\nexport const funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef],\n})\n","import { __assign } from 'tslib'\nimport { requestJson } from '../util/requestJson'\nimport { CalendarContext } from '../CalendarContext'\nimport { EventSourceDef } from '../structs/event-source-def'\nimport { DateRange } from '../datelib/date-range'\nimport { createPlugin } from '../plugin-system'\nimport { JSON_FEED_EVENT_SOURCE_REFINERS } from './json-feed-event-source-refiners'\n\ninterface JsonFeedMeta {\n url: string\n format: 'json' // for EventSourceApi\n method: string\n extraParams?: any\n startParam?: string\n endParam?: string\n timeZoneParam?: string\n}\n\nlet eventSourceDef: EventSourceDef<JsonFeedMeta> = {\n\n parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n }\n }\n return null\n },\n\n fetch(arg, success, failure) {\n let { meta } = arg.eventSource\n let requestParams = buildRequestParams(meta, arg.range, arg.context)\n\n requestJson(\n meta.method, meta.url, requestParams,\n (rawEvents, xhr) => {\n success({ rawEvents, xhr })\n },\n (errorMessage, xhr) => {\n failure({ message: errorMessage, xhr })\n },\n )\n },\n\n}\n\nexport const jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n})\n\nfunction buildRequestParams(meta: JsonFeedMeta, range: DateRange, context: CalendarContext) {\n let { dateEnv, options } = context\n let startParam\n let endParam\n let timeZoneParam\n let customRequestParams\n let params = {}\n\n startParam = meta.startParam\n if (startParam == null) {\n startParam = options.startParam\n }\n\n endParam = meta.endParam\n if (endParam == null) {\n endParam = options.endParam\n }\n\n timeZoneParam = meta.timeZoneParam\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam\n }\n\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams()\n } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {}\n }\n\n __assign(params, customRequestParams)\n\n params[startParam] = dateEnv.formatIso(range.start)\n params[endParam] = dateEnv.formatIso(range.end)\n\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone\n }\n\n return params\n}\n","import { identity, Identity, Dictionary } from '../options'\n\nexport const JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity as Identity<Dictionary | (() => Dictionary)>,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n}\n","import { startOfDay, addDays, DateMarker } from '../datelib/marker'\nimport { Duration, subtractDurations } from '../datelib/duration'\nimport { arrayToHash } from '../util/object'\nimport { RecurringType } from './recurring-event'\nimport { EventRefined } from './event-parse'\nimport { DateRange, intersectRanges } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { createPlugin } from '../plugin-system'\nimport { SIMPLE_RECURRING_REFINERS } from './recurring-event-simple-refiners'\nimport './recurring-event-simple-declare'\n\n/*\nAn implementation of recurring events that only supports every-day or weekly recurrences.\n*/\n\ninterface SimpleRecurringData {\n daysOfWeek: number[] | null\n startTime: Duration | null\n endTime: Duration | null\n startRecur: DateMarker | null\n endRecur: DateMarker | null\n}\n\nlet recurring: RecurringType<SimpleRecurringData> = {\n\n parse(refined: EventRefined, dateEnv: DateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData: SimpleRecurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n }\n\n let duration: Duration\n\n if (refined.duration) {\n duration = refined.duration\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime)\n }\n\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n }\n }\n\n return null\n },\n\n expand(typeData: SimpleRecurringData, framingRange: DateRange, dateEnv: DateEnv): DateMarker[] {\n let clippedFramingRange = intersectRanges(\n framingRange,\n { start: typeData.startRecur, end: typeData.endRecur },\n )\n\n if (clippedFramingRange) {\n return expandRanges(\n typeData.daysOfWeek,\n typeData.startTime,\n clippedFramingRange,\n dateEnv,\n )\n }\n return []\n },\n\n}\n\nexport const simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n})\n\nfunction expandRanges(\n daysOfWeek: number[] | null,\n startTime: Duration | null,\n framingRange: DateRange,\n dateEnv: DateEnv,\n): DateMarker[] {\n let dowHash: { [num: string]: true } | null = daysOfWeek ? arrayToHash(daysOfWeek) : null\n let dayMarker = startOfDay(framingRange.start)\n let endMarker = framingRange.end\n let instanceStarts: DateMarker[] = []\n\n while (dayMarker < endMarker) {\n let instanceStart\n\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime)\n } else {\n instanceStart = dayMarker\n }\n\n instanceStarts.push(instanceStart)\n }\n\n dayMarker = addDays(dayMarker, 1)\n }\n\n return instanceStarts\n}\n","import { createDuration } from '../datelib/duration'\nimport { DateInput } from '../datelib/env'\nimport { identity, Identity } from '../options'\n\nexport const SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity as Identity<number[]>,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity as Identity<DateInput>,\n endRecur: identity as Identity<DateInput>,\n}\n","import { DateProfile } from './DateProfileGenerator'\nimport { CalendarData } from './reducers/data-types'\nimport { RangeApiWithTimeZone, buildRangeApiWithTimeZone } from './structs/date-span'\nimport { ViewApi } from './ViewApi'\n\nexport type DatesSetArg = RangeApiWithTimeZone & { view: ViewApi }\n\nexport function handleDateProfile(dateProfile: DateProfile, context: CalendarData) {\n context.emitter.trigger('datesSet', {\n ...buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv),\n view: context.viewApi,\n })\n}\n","import { EventStore } from './structs/event-store'\nimport { CalendarData } from './reducers/data-types'\nimport { EventApi, buildEventApis } from './api/EventApi'\nimport { Duration } from './datelib/duration'\nimport { ViewApi } from './ViewApi'\n\nexport interface EventAddArg {\n event: EventApi\n relatedEvents: EventApi[]\n revert: () => void\n}\n\nexport interface EventChangeArg {\n oldEvent: EventApi\n event: EventApi\n relatedEvents: EventApi[]\n revert: () => void\n}\n\nexport interface EventDropArg extends EventChangeArg { // not best place. deals w/ UI\n el: HTMLElement\n delta: Duration\n jsEvent: MouseEvent\n view: ViewApi\n // and other \"transformed\" things\n}\n\nexport interface EventRemoveArg {\n event: EventApi\n relatedEvents: EventApi[]\n revert: () => void\n}\n\nexport function handleEventStore(eventStore: EventStore, context: CalendarData) {\n let { emitter } = context\n\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context))\n }\n}\n","export class DelayedRunner {\n private isRunning = false\n private isDirty = false\n private pauseDepths: { [scope: string]: number } = {}\n private timeoutId: number = 0\n\n constructor(\n private drainedOption?: () => void,\n ) {\n }\n\n request(delay?: number) {\n this.isDirty = true\n\n if (!this.isPaused()) {\n this.clearTimeout()\n\n if (delay == null) {\n this.tryDrain()\n } else {\n this.timeoutId = setTimeout( // NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this),\n delay,\n ) as unknown as number\n }\n }\n }\n\n pause(scope = '') {\n let { pauseDepths } = this\n\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1\n\n this.clearTimeout()\n }\n\n resume(scope = '', force?: boolean) {\n let { pauseDepths } = this\n\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope]\n } else {\n pauseDepths[scope] -= 1\n let depth = pauseDepths[scope]\n\n if (depth <= 0) {\n delete pauseDepths[scope]\n }\n }\n\n this.tryDrain()\n }\n }\n\n isPaused() {\n return Object.keys(this.pauseDepths).length\n }\n\n tryDrain() {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true\n\n while (this.isDirty) {\n this.isDirty = false\n this.drained() // might set isDirty to true again\n }\n\n this.isRunning = false\n }\n }\n\n clear() {\n this.clearTimeout()\n this.isDirty = false\n this.pauseDepths = {}\n }\n\n private clearTimeout() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId)\n this.timeoutId = 0\n }\n }\n\n protected drained() { // subclasses can implement\n if (this.drainedOption) {\n this.drainedOption()\n }\n }\n}\n","import { DelayedRunner } from './DelayedRunner'\n\nexport class TaskRunner<Task> { // this class USES the DelayedRunner\n private queue: Task[] = []\n\n private delayedRunner: DelayedRunner // will most likely be used WITHOUT any delay\n\n constructor(\n private runTaskOption?: (task: Task) => void,\n private drainedOption?: (completedTasks: Task[]) => void,\n ) {\n this.delayedRunner = new DelayedRunner(this.drain.bind(this))\n }\n\n request(task: Task, delay?: number) {\n this.queue.push(task)\n this.delayedRunner.request(delay)\n }\n\n pause(scope?: string) {\n this.delayedRunner.pause(scope)\n }\n\n resume(scope?: string, force?: boolean) {\n this.delayedRunner.resume(scope, force)\n }\n\n drain() {\n let { queue } = this\n\n while (queue.length) {\n let completedTasks: Task[] = []\n let task: Task\n\n while ((task = queue.shift())) {\n this.runTask(task)\n completedTasks.push(task)\n }\n\n this.drained(completedTasks)\n } // keep going, in case new tasks were added in the drained handler\n }\n\n protected runTask(task: Task) { // subclasses can implement\n if (this.runTaskOption) {\n this.runTaskOption(task)\n }\n }\n\n protected drained(completedTasks: Task[]) { // subclasses can implement\n if (this.drainedOption) {\n this.drainedOption(completedTasks)\n }\n }\n}\n","import { DateProfile } from '../DateProfileGenerator'\nimport { diffWholeDays } from '../datelib/marker'\nimport { createFormatter, FormatterInput } from '../datelib/formatting'\nimport { DateRange } from '../datelib/date-range'\nimport { DateEnv } from '../datelib/env'\nimport { BaseOptions } from '../options'\n\n// Computes what the title at the top of the calendarApi should be for this view\nexport function buildTitle(dateProfile: DateProfile, viewOptions: BaseOptions, dateEnv: DateEnv) {\n let range: DateRange\n\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange\n } else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange\n }\n\n return dateEnv.formatRange(\n range.start,\n range.end,\n createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)),\n {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n },\n )\n}\n\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile: DateProfile): FormatterInput {\n let { currentRangeUnit } = dateProfile\n\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' }\n }\n\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' } // like \"September 2014\"\n }\n\n let days = diffWholeDays(\n dateProfile.currentRange.start,\n dateProfile.currentRange.end,\n )\n\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' }\n }\n\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' }\n}\n","import { __assign } from 'tslib'\nimport { buildLocale, RawLocaleInfo, organizeRawLocales, LocaleSingularArg } from '../datelib/locale'\nimport { memoize, memoizeObjArg } from '../util/memoize'\nimport { Action } from './Action'\nimport { buildBuildPluginHooks } from '../plugin-system'\nimport { PluginHooks } from '../plugin-system-struct'\nimport { DateEnv } from '../datelib/env'\nimport { CalendarApi } from '../CalendarApi'\nimport { StandardTheme } from '../theme/StandardTheme'\nimport { EventSourceHash } from '../structs/event-source'\nimport { buildViewSpecs, ViewSpec } from '../structs/view-spec'\nimport { mapHash, isPropsEqual } from '../util/object'\nimport { DateProfileGenerator, DateProfileGeneratorProps } from '../DateProfileGenerator'\nimport { reduceViewType } from './view-type'\nimport { getInitialDate, reduceCurrentDate } from './current-date'\nimport { reduceDynamicOptionOverrides } from './options'\nimport { reduceDateProfile } from './date-profile'\nimport { reduceEventSources, initEventSources, reduceEventSourcesNewTimeZone, computeEventSourcesLoading } from './eventSources'\nimport { reduceEventStore, rezoneEventStoreDates } from './eventStore'\nimport { reduceDateSelection } from './date-selection'\nimport { reduceSelectedEvent } from './selected-event'\nimport { reduceEventDrag } from './event-drag'\nimport { reduceEventResize } from './event-resize'\nimport { Emitter } from '../common/Emitter'\nimport { EventUiHash, EventUi, createEventUi } from '../component/event-ui'\nimport { EventDefHash } from '../structs/event-def'\nimport { parseToolbars } from '../toolbar-parse'\nimport {\n CalendarOptionsRefined, CalendarOptions,\n CALENDAR_OPTION_REFINERS, COMPLEX_OPTION_COMPARATORS,\n ViewOptions, ViewOptionsRefined,\n BASE_OPTION_DEFAULTS, mergeRawOptions,\n BASE_OPTION_REFINERS, VIEW_OPTION_REFINERS,\n CalendarListeners, CALENDAR_LISTENER_REFINERS, Dictionary,\n} from '../options'\nimport { rangeContainsMarker } from '../datelib/date-range'\nimport { ViewApi } from '../ViewApi'\nimport { parseBusinessHours } from '../structs/business-hours'\nimport { globalPlugins } from '../global-plugins'\nimport { createEmptyEventStore } from '../structs/event-store'\nimport { CalendarContext } from '../CalendarContext'\nimport { CalendarDataManagerState, CalendarOptionsData, CalendarCurrentViewData, CalendarData } from './data-types'\nimport { TaskRunner } from '../util/TaskRunner'\nimport { buildTitle } from './title-formatting'\n\nexport interface CalendarDataManagerProps {\n optionOverrides: CalendarOptions\n calendarApi: CalendarApi\n onAction?: (action: Action) => void\n onData?: (data: CalendarData) => void\n}\n\nexport type ReducerFunc = ( // TODO: rename to CalendarDataInjector. move view-props-manip hook here as well?\n currentState: Dictionary | null,\n action: Action | null,\n context: CalendarContext & CalendarDataManagerState // more than just context\n) => Dictionary\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\n\nexport class CalendarDataManager {\n private computeOptionsData = memoize(this._computeOptionsData)\n private computeCurrentViewData = memoize(this._computeCurrentViewData)\n private organizeRawLocales = memoize(organizeRawLocales)\n private buildLocale = memoize(buildLocale)\n private buildPluginHooks = buildBuildPluginHooks()\n private buildDateEnv = memoize(buildDateEnv)\n private buildTheme = memoize(buildTheme)\n private parseToolbars = memoize(parseToolbars)\n private buildViewSpecs = memoize(buildViewSpecs)\n private buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator)\n private buildViewApi = memoize(buildViewApi)\n private buildViewUiProps = memoizeObjArg(buildViewUiProps)\n private buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual)\n private buildEventUiBases = memoize(buildEventUiBases)\n private parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours)\n private buildTitle = memoize(buildTitle)\n\n public emitter = new Emitter<CalendarListeners>()\n private actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this))\n private props: CalendarDataManagerProps\n private state: CalendarDataManagerState\n private data: CalendarData\n\n public currentCalendarOptionsInput: CalendarOptions = {}\n private currentCalendarOptionsRefined: CalendarOptionsRefined = ({} as any)\n private currentViewOptionsInput: ViewOptions = {}\n private currentViewOptionsRefined: ViewOptionsRefined = ({} as any)\n public currentCalendarOptionsRefiners: any = {}\n\n constructor(props: CalendarDataManagerProps) {\n this.props = props\n this.actionRunner.pause()\n\n let dynamicOptionOverrides: CalendarOptions = {}\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView\n let currentViewData = this.computeCurrentViewData(\n currentViewType,\n optionsData,\n props.optionOverrides,\n dynamicOptionOverrides,\n )\n\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this\n this.emitter.setThisContext(props.calendarApi)\n this.emitter.setOptions(currentViewData.options)\n\n let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv)\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start\n }\n\n let calendarContext: CalendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n }\n\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext)\n }\n\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext)\n\n let initialState: CalendarDataManagerState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext), // weird to have this in state\n eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n }\n let contextAndState = { ...calendarContext, ...initialState }\n\n for (let reducer of optionsData.pluginHooks.reducers) {\n __assign(initialState, reducer(null, null, contextAndState))\n }\n\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true) // NOT DRY\n }\n\n this.state = initialState\n this.updateData()\n this.actionRunner.resume()\n }\n\n getCurrentData = () => this.data\n\n dispatch = (action: Action) => {\n this.actionRunner.request(action) // protects against recursive calls to _handleAction\n }\n\n resetOptions(optionOverrides: CalendarOptions, append?: boolean) {\n let { props } = this\n\n props.optionOverrides = append\n ? { ...props.optionOverrides, ...optionOverrides }\n : optionOverrides\n\n this.actionRunner.request({ // hack. will cause updateData\n type: 'NOTHING',\n })\n }\n\n _handleAction(action: Action) {\n let { props, state, emitter } = this\n\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action)\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewType = reduceViewType(state.currentViewType, action)\n let currentViewData = this.computeCurrentViewData(\n currentViewType,\n optionsData,\n props.optionOverrides,\n dynamicOptionOverrides,\n )\n\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this\n emitter.setThisContext(props.calendarApi)\n emitter.setOptions(currentViewData.options)\n\n let calendarContext: CalendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter,\n getCurrentData: this.getCurrentData,\n }\n\n let { currentDate, dateProfile } = state\n\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n }\n\n currentDate = reduceCurrentDate(currentDate, action)\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator)\n\n if (\n action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)\n ) {\n currentDate = dateProfile.currentRange.start\n }\n\n let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext)\n let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext)\n let isEventsLoading = computeEventSourcesLoading(eventSources) // BAD. also called in this func in computeIsLoading\n\n let renderableEventStore =\n (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore\n\n let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext) // will memoize obj\n let eventUiBySource = this.buildEventUiBySource(eventSources)\n let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource)\n\n let newState: CalendarDataManagerState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext), // will memoize obj\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n }\n let contextAndState = { ...calendarContext, ...newState }\n\n for (let reducer of optionsData.pluginHooks.reducers) {\n __assign(newState, reducer(state, action, contextAndState)) // give the OLD state, for old value\n }\n\n let wasLoading = computeIsLoading(state, calendarContext)\n let isLoading = computeIsLoading(newState, calendarContext)\n\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true)\n } else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false)\n }\n\n this.state = newState\n\n if (props.onAction) {\n props.onAction(action)\n }\n }\n\n updateData() {\n let { props, state } = this\n let oldData = this.data\n\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n state.dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewData = this.computeCurrentViewData(\n state.currentViewType,\n optionsData,\n props.optionOverrides,\n state.dynamicOptionOverrides,\n )\n\n let data: CalendarData = this.data = {\n viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv),\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n ...optionsData,\n ...currentViewData,\n ...state,\n }\n\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers\n let oldCalendarOptions = oldData && oldData.calendarOptions\n let newCalendarOptions = optionsData.calendarOptions\n\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data)\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv)\n }\n\n for (let optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data)\n }\n }\n }\n\n if (props.onData) {\n props.onData(data)\n }\n }\n\n _computeOptionsData(\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n calendarApi: CalendarApi,\n ): CalendarOptionsData {\n // TODO: blacklist options that are handled by optionChangeHandlers\n\n let {\n refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra,\n } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides)\n\n warnUnknownOptions(extra)\n\n let dateEnv = this.buildDateEnv(\n refinedOptions.timeZone,\n refinedOptions.locale,\n refinedOptions.weekNumberCalculation,\n refinedOptions.firstDay,\n refinedOptions.weekText,\n pluginHooks,\n availableLocaleData,\n refinedOptions.defaultRangeSeparator,\n )\n\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults)\n let theme = this.buildTheme(refinedOptions, pluginHooks)\n let toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi)\n\n return {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map,\n }\n }\n\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides: CalendarOptions, dynamicOptionOverrides: CalendarOptions) {\n let { locales, locale } = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ])\n let availableLocaleData = this.organizeRawLocales(locales)\n let availableRawLocales = availableLocaleData.map\n let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options\n let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins)\n let refiners = this.currentCalendarOptionsRefiners = {\n ...BASE_OPTION_REFINERS,\n ...CALENDAR_LISTENER_REFINERS,\n ...CALENDAR_OPTION_REFINERS,\n ...pluginHooks.listenerRefiners,\n ...pluginHooks.optionRefiners,\n }\n let extra = {}\n\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ])\n let refined: Partial<CalendarOptionsRefined> = {}\n let currentRaw = this.currentCalendarOptionsInput\n let currentRefined = this.currentCalendarOptionsRefined\n let anyChanges = false\n\n for (let optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (\n raw[optionName] === currentRaw[optionName] ||\n (\n COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])\n )\n ) {\n refined[optionName] = currentRefined[optionName]\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName])\n anyChanges = true\n } else {\n extra[optionName] = currentRaw[optionName]\n }\n }\n }\n\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw\n this.currentCalendarOptionsRefined = refined as CalendarOptionsRefined\n }\n\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra,\n }\n }\n\n _computeCurrentViewData(\n viewType: string,\n optionsData: CalendarOptionsData,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n ): CalendarCurrentViewData {\n let viewSpec = optionsData.viewSpecs[viewType]\n\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`)\n }\n\n let { refinedOptions, extra } = this.processRawViewOptions(\n viewSpec,\n optionsData.pluginHooks,\n optionsData.localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n )\n\n warnUnknownOptions(extra)\n\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass as any,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime as any,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi, // should come from elsewhere?\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n })\n\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv)\n\n return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi }\n }\n\n processRawViewOptions(\n viewSpec: ViewSpec,\n pluginHooks: PluginHooks,\n localeDefaults: CalendarOptions,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n ) {\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ])\n let refiners = {\n ...BASE_OPTION_REFINERS,\n ...CALENDAR_LISTENER_REFINERS,\n ...CALENDAR_OPTION_REFINERS,\n ...VIEW_OPTION_REFINERS,\n ...pluginHooks.listenerRefiners,\n ...pluginHooks.optionRefiners,\n }\n let refined: Partial<ViewOptionsRefined> = {}\n let currentRaw = this.currentViewOptionsInput\n let currentRefined = this.currentViewOptionsRefined\n let anyChanges = false\n let extra = {}\n\n for (let optionName in raw) {\n if (\n raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))\n ) {\n refined[optionName] = currentRefined[optionName]\n } else {\n if (\n raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))\n ) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName]\n }\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName])\n } else {\n extra[optionName] = raw[optionName]\n }\n\n anyChanges = true\n }\n }\n\n if (anyChanges) {\n this.currentViewOptionsInput = raw\n this.currentViewOptionsRefined = refined as ViewOptionsRefined\n }\n\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra,\n }\n }\n}\n\nfunction buildDateEnv(\n timeZone: string,\n explicitLocale: LocaleSingularArg,\n weekNumberCalculation,\n firstDay: number | undefined,\n weekText,\n pluginHooks: PluginHooks,\n availableLocaleData: RawLocaleInfo,\n defaultSeparator: string,\n) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map)\n\n return new DateEnv({\n calendarSystem: 'gregory', // TODO: make this a setting\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator,\n })\n}\n\nfunction buildTheme(options: CalendarOptionsRefined, pluginHooks: PluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme\n\n return new ThemeClass(options)\n}\n\nfunction buildDateProfileGenerator(props: DateProfileGeneratorProps): DateProfileGenerator {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator\n\n return new DateProfileGeneratorClass(props)\n}\n\nfunction buildViewApi(type: string, getCurrentData: () => CalendarData, dateEnv: DateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv)\n}\n\nfunction buildEventUiBySource(eventSources: EventSourceHash): EventUiHash {\n return mapHash(eventSources, (eventSource) => eventSource.ui)\n}\n\nfunction buildEventUiBases(eventDefs: EventDefHash, eventUiSingleBase: EventUi, eventUiBySource: EventUiHash) {\n let eventUiBases: EventUiHash = { '': eventUiSingleBase }\n\n for (let defId in eventDefs) {\n let def = eventDefs[defId]\n\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId]\n }\n }\n\n return eventUiBases\n}\n\nfunction buildViewUiProps(calendarContext: CalendarContext) {\n let { options } = calendarContext\n\n return {\n eventUiSingleBase: createEventUi(\n {\n display: options.eventDisplay,\n editable: options.editable, // without \"event\" at start\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n },\n calendarContext,\n ),\n selectionConfig: createEventUi(\n {\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n },\n calendarContext,\n ),\n }\n}\n\nfunction computeIsLoading(state: CalendarDataManagerState, context: CalendarContext) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true\n }\n }\n\n return false\n}\n\nfunction parseContextBusinessHours(calendarContext: CalendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext)\n}\n\nfunction warnUnknownOptions(options: any, viewName?: string) {\n for (let optionName in options) {\n console.warn(\n `Unknown option '${optionName}'` +\n (viewName ? ` for view '${viewName}'` : ''),\n )\n }\n}\n","import { Action } from './Action'\n\nexport function reduceDynamicOptionOverrides(dynamicOptionOverrides, action: Action) {\n switch (action.type) {\n case 'SET_OPTION':\n return { ...dynamicOptionOverrides, [action.optionName]: action.rawOptionValue }\n default:\n return dynamicOptionOverrides\n }\n}\n","import { Action } from './Action'\n\nexport function reduceViewType(viewType: string, action: Action): string {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType\n }\n\n return viewType\n}\n","import { DateProfile, DateProfileGenerator } from '../DateProfileGenerator'\nimport { Action } from './Action'\nimport { DateMarker } from '../datelib/marker'\n\nexport function reduceDateProfile(\n currentDateProfile: DateProfile | null,\n action: Action,\n currentDate: DateMarker,\n dateProfileGenerator: DateProfileGenerator,\n): DateProfile {\n let dp: DateProfile\n\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate)\n\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker)\n\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate)\n if (dp.isValid) {\n return dp\n }\n break\n\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate)\n if (dp.isValid) {\n return dp\n }\n break\n }\n\n return currentDateProfile\n}\n","import { Component, ComponentChildren } from '../vdom'\nimport { CalendarDataManager } from '../reducers/CalendarDataManager'\nimport { CalendarApi } from '../CalendarApi'\nimport { CalendarData } from '../reducers/data-types'\n\nexport interface CalendarDataProviderProps {\n optionOverrides: any\n calendarApi: CalendarApi\n children?: (data: CalendarData) => ComponentChildren\n}\n\n// TODO: move this to react plugin?\nexport class CalendarDataProvider extends Component<CalendarDataProviderProps, CalendarData> {\n dataManager: CalendarDataManager\n\n constructor(props: CalendarDataProviderProps) {\n super(props)\n\n this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: this.handleData,\n })\n }\n\n handleData = (data: CalendarData) => {\n if (!this.dataManager) { // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n this.state = data // can't use setState yet\n } else {\n this.setState(data)\n }\n }\n\n render() {\n return this.props.children(this.state)\n }\n\n componentDidUpdate(prevProps: CalendarDataProviderProps) {\n let newOptionOverrides = this.props.optionOverrides\n\n if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides)\n }\n }\n}\n","export interface SegSpan {\n start: number\n end: number\n}\n\nexport interface SegEntry {\n index: number\n thickness: number // should be an integer\n span: SegSpan\n}\n\n// used internally. exposed for subclasses of SegHierarchy\nexport interface SegInsertion {\n level: number // will have an equal coord, or slightly before, entries in existing level\n levelCoord: number\n lateral: number // where to insert in the existing level. -1 if creating a new level\n touchingLevel: number // -1 if no touching\n touchingLateral: number // -1 if no touching\n touchingEntry: SegEntry // the last touching entry in the level\n stackCnt: number\n}\n\nexport interface SegRect extends SegEntry {\n levelCoord: number\n}\n\nexport interface SegEntryGroup {\n entries: SegEntry[]\n span: SegSpan\n}\n\nexport class SegHierarchy {\n // settings\n strictOrder: boolean = false\n allowReslicing: boolean = false\n maxCoord: number = -1 // -1 means no max\n maxStackCnt: number = -1 // -1 means no max\n\n levelCoords: number[] = [] // ordered\n entriesByLevel: SegEntry[][] = [] // parallel with levelCoords\n stackCnts: { [entryId: string]: number } = {} // TODO: use better technique!?\n\n addSegs(inputs: SegEntry[]): SegEntry[] {\n let hiddenEntries: SegEntry[] = []\n\n for (let input of inputs) {\n this.insertEntry(input, hiddenEntries)\n }\n\n return hiddenEntries\n }\n\n insertEntry(entry: SegEntry, hiddenEntries: SegEntry[]): number {\n let insertion = this.findInsertion(entry)\n\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion)\n return 1\n }\n\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries)\n }\n\n isInsertionValid(insertion: SegInsertion, entry: SegEntry): boolean {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt)\n }\n\n // returns number of new entries inserted\n handleInvalidInsertion(insertion: SegInsertion, entry: SegEntry, hiddenEntries: SegEntry[]): number {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries)\n }\n\n hiddenEntries.push(entry)\n return 0\n }\n\n splitEntry(entry: SegEntry, barrier: SegEntry, hiddenEntries: SegEntry[]): number {\n let partCnt = 0\n let splitHiddenEntries: SegEntry[] = []\n let entrySpan = entry.span\n let barrierSpan = barrier.span\n\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: entrySpan.start, end: barrierSpan.start },\n }, splitHiddenEntries)\n }\n\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: barrierSpan.end, end: entrySpan.end },\n }, splitHiddenEntries)\n }\n\n if (partCnt) {\n hiddenEntries.push({\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n }, ...splitHiddenEntries)\n return partCnt\n }\n\n hiddenEntries.push(entry)\n return 0\n }\n\n insertEntryAt(entry: SegEntry, insertion: SegInsertion): void {\n let { entriesByLevel, levelCoords } = this\n\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord)\n insertAt(entriesByLevel, insertion.level, [entry])\n } else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry)\n }\n\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt\n }\n\n findInsertion(newEntry: SegEntry): SegInsertion {\n let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this\n let levelCnt = levelCoords.length\n let candidateCoord = 0\n let touchingLevel: number = -1\n let touchingLateral: number = -1\n let touchingEntry: SegEntry = null\n let stackCnt = 0\n\n for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n let trackingCoord = levelCoords[trackingLevel]\n\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break\n }\n\n let trackingEntries = entriesByLevel[trackingLevel]\n let trackingEntry: SegEntry\n let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd) // find first entry after newEntry's end\n let lateralIndex = searchRes[0] + searchRes[1] // if exact match (which doesn't collide), go to next one\n\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n let trackingEntryBottom = trackingCoord + trackingEntry.thickness\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom\n touchingEntry = trackingEntry\n touchingLevel = trackingLevel\n touchingLateral = lateralIndex\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1)\n }\n lateralIndex += 1\n }\n }\n\n // the destination level will be after touchingEntry's level. find it\n let destLevel = 0\n if (touchingEntry) {\n destLevel = touchingLevel + 1\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1\n }\n }\n\n // if adding to an existing level, find where to insert\n let destLateral = -1\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0]\n }\n\n return {\n touchingLevel,\n touchingLateral,\n touchingEntry,\n stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral,\n }\n }\n\n // sorted by levelCoord (lowest to highest)\n toRects(): SegRect[] {\n let { entriesByLevel, levelCoords } = this\n let levelCnt = entriesByLevel.length\n let rects: SegRect[] = []\n\n for (let level = 0; level < levelCnt; level += 1) {\n let entries = entriesByLevel[level]\n let levelCoord = levelCoords[level]\n\n for (let entry of entries) {\n rects.push({ ...entry, levelCoord })\n }\n }\n\n return rects\n }\n}\n\nexport function getEntrySpanEnd(entry: SegEntry) {\n return entry.span.end\n}\n\nexport function buildEntryKey(entry: SegEntry) { // TODO: use Map instead?\n return entry.index + ':' + entry.span.start\n}\n\n// returns groups with entries sorted by input order\nexport function groupIntersectingEntries(entries: SegEntry[]): SegEntryGroup[] {\n let merges: SegEntryGroup[] = []\n\n for (let entry of entries) {\n let filteredMerges: SegEntryGroup[] = []\n let hungryMerge: SegEntryGroup = { // the merge that will eat what it collides with\n span: entry.span,\n entries: [entry],\n }\n\n for (let merge of merges) {\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries), // keep preexisting merge's items first. maintains order\n span: joinSpans(merge.span, hungryMerge.span),\n }\n } else {\n filteredMerges.push(merge)\n }\n }\n\n filteredMerges.push(hungryMerge)\n merges = filteredMerges\n }\n\n return merges\n}\n\nexport function joinSpans(span0: SegSpan, span1: SegSpan): SegSpan {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end),\n }\n}\n\nexport function intersectSpans(span0: SegSpan, span1: SegSpan): SegSpan | null {\n let start = Math.max(span0.start, span1.start)\n let end = Math.min(span0.end, span1.end)\n\n if (start < end) {\n return { start, end }\n }\n\n return null\n}\n\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\n\nfunction insertAt<Item>(arr: Item[], index: number, item: Item) {\n arr.splice(index, 0, item)\n}\n\nexport function binarySearch<Item>(\n a: Item[],\n searchVal: number,\n getItemVal: (item: Item) => number,\n): [number, number] { // returns [level, isExactMatch ? 1 : 0]\n let startIndex = 0\n let endIndex = a.length // exclusive\n\n if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n return [0, 0]\n }\n if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n return [endIndex, 0]\n }\n\n while (startIndex < endIndex) {\n let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2)\n let middleVal = getItemVal(a[middleIndex])\n\n if (searchVal < middleVal) {\n endIndex = middleIndex\n } else if (searchVal > middleVal) {\n startIndex = middleIndex + 1\n } else { // equal!\n return [middleIndex, 1]\n }\n }\n\n return [startIndex, 0]\n}\n","import { DateComponent } from '../component/DateComponent'\nimport { Hit } from './hit'\n\nexport abstract class Interaction {\n component: DateComponent<any>\n isHitComboAllowed: ((hit0: Hit, hit1: Hit) => boolean) | null\n\n constructor(settings: InteractionSettings) {\n this.component = settings.component\n this.isHitComboAllowed = settings.isHitComboAllowed || null\n }\n\n destroy() {\n }\n}\n\nexport type InteractionClass = { new(settings: InteractionSettings): Interaction }\n\nexport interface InteractionSettingsInput {\n el: HTMLElement\n useEventCenter?: boolean\n isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean\n}\n\nexport interface InteractionSettings {\n component: DateComponent<any>\n el: HTMLElement\n useEventCenter: boolean\n isHitComboAllowed: ((hit0: Hit, hit1: Hit) => boolean) | null\n}\n\nexport type InteractionSettingsStore = { [componenUid: string]: InteractionSettings }\n\nexport function parseInteractionSettings(component: DateComponent<any>, input: InteractionSettingsInput): InteractionSettings {\n return {\n component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null,\n }\n}\n\nexport function interactionSettingsToStore(settings: InteractionSettings) {\n return {\n [settings.component.uid]: settings,\n }\n}\n\n// global state\nexport const interactionSettingsStore: InteractionSettingsStore = {}\n","import { Emitter } from '../common/Emitter'\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nexport abstract class ElementDragging { // TODO: rename to *Interface?\n emitter: Emitter<any>\n\n constructor(el: HTMLElement, selector?: string) {\n this.emitter = new Emitter()\n }\n\n destroy() {\n }\n\n // if given true, should prevent dragstart+dragmove+dragend from firing\n abstract setIgnoreMove(bool: boolean): void\n\n setMirrorIsVisible(bool: boolean) {\n // optional if subclass doesn't want to support a mirror\n }\n\n setMirrorNeedsRevert(bool: boolean) {\n // optional if subclass doesn't want to support a mirror\n }\n\n setAutoScrollEnabled(bool: boolean) {\n // optional\n }\n}\n\nexport type ElementDraggingClass = { new(el: HTMLElement, selector?: string): ElementDragging }\n","// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nexport const config = {} as any\n","import { createDuration, Duration } from '../datelib/duration'\nimport { refineProps, RawOptionsFromRefiners, Dictionary } from '../options'\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\n\nconst DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String,\n}\n\nexport type DragMetaInput =\n RawOptionsFromRefiners<typeof DRAG_META_REFINERS> &\n { [otherProp: string]: any } // for leftoverProps\n\nexport interface DragMeta {\n startTime: Duration | null\n duration: Duration | null\n create: boolean // create an event when dropped?\n sourceId: string // similar to addEvent's parameter\n leftoverProps: Dictionary\n}\n\nexport function parseDragMeta(raw: DragMetaInput): DragMeta {\n let { refined, extra } = refineProps(raw, DRAG_META_REFINERS)\n\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra,\n }\n}\n","import { createElement, VNode } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { ToolbarWidget } from './toolbar-struct'\n\nexport interface ToolbarContent {\n title: string\n titleId: string\n navUnit: string\n activeButton: string\n isTodayEnabled: boolean\n isPrevEnabled: boolean\n isNextEnabled: boolean\n}\n\nexport interface ToolbarSectionProps extends ToolbarContent {\n widgetGroups: ToolbarWidget[][]\n}\n\nexport class ToolbarSection extends BaseComponent<ToolbarSectionProps> {\n render() {\n let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup))\n\n return createElement('div', { className: 'fc-toolbar-chunk' }, ...children)\n }\n\n renderWidgetGroup(widgetGroup: ToolbarWidget[]) {\n let { props } = this\n let { theme } = this.context\n let children: VNode[] = []\n let isOnlyButtons = true\n\n for (let widget of widgetGroup) {\n let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget\n\n if (buttonName === 'title') {\n isOnlyButtons = false\n children.push(\n <h2 className=\"fc-toolbar-title\" id={props.titleId}>{props.title}</h2>,\n )\n } else {\n let isPressed = buttonName === props.activeButton\n let isDisabled =\n (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next')\n\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')]\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'))\n }\n\n children.push(\n <button\n type=\"button\"\n title={typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint}\n disabled={isDisabled}\n aria-pressed={isPressed}\n className={buttonClasses.join(' ')}\n onClick={buttonClick}\n >\n {buttonText || (buttonIcon ? <span className={buttonIcon} /> : '')}\n </button>,\n )\n }\n }\n\n if (children.length > 1) {\n let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || ''\n\n return createElement('div', { className: groupClassName }, ...children)\n }\n return children[0]\n }\n}\n","import { createElement } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { ToolbarModel, ToolbarWidget } from './toolbar-struct'\nimport { ToolbarSection, ToolbarContent } from './ToolbarSection'\n\nexport interface ToolbarProps extends ToolbarContent {\n extraClassName: string // wish this could be array, but easier for pureness\n model: ToolbarModel\n titleId: string\n}\n\nexport class Toolbar extends BaseComponent<ToolbarProps> {\n render() {\n let { model, extraClassName } = this.props\n let forceLtr = false\n let startContent\n let endContent\n let sectionWidgets = model.sectionWidgets\n let centerContent = sectionWidgets.center\n\n if (sectionWidgets.left) {\n forceLtr = true\n startContent = sectionWidgets.left\n } else {\n startContent = sectionWidgets.start\n }\n\n if (sectionWidgets.right) {\n forceLtr = true\n endContent = sectionWidgets.right\n } else {\n endContent = sectionWidgets.end\n }\n\n let classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ]\n\n return (\n <div className={classNames.join(' ')}>\n {this.renderSection('start', startContent || [])}\n {this.renderSection('center', centerContent || [])}\n {this.renderSection('end', endContent || [])}\n </div>\n )\n }\n\n renderSection(key: string, widgetGroups: ToolbarWidget[][]) {\n let { props } = this\n\n return (\n <ToolbarSection\n key={key}\n widgetGroups={widgetGroups}\n title={props.title}\n navUnit={props.navUnit}\n activeButton={props.activeButton}\n isTodayEnabled={props.isTodayEnabled}\n isPrevEnabled={props.isPrevEnabled}\n isNextEnabled={props.isNextEnabled}\n titleId={props.titleId}\n />\n )\n }\n}\n","import { BaseComponent, setRef } from './vdom-util'\nimport { ComponentChildren, Ref, createElement } from './vdom'\nimport { CssDimValue } from './scrollgrid/util'\n\nexport interface ViewContainerProps {\n labeledById: string\n liquid?: boolean\n height?: CssDimValue\n aspectRatio?: number\n elRef?: Ref<HTMLDivElement>\n children?: ComponentChildren\n}\n\ninterface ViewContainerState {\n availableWidth: number | null\n}\n\n// TODO: do function component?\nexport class ViewContainer extends BaseComponent<ViewContainerProps, ViewContainerState> {\n el: HTMLElement\n\n state: ViewContainerState = {\n availableWidth: null,\n }\n\n render() {\n let { props, state } = this\n let { aspectRatio } = props\n\n let classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ]\n let height: CssDimValue = ''\n let paddingBottom: CssDimValue = ''\n\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio\n } else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = `${(1 / aspectRatio) * 100}%`\n }\n } else {\n height = props.height || ''\n }\n\n return (\n <div\n aria-labelledby={props.labeledById}\n ref={this.handleEl}\n className={classNames.join(' ')}\n style={{ height, paddingBottom }}\n >\n {props.children}\n </div>\n )\n }\n\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize)\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize)\n }\n\n handleEl = (el: HTMLElement | null) => {\n this.el = el\n setRef(this.props.elRef, el)\n this.updateAvailableWidth()\n }\n\n handleResize = () => {\n this.updateAvailableWidth()\n }\n\n updateAvailableWidth() {\n if (\n this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth })\n }\n }\n}\n","import { listenBySelector } from '../util/dom-event'\nimport { EventApi } from '../api/EventApi'\nimport { elementClosest } from '../util/dom-manip'\nimport { getElSeg } from '../component/event-rendering'\nimport { Interaction, InteractionSettings } from './interaction'\nimport { ViewApi } from '../ViewApi'\n\nexport interface EventClickArg {\n el: HTMLElement\n event: EventApi\n jsEvent: MouseEvent\n view: ViewApi\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nexport class EventClicking extends Interaction {\n constructor(settings: InteractionSettings) {\n super(settings)\n\n this.destroy = listenBySelector(\n settings.el,\n 'click',\n '.fc-event', // on both fg and bg events\n this.handleSegClick,\n )\n }\n\n handleSegClick = (ev: Event, segEl: HTMLElement) => {\n let { component } = this\n let { context } = component\n let seg = getElSeg(segEl)\n\n if (\n seg && // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target as HTMLElement)\n ) {\n // our way to simulate a link click for elements that can't be <a> tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n let hasUrlContainer = elementClosest(ev.target as HTMLElement, '.fc-event-forced-url')\n let url = hasUrlContainer ? (hasUrlContainer.querySelector('a[href]') as any).href : ''\n\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(\n component.context,\n seg.eventRange.def,\n seg.eventRange.instance,\n ),\n jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventClickArg)\n\n if (url && !ev.defaultPrevented) {\n window.location.href = url\n }\n }\n }\n}\n","import { listenToHoverBySelector } from '../util/dom-event'\nimport { EventApi } from '../api/EventApi'\nimport { getElSeg } from '../component/event-rendering'\nimport { Interaction, InteractionSettings } from './interaction'\nimport { ViewApi } from '../ViewApi'\n\nexport interface EventHoveringArg {\n el: HTMLElement\n event: EventApi\n jsEvent: MouseEvent\n view: ViewApi\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nexport class EventHovering extends Interaction {\n removeHoverListeners: () => void\n\n currentSegEl: HTMLElement\n\n constructor(settings: InteractionSettings) {\n super(settings)\n\n this.removeHoverListeners = listenToHoverBySelector(\n settings.el,\n '.fc-event', // on both fg and bg events\n this.handleSegEnter,\n this.handleSegLeave,\n )\n }\n\n destroy() {\n this.removeHoverListeners()\n }\n\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n handleEventElRemove = (el: HTMLElement) => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl)\n }\n }\n\n handleSegEnter = (ev: Event, segEl: HTMLElement) => {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n this.currentSegEl = segEl\n this.triggerEvent('eventMouseEnter', ev, segEl)\n }\n }\n\n handleSegLeave = (ev: Event | null, segEl: HTMLElement) => {\n if (this.currentSegEl) {\n this.currentSegEl = null\n this.triggerEvent('eventMouseLeave', ev, segEl)\n }\n }\n\n triggerEvent(publicEvName: 'eventMouseEnter' | 'eventMouseLeave', ev: Event | null, segEl: HTMLElement) {\n let { component } = this\n let { context } = component\n let seg = getElSeg(segEl)!\n\n if (!ev || component.isValidSegDownEl(ev.target as HTMLElement)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(\n context,\n seg.eventRange.def,\n seg.eventRange.instance,\n ),\n jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventHoveringArg)\n }\n }\n}\n","import { __assign } from 'tslib'\nimport { ViewContextType, buildViewContext } from './ViewContext'\nimport { ViewSpec } from './structs/view-spec'\nimport { ViewProps } from './View'\nimport { Toolbar } from './Toolbar'\nimport { DateProfileGenerator, DateProfile } from './DateProfileGenerator'\nimport { rangeContainsMarker } from './datelib/date-range'\nimport { memoize } from './util/memoize'\nimport { DateMarker } from './datelib/marker'\nimport { CalendarData } from './reducers/data-types'\nimport { ViewPropsTransformerClass } from './plugin-system-struct'\nimport { createElement, createRef, Fragment, VNode } from './vdom'\nimport { ViewContainer } from './ViewContainer'\nimport {\n Interaction,\n InteractionSettingsInput,\n InteractionClass,\n parseInteractionSettings,\n interactionSettingsStore,\n} from './interactions/interaction'\nimport { DateComponent } from './component/DateComponent'\nimport { EventClicking } from './interactions/EventClicking'\nimport { EventHovering } from './interactions/EventHovering'\nimport { getNow } from './reducers/current-date'\nimport { CalendarInteraction } from './calendar-utils'\nimport { DelayedRunner } from './util/DelayedRunner'\nimport { PureComponent } from './vdom-util'\nimport { getUniqueDomId } from './util/dom-manip'\n\nexport interface CalendarContentProps extends CalendarData {\n forPrint: boolean\n isHeightAuto: boolean\n}\n\nexport class CalendarContent extends PureComponent<CalendarContentProps> {\n private buildViewContext = memoize(buildViewContext)\n private buildViewPropTransformers = memoize(buildViewPropTransformers)\n private buildToolbarProps = memoize(buildToolbarProps)\n private headerRef = createRef<Toolbar>()\n private footerRef = createRef<Toolbar>()\n private interactionsStore: { [componentUid: string]: Interaction[] } = {}\n private calendarInteractions: CalendarInteraction[]\n\n // eslint-disable-next-line\n state = {\n viewLabelId: getUniqueDomId(),\n }\n\n /*\n renders INSIDE of an outer div\n */\n render() {\n let { props } = this\n let { toolbarConfig, options } = props\n\n let toolbarProps = this.buildToolbarProps(\n props.viewSpec,\n props.dateProfile,\n props.dateProfileGenerator,\n props.currentDate,\n getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle,\n )\n\n let viewVGrow = false\n let viewHeight: string | number = ''\n let viewAspectRatio: number | undefined\n\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = ''\n } else if (options.height != null) {\n viewVGrow = true\n } else if (options.contentHeight != null) {\n viewHeight = options.contentHeight\n } else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5) // prevent from getting too tall\n }\n\n let viewContext = this.buildViewContext(\n props.viewSpec,\n props.viewApi,\n props.options,\n props.dateProfileGenerator,\n props.dateEnv,\n props.theme,\n props.pluginHooks,\n props.dispatch,\n props.getCurrentData,\n props.emitter,\n props.calendarApi,\n this.registerInteractiveComponent,\n this.unregisterInteractiveComponent,\n )\n\n let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : ''\n\n return (\n <ViewContextType.Provider value={viewContext}>\n {toolbarConfig.header && (\n <Toolbar\n ref={this.headerRef}\n extraClassName=\"fc-header-toolbar\"\n model={toolbarConfig.header}\n titleId={viewLabelId}\n {...toolbarProps}\n />\n )}\n <ViewContainer\n liquid={viewVGrow}\n height={viewHeight}\n aspectRatio={viewAspectRatio}\n labeledById={viewLabelId}\n >\n {this.renderView(props)}\n {this.buildAppendContent()}\n </ViewContainer>\n {toolbarConfig.footer && (\n <Toolbar\n ref={this.footerRef}\n extraClassName=\"fc-footer-toolbar\"\n model={toolbarConfig.footer}\n titleId=\"\"\n {...toolbarProps}\n />\n )}\n </ViewContextType.Provider>\n )\n }\n\n componentDidMount() {\n let { props } = this\n\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map((CalendarInteractionClass) => new CalendarInteractionClass(props))\n\n window.addEventListener('resize', this.handleWindowResize)\n\n let { propSetHandlers } = props.pluginHooks\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props)\n }\n }\n\n componentDidUpdate(prevProps: CalendarContentProps) {\n let { props } = this\n\n let { propSetHandlers } = props.pluginHooks\n for (let propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props)\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize)\n this.resizeRunner.clear()\n\n for (let interaction of this.calendarInteractions) {\n interaction.destroy()\n }\n\n this.props.emitter.trigger('_unmount')\n }\n\n buildAppendContent(): VNode {\n let { props } = this\n\n let children = props.pluginHooks.viewContainerAppends.map(\n (buildAppendContent) => buildAppendContent(props),\n )\n\n return createElement(Fragment, {}, ...children)\n }\n\n renderView(props: CalendarContentProps) {\n let { pluginHooks } = props\n let { viewSpec } = props\n\n let viewProps: ViewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore, // !\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n }\n\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers)\n\n for (let transformer of transformers) {\n __assign(\n viewProps,\n transformer.transform(viewProps, props),\n )\n }\n\n let ViewComponent = viewSpec.component\n\n return (\n <ViewComponent {...viewProps} />\n )\n }\n\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n\n registerInteractiveComponent = (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput)\n let DEFAULT_INTERACTIONS: InteractionClass[] = [\n EventClicking,\n EventHovering,\n ]\n let interactionClasses: InteractionClass[] = DEFAULT_INTERACTIONS.concat(\n this.props.pluginHooks.componentInteractions,\n )\n let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings))\n\n this.interactionsStore[component.uid] = interactions\n interactionSettingsStore[component.uid] = settings\n }\n\n unregisterInteractiveComponent = (component: DateComponent<any>) => {\n let listeners = this.interactionsStore[component.uid]\n\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy()\n }\n delete this.interactionsStore[component.uid]\n }\n\n delete interactionSettingsStore[component.uid]\n }\n\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n\n resizeRunner = new DelayedRunner(() => {\n this.props.emitter.trigger('_resize', true) // should window resizes be considered \"forced\" ?\n this.props.emitter.trigger('windowResize', { view: this.props.viewApi })\n })\n\n handleWindowResize = (ev: UIEvent) => {\n let { options } = this.props\n\n if (\n options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay)\n }\n }\n}\n\nfunction buildToolbarProps(\n viewSpec: ViewSpec,\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n currentDate: DateMarker,\n now: DateMarker,\n title: string,\n) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n let todayInfo = dateProfileGenerator.build(now, undefined, false) // TODO: need `undefined` or else INFINITE LOOP for some reason\n let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false)\n let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false)\n\n return {\n title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n }\n}\n\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\n\nfunction buildViewPropTransformers(theClasses: ViewPropsTransformerClass[]) {\n return theClasses.map((TheClass) => new TheClass())\n}\n","import { ComponentChildren } from './vdom'\nimport { BaseComponent } from './vdom-util'\nimport { CssDimValue } from './scrollgrid/util'\nimport { CalendarOptions, CalendarListeners } from './options'\nimport { Theme } from './theme/Theme'\nimport { getCanVGrowWithinCell } from './util/table-styling'\nimport { Emitter } from './common/Emitter'\n\nexport interface CalendarRootProps {\n options: CalendarOptions\n theme: Theme\n emitter: Emitter<CalendarListeners>\n children: (classNames: string[], height: CssDimValue, isHeightAuto: boolean, forPrint: boolean) => ComponentChildren\n}\n\ninterface CalendarRootState {\n forPrint: boolean\n}\n\nexport class CalendarRoot extends BaseComponent<CalendarRootProps, CalendarRootState> {\n state = {\n forPrint: false,\n }\n\n render() {\n let { props } = this\n let { options } = props\n let { forPrint } = this.state\n\n let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto'\n let height = (!isHeightAuto && options.height != null) ? options.height : ''\n\n let classNames: string[] = [\n 'fc',\n forPrint ? 'fc-media-print' : 'fc-media-screen',\n `fc-direction-${options.direction}`,\n props.theme.getClass('root'),\n ]\n\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack')\n }\n\n return props.children(classNames, height, isHeightAuto, forPrint)\n }\n\n componentDidMount() {\n let { emitter } = this.props\n emitter.on('_beforeprint', this.handleBeforePrint)\n emitter.on('_afterprint', this.handleAfterPrint)\n }\n\n componentWillUnmount() {\n let { emitter } = this.props\n emitter.off('_beforeprint', this.handleBeforePrint)\n emitter.off('_afterprint', this.handleAfterPrint)\n }\n\n handleBeforePrint = () => {\n this.setState({ forPrint: true })\n }\n\n handleAfterPrint = () => {\n this.setState({ forPrint: false })\n }\n}\n","import { createFormatter } from '../datelib/formatting'\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nexport function computeFallbackHeaderFormat(datesRepDistinctDays: boolean, dayCnt: number) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({ weekday: 'short' }) // \"Sat\"\n }\n\n if (dayCnt > 1) {\n return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }) // \"Sat 11/12\"\n }\n\n return createFormatter({ weekday: 'long' }) // \"Saturday\"\n}\n","import { DayHeaderContentArg } from '../render-hook-misc'\n\nexport const CLASS_NAME = 'fc-col-header-cell' // do the cushion too? no\n\nexport function renderInner(hookProps: DayHeaderContentArg) {\n return hookProps.text\n}\n","import { DateRange } from '../datelib/date-range'\nimport { getDayClassNames, getDateMeta } from '../component/date-rendering'\nimport { DateMarker } from '../datelib/marker'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { formatDayString } from '../datelib/formatting-utils'\nimport { BaseComponent } from '../vdom-util'\nimport { RenderHook } from './render-hook'\nimport { buildNavLinkAttrs } from './nav-link'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DayHeaderContentArg } from '../render-hook-misc'\nimport { Dictionary } from '../options'\nimport { CLASS_NAME, renderInner } from './table-cell-util'\n\nexport interface TableDateCellProps {\n date: DateMarker\n dateProfile: DateProfile\n todayRange: DateRange\n colCnt: number\n dayHeaderFormat: DateFormatter\n colSpan?: number\n isSticky?: boolean // TODO: get this outta here somehow\n extraDataAttrs?: Dictionary\n extraHookProps?: Dictionary\n}\n\nexport class TableDateCell extends BaseComponent<TableDateCellProps> { // BAD name for this class now. used in the Header\n render() {\n let { dateEnv, options, theme, viewApi } = this.context\n let { props } = this\n let { date, dateProfile } = props\n let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile)\n\n let classNames = [CLASS_NAME].concat(\n getDayClassNames(dayMeta, theme),\n )\n let text = dateEnv.format(date, props.dayHeaderFormat)\n\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n ? buildNavLinkAttrs(this.context, date)\n : {}\n\n let hookProps: DayHeaderContentArg = {\n date: dateEnv.toDate(date),\n view: viewApi,\n ...props.extraHookProps,\n text,\n ...dayMeta,\n }\n\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.dayHeaderClassNames}\n content={options.dayHeaderContent}\n defaultContent={renderInner}\n didMount={options.dayHeaderDidMount}\n willUnmount={options.dayHeaderWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n role=\"columnheader\"\n className={classNames.concat(customClassNames).join(' ')}\n data-date={!dayMeta.isDisabled ? formatDayString(date) : undefined}\n colSpan={props.colSpan}\n {...props.extraDataAttrs}\n >\n <div className=\"fc-scrollgrid-sync-inner\">\n {!dayMeta.isDisabled && (\n <a\n ref={innerElRef}\n className={[\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ')}\n {...navLinkAttrs}\n >\n {innerContent}\n </a>\n )}\n </div>\n </th>\n )}\n </RenderHook>\n )\n }\n}\n","import { getDayClassNames, DateMeta } from '../component/date-rendering'\nimport { addDays } from '../datelib/marker'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\nimport { BaseComponent } from '../vdom-util'\nimport { RenderHook } from './render-hook'\nimport { Dictionary } from '../options'\nimport { CLASS_NAME, renderInner } from './table-cell-util'\nimport { DayHeaderContentArg } from '../render-hook-misc'\nimport { createFormatter } from '../datelib/formatting'\n\nexport interface TableDowCellProps {\n dow: number\n dayHeaderFormat: DateFormatter\n colSpan?: number\n isSticky?: boolean // TODO: get this outta here somehow\n extraHookProps?: Dictionary\n extraDataAttrs?: Dictionary\n extraClassNames?: string[]\n}\n\nconst WEEKDAY_FORMAT = createFormatter({ weekday: 'long' })\n\nexport class TableDowCell extends BaseComponent<TableDowCellProps> {\n render() {\n let { props } = this\n let { dateEnv, theme, viewApi, options } = this.context\n let date = addDays(new Date(259200000), props.dow) // start with Sun, 04 Jan 1970 00:00:00 GMT\n let dateMeta: DateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false,\n }\n let classNames = [CLASS_NAME].concat(\n getDayClassNames(dateMeta, theme),\n props.extraClassNames || [],\n )\n let text = dateEnv.format(date, props.dayHeaderFormat)\n let hookProps: DayHeaderContentArg = { // TODO: make this public?\n date,\n ...dateMeta,\n view: viewApi,\n ...props.extraHookProps,\n text,\n }\n\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.dayHeaderClassNames}\n content={options.dayHeaderContent}\n defaultContent={renderInner}\n didMount={options.dayHeaderDidMount}\n willUnmount={options.dayHeaderWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n role=\"columnheader\"\n className={classNames.concat(customClassNames).join(' ')}\n colSpan={props.colSpan}\n {...props.extraDataAttrs}\n >\n <div className=\"fc-scrollgrid-sync-inner\">\n <a\n aria-label={dateEnv.format(date, WEEKDAY_FORMAT)}\n className={[\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ')}\n ref={innerElRef}\n >\n {innerContent}\n </a>\n </div>\n </th>\n )}\n </RenderHook>\n )\n }\n}\n","import { DateMarker, addMs, startOfDay, addDays } from './datelib/marker'\nimport { createDuration } from './datelib/duration'\nimport { ViewContext, ViewContextType } from './ViewContext'\nimport { ComponentChildren, Component } from './vdom'\nimport { DateRange } from './datelib/date-range'\nimport { getNow } from './reducers/current-date'\n\nexport interface NowTimerProps {\n unit: string // TODO: add type of unit\n children: (now: DateMarker, todayRange: DateRange) => ComponentChildren\n}\n\ninterface NowTimerState {\n nowDate: DateMarker\n todayRange: DateRange\n}\n\nexport class NowTimer extends Component<NowTimerProps, NowTimerState> {\n static contextType: any = ViewContextType\n context: ViewContext // do this for all components that use the context!!!\n initialNowDate: DateMarker\n initialNowQueriedMs: number\n timeoutId: any\n\n constructor(props: NowTimerProps, context: ViewContext) {\n super(props, context)\n\n this.initialNowDate = getNow(context.options.now, context.dateEnv)\n this.initialNowQueriedMs = new Date().valueOf()\n\n this.state = this.computeTiming().currentState\n }\n\n render() {\n let { props, state } = this\n return props.children(state.nowDate, state.todayRange)\n }\n\n componentDidMount() {\n this.setTimeout()\n }\n\n componentDidUpdate(prevProps: NowTimerProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout()\n this.setTimeout()\n }\n }\n\n componentWillUnmount() {\n this.clearTimeout()\n }\n\n private computeTiming() {\n let { props, context } = this\n let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs)\n let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit)\n let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit))\n let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf()\n\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs)\n\n return {\n currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) } as NowTimerState,\n nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) } as NowTimerState,\n waitMs,\n }\n }\n\n private setTimeout() {\n let { nextState, waitMs } = this.computeTiming()\n\n this.timeoutId = setTimeout(() => {\n this.setState(nextState, () => {\n this.setTimeout()\n })\n }, waitMs)\n }\n\n private clearTimeout() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId)\n }\n }\n}\n\nfunction buildDayRange(date: DateMarker): DateRange { // TODO: make this a general util\n let start = startOfDay(date)\n let end = addDays(start, 1)\n\n return { start, end }\n}\n","import { BaseComponent } from '../vdom-util'\nimport { DateMarker } from '../datelib/marker'\nimport { computeFallbackHeaderFormat } from './table-utils'\nimport { VNode, createElement } from '../vdom'\nimport { TableDateCell } from './TableDateCell'\nimport { TableDowCell } from './TableDowCell'\nimport { NowTimer } from '../NowTimer'\nimport { DateRange } from '../datelib/date-range'\nimport { memoize } from '../util/memoize'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface DayHeaderProps {\n dateProfile: DateProfile\n dates: DateMarker[]\n datesRepDistinctDays: boolean\n renderIntro?: (rowKey: string) => VNode\n}\n\nexport class DayHeader extends BaseComponent<DayHeaderProps> { // TODO: rename to DayHeaderTr?\n createDayHeaderFormatter = memoize(createDayHeaderFormatter)\n\n render() {\n let { context } = this\n let { dates, dateProfile, datesRepDistinctDays, renderIntro } = this.props\n\n let dayHeaderFormat = this.createDayHeaderFormatter(\n context.options.dayHeaderFormat,\n datesRepDistinctDays,\n dates.length,\n )\n\n return (\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <tr role=\"row\">\n {renderIntro && renderIntro('day')}\n {dates.map((date) => (\n datesRepDistinctDays ? (\n <TableDateCell\n key={date.toISOString()}\n date={date}\n dateProfile={dateProfile}\n todayRange={todayRange}\n colCnt={dates.length}\n dayHeaderFormat={dayHeaderFormat}\n />\n ) : (\n <TableDowCell\n key={date.getUTCDay()}\n dow={date.getUTCDay()}\n dayHeaderFormat={dayHeaderFormat}\n />\n )\n ))}\n </tr>\n )}\n </NowTimer>\n )\n }\n}\n\nfunction createDayHeaderFormatter(explicitFormat: DateFormatter, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt)\n}\n","import { DateProfileGenerator } from '../DateProfileGenerator'\nimport { DateMarker, addDays, diffDays } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\n\nexport interface DaySeriesSeg {\n firstIndex: number\n lastIndex: number\n isStart: boolean\n isEnd: boolean\n}\n\nexport class DaySeriesModel {\n cnt: number\n dates: DateMarker[] // whole-day dates for each column. left to right\n indices: number[] // for each day from start, the offset\n\n constructor(range: DateRange, dateProfileGenerator: DateProfileGenerator) {\n let date: DateMarker = range.start\n let { end } = range\n let indices: number[] = []\n let dates: DateMarker[] = []\n let dayIndex = -1\n\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5) // mark that it's between indices\n } else {\n dayIndex += 1\n indices.push(dayIndex)\n dates.push(date)\n }\n date = addDays(date, 1)\n }\n\n this.dates = dates\n this.indices = indices\n this.cnt = dates.length\n }\n\n sliceRange(range: DateRange): DaySeriesSeg | null {\n let firstIndex = this.getDateDayIndex(range.start) // inclusive first index\n let lastIndex = this.getDateDayIndex(addDays(range.end, -1)) // inclusive last index\n\n let clippedFirstIndex = Math.max(0, firstIndex)\n let clippedLastIndex = Math.min(this.cnt - 1, lastIndex)\n\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex) // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex) // in-between ends round to prev cell\n\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex,\n }\n }\n return null\n }\n\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n private getDateDayIndex(date: DateMarker) {\n let { indices } = this\n let dayOffset = Math.floor(diffDays(this.dates[0], date))\n\n if (dayOffset < 0) {\n return indices[0] - 1\n }\n\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1\n }\n\n return indices[dayOffset]\n }\n}\n","import { DaySeriesModel } from './DaySeriesModel'\nimport { DateRange } from '../datelib/date-range'\nimport { DateMarker } from '../datelib/marker'\nimport { Seg } from '../component/DateComponent'\nimport { Dictionary } from '../options'\n\nexport interface DayTableSeg extends Seg {\n row: number\n firstCol: number\n lastCol: number\n}\n\nexport interface DayTableCell {\n key: string // probably just the serialized date, but could be other metadata if this col is specific to another entity\n date: DateMarker\n extraHookProps?: Dictionary\n extraDataAttrs?: Dictionary\n extraClassNames?: string[]\n extraDateSpan?: Dictionary\n}\n\nexport class DayTableModel {\n rowCnt: number\n colCnt: number\n cells: DayTableCell[][]\n headerDates: DateMarker[]\n\n private daySeries: DaySeriesModel\n\n constructor(daySeries: DaySeriesModel, breakOnWeeks: boolean) {\n let { dates } = daySeries\n let daysPerRow\n let firstDay\n let rowCnt\n\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay()\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow)\n } else {\n rowCnt = 1\n daysPerRow = dates.length\n }\n\n this.rowCnt = rowCnt\n this.colCnt = daysPerRow\n this.daySeries = daySeries\n this.cells = this.buildCells()\n this.headerDates = this.buildHeaderDates()\n }\n\n private buildCells() {\n let rows = []\n\n for (let row = 0; row < this.rowCnt; row += 1) {\n let cells = []\n\n for (let col = 0; col < this.colCnt; col += 1) {\n cells.push(\n this.buildCell(row, col),\n )\n }\n\n rows.push(cells)\n }\n\n return rows\n }\n\n private buildCell(row, col): DayTableCell {\n let date = this.daySeries.dates[row * this.colCnt + col]\n return {\n key: date.toISOString(),\n date,\n }\n }\n\n private buildHeaderDates() {\n let dates = []\n\n for (let col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date)\n }\n\n return dates\n }\n\n sliceRange(range: DateRange): DayTableSeg[] {\n let { colCnt } = this\n let seriesSeg = this.daySeries.sliceRange(range)\n let segs: DayTableSeg[] = []\n\n if (seriesSeg) {\n let { firstIndex, lastIndex } = seriesSeg\n let index = firstIndex\n\n while (index <= lastIndex) {\n let row = Math.floor(index / colCnt)\n let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1)\n\n segs.push({\n row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n })\n\n index = nextIndex\n }\n }\n\n return segs\n }\n}\n","import { DateRange } from '../datelib/date-range'\nimport { EventStore } from '../structs/event-store'\nimport { EventUiHash } from '../component/event-ui'\nimport { sliceEventStore, EventRenderRange } from '../component/event-rendering'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Seg, EventSegUiInteractionState } from '../component/DateComponent' // TODO: rename EventSegUiInteractionState, move here\nimport { DateSpan, fabricateEventRange } from '../structs/date-span'\nimport { EventInteractionState } from '../interactions/event-interaction-state'\nimport { Duration } from '../datelib/duration'\nimport { memoize } from '../util/memoize'\nimport { DateMarker, addMs, addDays } from '../datelib/marker'\nimport { CalendarContext } from '../CalendarContext'\nimport { expandRecurring } from '../structs/recurring-event'\n\nexport interface SliceableProps {\n dateSelection: DateSpan\n businessHours: EventStore\n eventStore: EventStore\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n eventSelection: string\n eventUiBases: EventUiHash\n}\n\nexport interface SlicedProps<SegType extends Seg> {\n dateSelectionSegs: SegType[]\n businessHourSegs: SegType[]\n fgEventSegs: SegType[]\n bgEventSegs: SegType[]\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n eventSelection: string\n}\n\nexport abstract class Slicer<SegType extends Seg, ExtraArgs extends any[] = []> {\n private sliceBusinessHours = memoize(this._sliceBusinessHours)\n private sliceDateSelection = memoize(this._sliceDateSpan)\n private sliceEventStore = memoize(this._sliceEventStore)\n private sliceEventDrag = memoize(this._sliceInteraction)\n private sliceEventResize = memoize(this._sliceInteraction)\n\n abstract sliceRange(dateRange: DateRange, ...extraArgs: ExtraArgs): SegType[]\n protected forceDayIfListItem = false // hack\n\n sliceProps(\n props: SliceableProps,\n dateProfile: DateProfile,\n nextDayThreshold: Duration | null,\n context: CalendarContext,\n ...extraArgs: ExtraArgs\n ): SlicedProps<SegType> {\n let { eventUiBases } = props\n let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs)\n\n return {\n dateSelectionSegs: this.sliceDateSelection(props.dateSelection, eventUiBases, context, ...extraArgs),\n businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n eventSelection: props.eventSelection,\n } // TODO: give interactionSegs?\n }\n\n sliceNowDate( // does not memoize\n date: DateMarker,\n context: CalendarContext,\n ...extraArgs: ExtraArgs\n ): SegType[] {\n return this._sliceDateSpan(\n { range: { start: date, end: addMs(date, 1) }, allDay: false }, // add 1 ms, protect against null range\n {},\n context,\n ...extraArgs,\n )\n }\n\n private _sliceBusinessHours(\n businessHours: EventStore,\n dateProfile: DateProfile,\n nextDayThreshold: Duration | null,\n context: CalendarContext,\n ...extraArgs: ExtraArgs\n ): SegType[] {\n if (!businessHours) {\n return []\n }\n\n return this._sliceEventStore(\n expandRecurring(\n businessHours,\n computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n context,\n ),\n {},\n dateProfile,\n nextDayThreshold,\n ...extraArgs,\n ).bg\n }\n\n private _sliceEventStore(\n eventStore: EventStore,\n eventUiBases: EventUiHash,\n dateProfile: DateProfile,\n nextDayThreshold: Duration | null,\n ...extraArgs: ExtraArgs\n ): { bg: SegType[], fg: SegType[] } {\n if (eventStore) {\n let rangeRes = sliceEventStore(\n eventStore,\n eventUiBases,\n computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n nextDayThreshold,\n )\n\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n }\n }\n return { bg: [], fg: [] }\n }\n\n private _sliceInteraction(\n interaction: EventInteractionState,\n eventUiBases: EventUiHash,\n dateProfile: DateProfile,\n nextDayThreshold: Duration | null,\n ...extraArgs: ExtraArgs\n ): EventSegUiInteractionState {\n if (!interaction) {\n return null\n }\n\n let rangeRes = sliceEventStore(\n interaction.mutatedEvents,\n eventUiBases,\n computeActiveRange(dateProfile, Boolean(nextDayThreshold)),\n nextDayThreshold,\n )\n\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n }\n }\n\n private _sliceDateSpan(\n dateSpan: DateSpan,\n eventUiBases: EventUiHash,\n context: CalendarContext,\n ...extraArgs: ExtraArgs\n ): SegType[] {\n if (!dateSpan) {\n return []\n }\n\n let eventRange = fabricateEventRange(dateSpan, eventUiBases, context)\n let segs = this.sliceRange(dateSpan.range, ...extraArgs)\n\n for (let seg of segs) {\n seg.eventRange = eventRange\n }\n\n return segs\n }\n\n /*\n \"complete\" seg means it has component and eventRange\n */\n private sliceEventRanges(\n eventRanges: EventRenderRange[],\n extraArgs: ExtraArgs,\n ): SegType[] {\n let segs: SegType[] = []\n\n for (let eventRange of eventRanges) {\n segs.push(...this.sliceEventRange(eventRange, extraArgs))\n }\n\n return segs\n }\n\n /*\n \"complete\" seg means it has component and eventRange\n */\n private sliceEventRange(\n eventRange: EventRenderRange,\n extraArgs: ExtraArgs,\n ): SegType[] {\n let dateRange = eventRange.range\n\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1),\n }\n }\n\n let segs = this.sliceRange(dateRange, ...extraArgs)\n\n for (let seg of segs) {\n seg.eventRange = eventRange\n seg.isStart = eventRange.isStart && seg.isStart\n seg.isEnd = eventRange.isEnd && seg.isEnd\n }\n\n return segs\n }\n}\n\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile: DateProfile, isComponentAllDay: boolean): DateRange {\n let range = dateProfile.activeRange\n\n if (isComponentAllDay) {\n return range\n }\n\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n }\n}\n","import { SplittableProps, EventUi, isPropsValid, Constraint, EventStore, mergeEventStores, CalendarContext } from '@fullcalendar/common'\nimport { ResourceSplitter } from './common/ResourceSplitter'\n\nexport function isPropsValidWithResources(combinedProps: SplittableProps, context: CalendarContext): boolean {\n let splitter = new ResourceSplitter()\n\n let sets = splitter.splitProps({\n ...combinedProps,\n resourceStore: context.getCurrentData().resourceStore,\n })\n\n for (let resourceId in sets) {\n let props = sets[resourceId]\n\n // merge in event data from the non-resource segment\n if (resourceId && sets['']) { // current segment is not the non-resource one, and there IS a non-resource one\n props = {\n ...props,\n eventStore: mergeEventStores(sets[''].eventStore, props.eventStore),\n eventUiBases: { ...sets[''].eventUiBases, ...props.eventUiBases },\n }\n }\n\n if (!isPropsValid(props, context, { resourceId }, filterConfig.bind(null, resourceId))) {\n return false\n }\n }\n\n return true\n}\n\nfunction filterConfig(resourceId, config: EventUi) {\n return {\n ...config,\n constraints: filterConstraints(resourceId, config.constraints),\n }\n}\n\nfunction filterConstraints(resourceId: string, constraints: Constraint[]) {\n return constraints.map((constraint) => {\n let defs = (constraint as EventStore).defs\n if (defs) { // we are dealing with an EventStore\n // if any of the events define constraints to resources that are NOT this resource,\n // then this resource is unconditionally prohibited, which is what a `false` value does.\n for (let defId in defs) {\n let resourceIds = defs[defId].resourceIds\n if (resourceIds.length && resourceIds.indexOf(resourceId) === -1) { // TODO: use a hash?!!! (for other reasons too)\n return false\n }\n }\n }\n\n return constraint\n })\n}\n","import { createElement, ComponentChildren, Ref } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\nimport { CssDimValue, ScrollerLike } from './util'\n\nexport type OverflowValue = 'auto' | 'hidden' | 'scroll' | 'visible'\n\nexport interface ScrollerProps {\n overflowX: OverflowValue\n overflowY: OverflowValue\n overcomeLeft?: number\n overcomeRight?: number\n overcomeBottom?: number\n maxHeight?: CssDimValue\n liquid?: boolean\n liquidIsAbsolute?: boolean\n children?: ComponentChildren\n elRef?: Ref<HTMLElement>\n}\n\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/\n\nexport class Scroller extends BaseComponent<ScrollerProps> implements ScrollerLike {\n private el: HTMLElement // TODO: just use this.base?\n\n render() {\n let { props } = this\n let { liquid, liquidIsAbsolute } = props\n let isAbsolute = liquid && liquidIsAbsolute\n let className = ['fc-scroller']\n\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute')\n } else {\n className.push('fc-scroller-liquid')\n }\n }\n\n return (\n <div\n ref={this.handleEl}\n className={className.join(' ')}\n style={{\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n maxHeight: props.maxHeight || '',\n }}\n >\n {props.children}\n </div>\n )\n }\n\n handleEl = (el: HTMLElement) => {\n this.el = el\n setRef(this.props.elRef, el)\n }\n\n needsXScrolling() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false\n }\n\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n\n let { el } = this\n let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth()\n let { children } = el\n\n for (let i = 0; i < children.length; i += 1) {\n let childEl = children[i]\n\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true\n }\n }\n\n return false\n }\n\n needsYScrolling() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false\n }\n\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n\n let { el } = this\n let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth()\n let { children } = el\n\n for (let i = 0; i < children.length; i += 1) {\n let childEl = children[i]\n\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true\n }\n }\n\n return false\n }\n\n getXScrollbarWidth() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0\n }\n return this.el.offsetHeight - this.el.clientHeight // only works because we guarantee no borders. TODO: add to CSS with important?\n }\n\n getYScrollbarWidth() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0\n }\n return this.el.offsetWidth - this.el.clientWidth // only works because we guarantee no borders. TODO: add to CSS with important?\n }\n}\n","import { hashValuesToArray, collectFromHash } from './object'\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nexport class RefMap<RefType> {\n public currentMap: { [key: string]: RefType } = {}\n private depths: { [key: string]: number } = {}\n private callbackMap: { [key: string]: (val: RefType | null) => void } = {}\n\n constructor(public masterCallback?: (val: RefType | null, key: string) => void) {\n }\n\n createRef(key: string | number) {\n let refCallback = this.callbackMap[key]\n\n if (!refCallback) {\n refCallback = this.callbackMap[key] = (val: RefType | null) => {\n this.handleValue(val, String(key))\n }\n }\n\n return refCallback\n }\n\n handleValue = (val: RefType | null, key: string) => { // bind in case users want to pass it around\n let { depths, currentMap } = this\n let removed = false\n let added = false\n\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = (key in currentMap)\n\n currentMap[key] = val\n depths[key] = (depths[key] || 0) + 1\n added = true\n } else {\n depths[key] -= 1\n\n if (!depths[key]) {\n delete currentMap[key]\n delete this.callbackMap[key]\n removed = true\n }\n }\n\n if (this.masterCallback) {\n if (removed) {\n this.masterCallback(null, String(key))\n }\n if (added) {\n this.masterCallback(val, String(key))\n }\n }\n }\n\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n collect(\n startIndex?: number,\n endIndex?: number,\n step?: number,\n ) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step)\n }\n\n getAll(): RefType[] { // returns in no partical order!\n return hashValuesToArray(this.currentMap)\n }\n}\n","import { VNode, createElement, Ref } from '../vdom'\nimport { findElements } from '../util/dom-manip'\nimport { ViewContext } from '../ViewContext'\nimport { computeSmallestCellWidth } from '../util/misc'\nimport { isPropsEqual } from '../util/object'\nimport { isArraysEqual } from '../util/array'\nimport { BaseOptionsRefined } from '../options'\n\nexport type CssDimValue = string | number // TODO: move to more general file\n\nexport interface ColProps {\n width?: CssDimValue\n minWidth?: CssDimValue\n span?: number\n}\n\nexport interface SectionConfig {\n outerContent?: VNode\n type: 'body' | 'header' | 'footer'\n className?: string\n maxHeight?: number\n liquid?: boolean\n expandRows?: boolean // TODO: how to get a bottom rule?\n syncRowHeights?: boolean // yuck\n isSticky?: boolean\n}\n\nexport type ChunkConfigContent = (contentProps: ChunkContentCallbackArgs) => VNode\nexport type ChunkConfigRowContent = VNode | ChunkConfigContent\n\nexport interface ChunkConfig {\n outerContent?: VNode\n content?: ChunkConfigContent\n rowContent?: ChunkConfigRowContent\n scrollerElRef?: Ref<HTMLDivElement>\n elRef?: Ref<HTMLTableCellElement>\n tableClassName?: string\n}\n\nexport interface ChunkContentCallbackArgs { // TODO: util for wrapping tables!?\n tableColGroupNode: VNode\n tableMinWidth: CssDimValue\n clientWidth: number | null // important to know whether 0 or not-yet-determined. for headless testing\n clientHeight: number | null //\n expandRows: boolean\n syncRowHeights: boolean\n rowSyncHeights: number[]\n reportRowHeightChange: (rowEl: HTMLElement, isStable: boolean) => void\n}\n\nexport function computeShrinkWidth(chunkEls: HTMLElement[]) { // all in same COL!\n let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink')\n let largestWidth = 0\n\n for (let shrinkCell of shrinkCells) {\n largestWidth = Math.max(\n largestWidth,\n computeSmallestCellWidth(shrinkCell),\n )\n }\n\n return Math.ceil(largestWidth) // <table> elements work best with integers. round up to ensure contents fits\n}\n\nexport interface ScrollerLike { // have scrollers implement?\n needsYScrolling(): boolean\n needsXScrolling(): boolean\n}\n\nexport function getSectionHasLiquidHeight(props: { liquid: boolean }, sectionConfig: SectionConfig) {\n return props.liquid && sectionConfig.liquid // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\n\nexport function getAllowYScrolling(props: { liquid: boolean }, sectionConfig: SectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig) // if the section is liquid height, it might condense enough to require scrollbars\n}\n\n// TODO: ONLY use `arg`. force out internal function to use same API\nexport function renderChunkContent(\n sectionConfig: SectionConfig,\n chunkConfig: ChunkConfig,\n arg: ChunkContentCallbackArgs,\n isHeader: boolean,\n) {\n let { expandRows } = arg\n\n let content: VNode = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement(\n 'table',\n {\n role: 'presentation',\n className: [\n chunkConfig.tableClassName,\n sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n ].join(' '),\n style: {\n minWidth: arg.tableMinWidth, // because colMinWidths arent enough\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '', // css `height` on a <table> serves as a min-height\n },\n },\n arg.tableColGroupNode,\n createElement(\n isHeader ? 'thead' : 'tbody',\n {\n role: 'presentation',\n },\n typeof chunkConfig.rowContent === 'function'\n ? chunkConfig.rowContent(arg)\n : chunkConfig.rowContent,\n ),\n )\n\n return content\n}\n\nexport function isColPropsEqual(cols0: ColProps[], cols1: ColProps[]) {\n return isArraysEqual(cols0, cols1, isPropsEqual)\n}\n\nexport function renderMicroColGroup(cols: ColProps[], shrinkWidth?: number): VNode {\n let colNodes: VNode[] = []\n\n /*\n for ColProps with spans, it would have been great to make a single <col span=\"\">\n HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n SOLUTION: making individual <col> elements makes Chrome behave.\n */\n for (let colProps of cols) {\n let span = colProps.span || 1\n\n for (let i = 0; i < span; i += 1) {\n colNodes.push(\n <col\n style={{\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n minWidth: colProps.minWidth || '',\n }}\n />,\n )\n }\n }\n\n return createElement('colgroup', {}, ...colNodes)\n}\n\nexport function sanitizeShrinkWidth(shrinkWidth?: number) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth\n}\n\nexport function hasShrinkWidth(cols: ColProps[]) {\n for (let col of cols) {\n if (col.width === 'shrink') {\n return true\n }\n }\n\n return false\n}\n\nexport function getScrollGridClassNames(liquid: boolean, context: ViewContext) {\n let classNames = [\n 'fc-scrollgrid',\n context.theme.getClass('table'),\n ]\n\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid')\n }\n\n return classNames\n}\n\nexport function getSectionClassNames(sectionConfig: SectionConfig, wholeTableVGrow: boolean) {\n let classNames = [\n 'fc-scrollgrid-section',\n `fc-scrollgrid-section-${sectionConfig.type}`,\n sectionConfig.className, // used?\n ]\n\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid')\n }\n\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky')\n }\n\n return classNames\n}\n\nexport function renderScrollShim(arg: ChunkContentCallbackArgs) {\n return (\n <div\n className=\"fc-scrollgrid-sticky-shim\"\n style={{\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth,\n }}\n />\n )\n}\n\nexport function getStickyHeaderDates(options: BaseOptionsRefined) {\n let { stickyHeaderDates } = options\n\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto'\n }\n\n return stickyHeaderDates\n}\n\nexport function getStickyFooterScrollbar(options: BaseOptionsRefined) {\n let { stickyFooterScrollbar } = options\n\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto'\n }\n\n return stickyFooterScrollbar\n}\n","import { VNode, createElement, Fragment } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\nimport { Scroller, OverflowValue } from './Scroller'\nimport { RefMap } from '../util/RefMap'\nimport {\n ColProps, SectionConfig, renderMicroColGroup, computeShrinkWidth, getScrollGridClassNames, getSectionClassNames, getAllowYScrolling,\n renderChunkContent, getSectionHasLiquidHeight, ChunkConfig, hasShrinkWidth, CssDimValue,\n isColPropsEqual,\n} from './util'\nimport { getCanVGrowWithinCell } from '../util/table-styling'\nimport { memoize } from '../util/memoize'\nimport { isPropsEqual } from '../util/object'\nimport { getScrollbarWidths } from '../util/scrollbar-width'\n\nexport interface SimpleScrollGridProps {\n cols: ColProps[]\n sections: SimpleScrollGridSection[]\n liquid: boolean // liquid *height*\n collapsibleWidth: boolean // can ALL sections be fully collapsed in width?\n height?: CssDimValue // TODO: give to real ScrollGrid\n}\n\nexport interface SimpleScrollGridSection extends SectionConfig {\n key: string\n chunk?: ChunkConfig\n}\n\ninterface SimpleScrollGridState {\n shrinkWidth: number | null\n forceYScrollbars: boolean\n scrollerClientWidths: { [key: string]: number }\n scrollerClientHeights: { [key: string]: number }\n}\n\nexport class SimpleScrollGrid extends BaseComponent<SimpleScrollGridProps, SimpleScrollGridState> {\n processCols = memoize((a) => a, isColPropsEqual) // so we get same `cols` props every time\n\n // yucky to memoize VNodes, but much more efficient for consumers\n renderMicroColGroup: typeof renderMicroColGroup = memoize(renderMicroColGroup)\n\n scrollerRefs = new RefMap<Scroller>()\n scrollerElRefs = new RefMap<HTMLElement>(this._handleScrollerEl.bind(this))\n\n state: SimpleScrollGridState = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n }\n\n render(): VNode {\n let { props, state, context } = this\n let sectionConfigs = props.sections || []\n let cols = this.processCols(props.cols)\n\n let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth)\n let classNames = getScrollGridClassNames(props.liquid, context)\n\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible')\n }\n\n // TODO: make DRY\n let configCnt = sectionConfigs.length\n let configI = 0\n let currentConfig: SimpleScrollGridSection\n let headSectionNodes: VNode[] = []\n let bodySectionNodes: VNode[] = []\n let footSectionNodes: VNode[] = []\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true))\n configI += 1\n }\n\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n let isBuggy = !getCanVGrowWithinCell()\n\n const roleAttrs = { role: 'rowgroup' }\n\n return createElement(\n 'table',\n {\n role: 'grid',\n className: classNames.join(' '),\n style: { height: props.height },\n },\n Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes),\n Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes),\n Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes),\n isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes),\n )\n }\n\n renderSection(sectionConfig: SimpleScrollGridSection, microColGroupNode: VNode, isHeader: boolean) {\n if ('outerContent' in sectionConfig) {\n return (\n <Fragment key={sectionConfig.key}>\n {sectionConfig.outerContent}\n </Fragment>\n )\n }\n\n return (\n <tr\n key={sectionConfig.key}\n role=\"presentation\"\n className={getSectionClassNames(sectionConfig, this.props.liquid).join(' ')}\n >\n {this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)}\n </tr>\n )\n }\n\n renderChunkTd(\n sectionConfig: SimpleScrollGridSection,\n microColGroupNode: VNode,\n chunkConfig: ChunkConfig,\n isHeader: boolean,\n ): createElement.JSX.Element {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent\n }\n\n let { props } = this\n let { forceYScrollbars, scrollerClientWidths, scrollerClientHeights } = this.state\n\n let needsYScrolling = getAllowYScrolling(props, sectionConfig) // TODO: do lazily. do in section config?\n let isLiquid = getSectionHasLiquidHeight(props, sectionConfig)\n\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n let overflowY: OverflowValue =\n !props.liquid ? 'visible' :\n forceYScrollbars ? 'scroll' :\n !needsYScrolling ? 'hidden' :\n 'auto'\n\n let sectionKey = sectionConfig.key\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: () => {},\n }, isHeader)\n\n return createElement(\n isHeader ? 'th' : 'td',\n {\n ref: chunkConfig.elRef as any,\n role: 'presentation',\n },\n <div className={`fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}`}>\n <Scroller\n ref={this.scrollerRefs.createRef(sectionKey)}\n elRef={this.scrollerElRefs.createRef(sectionKey)}\n overflowY={overflowY}\n overflowX={!props.liquid ? 'visible' : 'hidden' /* natural height? */}\n maxHeight={sectionConfig.maxHeight}\n liquid={isLiquid}\n liquidIsAbsolute // because its within a harness\n >\n {content}\n </Scroller>\n </div>,\n )\n }\n\n _handleScrollerEl(scrollerEl: HTMLElement | null, key: string) {\n let section = getSectionByKey(this.props.sections, key)\n\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl)\n }\n }\n\n // TODO: can do a really simple print-view. dont need to join rows\n handleSizing = () => {\n this.safeSetState({\n shrinkWidth: this.computeShrinkWidth(), // will create each chunk's <colgroup>. TODO: precompute hasShrinkWidth\n ...this.computeScrollerDims(),\n })\n }\n\n componentDidMount() {\n this.handleSizing()\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate() {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing()\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n }\n\n computeShrinkWidth() {\n return hasShrinkWidth(this.props.cols)\n ? computeShrinkWidth(this.scrollerElRefs.getAll())\n : 0\n }\n\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths()\n let { scrollerRefs, scrollerElRefs } = this\n\n let forceYScrollbars = false\n let scrollerClientWidths: { [index: string]: number } = {}\n let scrollerClientHeights: { [index: string]: number } = {}\n\n for (let sectionKey in scrollerRefs.currentMap) {\n let scroller = scrollerRefs.currentMap[sectionKey]\n\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true\n break\n }\n }\n\n for (let section of this.props.sections) {\n let sectionKey = section.key\n let scrollerEl = scrollerElRefs.currentMap[sectionKey]\n\n if (scrollerEl) {\n let harnessEl = scrollerEl.parentNode as HTMLElement // TODO: weird way to get this. need harness b/c doesn't include table borders\n\n scrollerClientWidths[sectionKey] = Math.floor(\n harnessEl.getBoundingClientRect().width - (\n forceYScrollbars\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n\n scrollerClientHeights[sectionKey] = Math.floor(\n harnessEl.getBoundingClientRect().height, // never has horizontal scrollbars\n )\n }\n }\n\n return { forceYScrollbars, scrollerClientWidths, scrollerClientHeights }\n }\n}\n\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n})\n\nfunction getSectionByKey(sections: SimpleScrollGridSection[], key: string): SimpleScrollGridSection | null {\n for (let section of sections) {\n if (section.key === key) {\n return section\n }\n }\n\n return null\n}\n","import { Seg } from '../component/DateComponent'\nimport { ComponentChildren, createElement, Ref, createRef, RefObject } from '../vdom'\nimport { EventApi } from '../api/EventApi'\nimport {\n computeSegDraggable,\n computeSegStartResizable,\n computeSegEndResizable,\n setElSeg,\n EventContentArg,\n getEventClassNames,\n} from '../component/event-rendering'\nimport { RenderHook } from './render-hook'\nimport { BaseComponent } from '../vdom-util'\n\nexport interface MinimalEventProps {\n seg: Seg\n isDragging: boolean // rename to isMirrorDragging? make optional?\n isResizing: boolean // rename to isMirrorResizing? make optional?\n isDateSelecting: boolean // rename to isMirrorDateSelecting? make optional?\n isSelected: boolean\n isPast: boolean\n isFuture: boolean\n isToday: boolean\n}\n\nexport interface EventRootProps extends MinimalEventProps {\n timeText: string\n disableDragging?: boolean\n disableResizing?: boolean\n defaultContent: (hookProps: EventContentArg) => ComponentChildren\n children: (\n rootElRef: Ref<any>,\n classNames: string[],\n innerElRef: Ref<any>,\n innerContent: ComponentChildren,\n hookProps: EventContentArg\n ) => ComponentChildren\n}\n\nexport class EventRoot extends BaseComponent<EventRootProps> {\n elRef: RefObject<HTMLElement> = createRef<HTMLElement>()\n\n render() {\n let { props, context } = this\n let { options } = context\n let { seg } = props\n let { eventRange } = seg\n let { ui } = eventRange\n\n let hookProps: EventContentArg = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg, context),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast), // TODO: don't cast. getDateMeta does it\n isFuture: Boolean(props.isFuture), // TODO: don't cast. getDateMeta does it\n isToday: Boolean(props.isToday), // TODO: don't cast. getDateMeta does it\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing),\n }\n\n let standardClassNames = getEventClassNames(hookProps).concat(ui.classNames)\n\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.eventClassNames}\n content={options.eventContent}\n defaultContent={props.defaultContent}\n didMount={options.eventDidMount}\n willUnmount={options.eventWillUnmount}\n elRef={this.elRef}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => props.children(\n rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps,\n )}\n </RenderHook>\n )\n }\n\n componentDidMount() {\n setElSeg(this.elRef.current, this.props.seg)\n }\n\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n componentDidUpdate(prevProps: EventRootProps) {\n let { seg } = this.props\n\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg)\n }\n }\n}\n","import { ComponentChildren, createElement, Fragment } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { buildSegTimeText, EventContentArg, getSegAnchorAttrs } from '../component/event-rendering'\nimport { EventRoot, MinimalEventProps } from './EventRoot'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface StandardEventProps extends MinimalEventProps {\n extraClassNames: string[]\n defaultTimeFormat: DateFormatter\n defaultDisplayEventTime?: boolean // default true\n defaultDisplayEventEnd?: boolean // default true\n disableDragging?: boolean // default false\n disableResizing?: boolean // default false\n defaultContent?: (hookProps: EventContentArg) => ComponentChildren // not used by anyone yet\n}\n\n// should not be a purecomponent\nexport class StandardEvent extends BaseComponent<StandardEventProps> {\n render() {\n let { props, context } = this\n let { seg } = props\n let timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat\n let timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n props.defaultDisplayEventTime,\n props.defaultDisplayEventEnd,\n )\n\n return (\n <EventRoot\n seg={seg}\n timeText={timeText}\n disableDragging={props.disableDragging}\n disableResizing={props.disableResizing}\n defaultContent={props.defaultContent || renderInnerContent}\n isDragging={props.isDragging}\n isResizing={props.isResizing}\n isDateSelecting={props.isDateSelecting}\n isSelected={props.isSelected}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n >\n {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n <a\n className={props.extraClassNames.concat(classNames).join(' ')}\n style={{\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor,\n }}\n ref={rootElRef}\n {...getSegAnchorAttrs(seg, context)}\n >\n <div className=\"fc-event-main\" ref={innerElRef} style={{ color: hookProps.textColor }}>\n {innerContent}\n </div>\n {hookProps.isStartResizable &&\n <div className=\"fc-event-resizer fc-event-resizer-start\" />}\n {hookProps.isEndResizable &&\n <div className=\"fc-event-resizer fc-event-resizer-end\" />}\n </a>\n )}\n </EventRoot>\n )\n }\n}\n\nfunction renderInnerContent(innerProps: EventContentArg) {\n return (\n <div className=\"fc-event-main-frame\">\n {innerProps.timeText && (\n <div className=\"fc-event-time\">{innerProps.timeText}</div>\n )}\n <div className=\"fc-event-title-container\">\n <div className=\"fc-event-title fc-sticky\">\n {innerProps.event.title || <Fragment> </Fragment>}\n </div>\n </div>\n </div>\n )\n}\n","import { RenderHook, RenderHookPropsChildren, MountArg } from './render-hook'\nimport { DateMarker } from '../datelib/marker'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { createElement } from '../vdom'\nimport { ViewApi } from '../ViewApi'\n\nexport interface NowIndicatorRootProps {\n isAxis: boolean\n date: DateMarker\n children: RenderHookPropsChildren\n}\n\nexport interface NowIndicatorContentArg {\n isAxis: boolean\n date: Date\n view: ViewApi\n}\n\nexport type NowIndicatorMountArg = MountArg<NowIndicatorContentArg>\n\nexport const NowIndicatorRoot = (props: NowIndicatorRootProps) => (\n <ViewContextType.Consumer>\n {(context: ViewContext) => {\n let { options } = context\n let hookProps: NowIndicatorContentArg = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi,\n }\n\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.nowIndicatorClassNames}\n content={options.nowIndicatorContent}\n didMount={options.nowIndicatorDidMount}\n willUnmount={options.nowIndicatorWillUnmount}\n >\n {props.children}\n </RenderHook>\n )\n }}\n </ViewContextType.Consumer>\n)\n","import { Ref, ComponentChildren, createElement } from '../vdom'\nimport { DateMarker } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\nimport { getDateMeta, DateMeta } from '../component/date-rendering'\nimport { createFormatter } from '../datelib/formatting'\nimport { ContentHook } from './render-hook'\nimport { ViewApi } from '../ViewApi'\nimport { BaseComponent } from '../vdom-util'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Dictionary } from '../options'\nimport { DateEnv } from '../datelib/env'\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' })\n\nexport interface DayCellContentProps {\n date: DateMarker\n dateProfile: DateProfile\n todayRange: DateRange\n showDayNumber?: boolean // defaults to false\n extraHookProps?: Dictionary\n defaultContent?: (hookProps: DayCellContentArg) => ComponentChildren\n children: (\n innerElRef: Ref<any>,\n innerContent: ComponentChildren\n ) => ComponentChildren\n}\n\nexport interface DayCellContentArg extends DateMeta {\n date: DateMarker // localized\n view: ViewApi\n dayNumberText: string\n [extraProp: string]: any // so can include a resource\n}\n\nexport interface DayCellHookPropsInput {\n date: DateMarker // generic\n dateProfile: DateProfile\n todayRange: DateRange\n dateEnv: DateEnv\n viewApi: ViewApi\n showDayNumber?: boolean // defaults to false\n extraProps?: Dictionary // so can include a resource\n}\n\nexport class DayCellContent extends BaseComponent<DayCellContentProps> {\n render() {\n let { props, context } = this\n let { options } = context\n let hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n })\n\n return (\n <ContentHook\n hookProps={hookProps}\n content={options.dayCellContent}\n defaultContent={props.defaultContent}\n >\n {props.children}\n </ContentHook>\n )\n }\n}\n\nexport function refineDayCellHookProps(raw: DayCellHookPropsInput): DayCellContentArg {\n let { date, dateEnv } = raw\n let dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile)\n\n return {\n date: dateEnv.toDate(date),\n view: raw.viewApi,\n ...dayMeta,\n dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '',\n ...raw.extraProps,\n }\n}\n","import { Ref, ComponentChildren, createElement } from '../vdom'\nimport { DateMarker } from '../datelib/marker'\nimport { DateRange } from '../datelib/date-range'\nimport { getDayClassNames, DateMeta } from '../component/date-rendering'\nimport { formatDayString } from '../datelib/formatting-utils'\nimport { buildClassNameNormalizer, MountHook, MountArg } from './render-hook'\nimport { ViewApi } from '../ViewApi'\nimport { BaseComponent } from '../vdom-util'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { memoizeObjArg } from '../util/memoize'\nimport { Dictionary } from '../options'\nimport { refineDayCellHookProps } from './DayCellContent'\n\nexport interface DayCellContentArg extends DateMeta {\n date: DateMarker // localized\n view: ViewApi\n dayNumberText: string\n [extraProp: string]: any // so can include a resource\n}\nexport type DayCellMountArg = MountArg<DayCellContentArg>\n\nexport interface DayCellRootProps {\n elRef?: Ref<any>\n date: DateMarker\n dateProfile: DateProfile\n todayRange: DateRange\n showDayNumber?: boolean // defaults to false\n extraHookProps?: Dictionary\n children: (\n rootElRef: Ref<any>,\n classNames: string[],\n rootDataAttrs,\n isDisabled: boolean\n ) => ComponentChildren\n}\n\nexport class DayCellRoot extends BaseComponent<DayCellRootProps> {\n refineHookProps = memoizeObjArg(refineDayCellHookProps)\n normalizeClassNames = buildClassNameNormalizer<DayCellContentArg>()\n\n render() {\n let { props, context } = this\n let { options } = context\n let hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n })\n\n let classNames = getDayClassNames(hookProps, context.theme).concat(\n hookProps.isDisabled\n ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps),\n )\n\n let dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date),\n }\n\n return (\n <MountHook\n hookProps={hookProps}\n didMount={options.dayCellDidMount}\n willUnmount={options.dayCellWillUnmount}\n elRef={props.elRef}\n >\n {(rootElRef) => props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled)}\n </MountHook>\n )\n }\n}\n","import { createElement } from '../vdom'\nimport { EventRoot } from './EventRoot'\nimport { Seg } from '../component/DateComponent'\nimport { EventContentArg } from '../component/event-rendering'\n\nexport function renderFill(fillType: string) {\n return (\n <div className={`fc-${fillType}`} />\n )\n}\n\nexport interface BgEventProps {\n seg: Seg\n isPast: boolean\n isFuture: boolean\n isToday: boolean\n}\n\nexport const BgEvent = (props: BgEventProps) => (\n <EventRoot\n defaultContent={renderInnerContent}\n seg={props.seg /* uselesss i think */}\n timeText=\"\"\n disableDragging\n disableResizing\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={false}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n >\n {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n <div\n ref={rootElRef}\n className={['fc-bg-event'].concat(classNames).join(' ')}\n style={{\n backgroundColor: hookProps.backgroundColor,\n }}\n >\n {innerContent}\n </div>\n )}\n </EventRoot>\n)\n\nfunction renderInnerContent(props: EventContentArg) {\n let { title } = props.event\n\n return title && (\n <div className=\"fc-event-title\">{props.event.title}</div>\n )\n}\n","import { ViewContext, ViewContextType } from '../ViewContext'\nimport { DateMarker } from '../datelib/marker'\nimport { RenderHook, RenderHookPropsChildren, MountArg } from './render-hook'\nimport { createElement } from '../vdom'\nimport { DateFormatter } from '../datelib/DateFormatter'\n\nexport interface WeekNumberRootProps {\n date: DateMarker\n defaultFormat: DateFormatter\n children: RenderHookPropsChildren\n}\n\nexport interface WeekNumberContentArg {\n num: number\n text: string\n date: Date\n}\nexport type WeekNumberMountArg = MountArg<WeekNumberContentArg>\n\nexport const WeekNumberRoot = (props: WeekNumberRootProps) => (\n <ViewContextType.Consumer>\n {(context: ViewContext) => {\n let { dateEnv, options } = context\n let { date } = props\n let format = options.weekNumberFormat || props.defaultFormat\n let num = dateEnv.computeWeekNumber(date) // TODO: somehow use for formatting as well?\n let text = dateEnv.format(date, format)\n let hookProps: WeekNumberContentArg = { num, text, date }\n\n return (\n <RenderHook<WeekNumberContentArg> // why isn't WeekNumberContentArg being auto-detected?\n hookProps={hookProps}\n classNames={options.weekNumberClassNames}\n content={options.weekNumberContent}\n defaultContent={renderInner}\n didMount={options.weekNumberDidMount}\n willUnmount={options.weekNumberWillUnmount}\n >\n {props.children}\n </RenderHook>\n )\n }}\n </ViewContextType.Consumer>\n)\n\nfunction renderInner(innerProps) {\n return innerProps.text\n}\n","import { Dictionary } from '../options'\nimport { computeClippedClientRect } from '../util/dom-geom'\nimport { applyStyle, elementClosest, getEventTargetViaRoot, getUniqueDomId } from '../util/dom-manip'\nimport { createElement, ComponentChildren, Ref, createPortal } from '../vdom'\nimport { BaseComponent, setRef } from '../vdom-util'\n\nexport interface PopoverProps {\n elRef?: Ref<HTMLElement>\n id: string\n title: string\n extraClassNames?: string[]\n extraAttrs?: Dictionary\n parentEl: HTMLElement\n alignmentEl: HTMLElement\n alignGridTop?: boolean\n children?: ComponentChildren\n onClose?: () => void\n}\n\nconst PADDING_FROM_VIEWPORT = 10\n\nexport class Popover extends BaseComponent<PopoverProps> {\n private rootEl: HTMLElement\n state = {\n titleId: getUniqueDomId(),\n }\n\n render() {\n let { theme, options } = this.context\n let { props, state } = this\n let classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(\n props.extraClassNames || [],\n )\n\n return createPortal(\n <div\n id={props.id}\n className={classNames.join(' ')}\n aria-labelledby={state.titleId}\n {...props.extraAttrs}\n ref={this.handleRootEl}\n >\n <div className={'fc-popover-header ' + theme.getClass('popoverHeader')}>\n <span className=\"fc-popover-title\" id={state.titleId}>\n {props.title}\n </span>\n <span\n className={'fc-popover-close ' + theme.getIconClass('close')}\n title={options.closeHint}\n onClick={this.handleCloseClick}\n />\n </div>\n <div className={'fc-popover-body ' + theme.getClass('popoverContent')}>\n {props.children}\n </div>\n </div>,\n props.parentEl,\n )\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n document.addEventListener('keydown', this.handleDocumentKeyDown)\n this.updateSize()\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n document.removeEventListener('keydown', this.handleDocumentKeyDown)\n }\n\n handleRootEl = (el: HTMLElement | null) => {\n this.rootEl = el\n\n if (this.props.elRef) {\n setRef(this.props.elRef, el)\n }\n }\n\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n handleDocumentMouseDown = (ev) => {\n // only hide the popover if the click happened outside the popover\n const target = getEventTargetViaRoot(ev) as HTMLElement\n if (!this.rootEl.contains(target)) {\n this.handleCloseClick()\n }\n }\n\n handleDocumentKeyDown = (ev) => {\n if (ev.key === 'Escape') {\n this.handleCloseClick()\n }\n }\n\n handleCloseClick = () => {\n let { onClose } = this.props\n if (onClose) {\n onClose()\n }\n }\n\n private updateSize() {\n let { isRtl } = this.context\n let { alignmentEl, alignGridTop } = this.props\n let { rootEl } = this\n\n let alignmentRect = computeClippedClientRect(alignmentEl)\n if (alignmentRect) {\n let popoverDims = rootEl.getBoundingClientRect()\n\n // position relative to viewport\n let popoverTop = alignGridTop\n ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n : alignmentRect.top\n let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left\n\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT)\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width)\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT)\n\n let origin = rootEl.offsetParent.getBoundingClientRect()\n applyStyle(rootEl, {\n top: popoverTop - origin.top,\n left: popoverLeft - origin.left,\n })\n }\n }\n}\n","import { DateComponent } from '../component/DateComponent'\nimport { DateRange } from '../datelib/date-range'\nimport { DateMarker } from '../datelib/marker'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Hit } from '../interactions/hit'\nimport { Dictionary } from '../options'\nimport { createElement, ComponentChildren } from '../vdom'\nimport { DayCellContent } from './DayCellContent'\nimport { DayCellRoot } from './DayCellRoot'\nimport { Popover } from './Popover'\n\nexport interface MorePopoverProps {\n id: string\n startDate: DateMarker\n endDate: DateMarker\n dateProfile: DateProfile\n parentEl: HTMLElement\n alignmentEl: HTMLElement\n alignGridTop?: boolean\n todayRange: DateRange\n extraDateSpan: Dictionary\n children: ComponentChildren\n onClose?: () => void\n}\n\nexport class MorePopover extends DateComponent<MorePopoverProps> {\n rootEl: HTMLElement\n\n render() {\n let { options, dateEnv } = this.context\n let { props } = this\n let { startDate, todayRange, dateProfile } = props\n let title = dateEnv.format(startDate, options.dayPopoverFormat)\n return (\n <DayCellRoot date={startDate} dateProfile={dateProfile} todayRange={todayRange} elRef={this.handleRootEl}>\n {(rootElRef, dayClassNames, dataAttrs) => (\n <Popover\n elRef={rootElRef}\n id={props.id}\n title={title}\n extraClassNames={['fc-more-popover'].concat(dayClassNames)}\n extraAttrs={dataAttrs /* TODO: make these time-based when not whole-day? */}\n parentEl={props.parentEl}\n alignmentEl={props.alignmentEl}\n alignGridTop={props.alignGridTop}\n onClose={props.onClose}\n >\n <DayCellContent date={startDate} dateProfile={dateProfile} todayRange={todayRange}>\n {(innerElRef, innerContent) => (\n innerContent &&\n <div className=\"fc-more-popover-misc\" ref={innerElRef}>{innerContent}</div>\n )}\n </DayCellContent>\n {props.children}\n </Popover>\n )}\n </DayCellRoot>\n )\n }\n\n handleRootEl = (rootEl: HTMLDivElement | null) => {\n this.rootEl = rootEl\n if (rootEl) {\n this.context.registerInteractiveComponent(this, {\n el: rootEl,\n useEventCenter: false,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit {\n let { rootEl, props } = this\n\n if (\n positionLeft >= 0 && positionLeft < elWidth &&\n positionTop >= 0 && positionTop < elHeight\n ) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: {\n allDay: true,\n range: {\n start: props.startDate,\n end: props.endDate,\n },\n ...props.extraDateSpan,\n },\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight,\n },\n layer: 1, // important when comparing with hits from other components\n }\n }\n\n return null\n }\n}\n","import { EventApi } from '../api/EventApi'\nimport { Seg } from '../component/DateComponent'\nimport { DateRange } from '../datelib/date-range'\nimport { addDays, DateMarker } from '../datelib/marker'\nimport { DateProfile } from '../DateProfileGenerator'\nimport { Dictionary } from '../options'\nimport { elementClosest, getUniqueDomId } from '../util/dom-manip'\nimport { formatWithOrdinals } from '../util/misc'\nimport { ComponentChildren, createElement, createRef, Fragment, Ref, RefObject, VNode } from '../vdom'\nimport { BaseComponent } from '../vdom-util'\nimport { ViewApi } from '../ViewApi'\nimport { ViewContext, ViewContextType } from '../ViewContext'\nimport { MorePopover } from './MorePopover'\nimport { MountArg, RenderHook } from './render-hook'\n\nexport type MoreLinkChildren = (\n rootElRef: Ref<any>,\n classNames: string[],\n innerElRef: Ref<any>,\n innerContent: ComponentChildren,\n handleClick: (ev: MouseEvent) => void,\n title: string, // for a11y\n isExpanded: boolean,\n popoverId: string,\n) => ComponentChildren\n\nexport interface MoreLinkRootProps { // what the MoreLinkRoot component receives\n dateProfile: DateProfile\n todayRange: DateRange\n allDayDate: DateMarker | null\n moreCnt: number // can't always derive from hiddenSegs. some hiddenSegs might be due to lack of dimensions\n allSegs: Seg[]\n hiddenSegs: Seg[]\n extraDateSpan?: Dictionary\n alignmentElRef: RefObject<HTMLElement> // for popover\n alignGridTop?: boolean // for popover\n topAlignmentElRef?: RefObject<HTMLElement>\n defaultContent?: (hookProps: MoreLinkContentArg) => ComponentChildren\n popoverContent: () => VNode\n children: MoreLinkChildren\n}\n\nexport interface MoreLinkContentArg { // what the render-hooks receive\n num: number\n text: string\n shortText: string\n view: ViewApi\n}\n\nexport type MoreLinkMountArg = MountArg<MoreLinkContentArg>\n\ninterface MoreLinkRootState {\n isPopoverOpen: boolean\n popoverId: string\n}\n\nexport class MoreLinkRoot extends BaseComponent<MoreLinkRootProps, MoreLinkRootState> {\n private linkElRef = createRef<HTMLElement>()\n private parentEl: HTMLElement\n\n state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId(),\n }\n\n render() {\n let { props, state } = this\n return (\n <ViewContextType.Consumer>\n {(context: ViewContext) => {\n let { viewApi, options, calendarApi } = context\n let { moreLinkText } = options\n let { moreCnt } = props\n let range = computeRange(props)\n\n let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt)\n : `+${moreCnt} ${moreLinkText}`\n let title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text)\n let hookProps: MoreLinkContentArg = {\n num: moreCnt,\n shortText: `+${moreCnt}`, // TODO: offer hook or i18n?\n text,\n view: viewApi,\n }\n\n return (\n <Fragment>\n {Boolean(props.moreCnt) && (\n <RenderHook<MoreLinkContentArg>\n elRef={this.linkElRef}\n hookProps={hookProps}\n classNames={options.moreLinkClassNames}\n content={options.moreLinkContent}\n defaultContent={props.defaultContent || renderMoreLinkInner}\n didMount={options.moreLinkDidMount}\n willUnmount={options.moreLinkWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => props.children(\n rootElRef,\n ['fc-more-link'].concat(customClassNames),\n innerElRef,\n innerContent,\n this.handleClick,\n title,\n state.isPopoverOpen,\n state.isPopoverOpen ? state.popoverId : '',\n )}\n </RenderHook>\n )}\n {state.isPopoverOpen && (\n <MorePopover\n id={state.popoverId}\n startDate={range.start}\n endDate={range.end}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n extraDateSpan={props.extraDateSpan}\n parentEl={this.parentEl}\n alignmentEl={props.alignmentElRef.current}\n alignGridTop={props.alignGridTop}\n onClose={this.handlePopoverClose}\n >\n {props.popoverContent()}\n </MorePopover>\n )}\n </Fragment>\n )\n }}\n </ViewContextType.Consumer>\n )\n }\n\n componentDidMount() {\n this.updateParentEl()\n }\n\n componentDidUpdate() {\n this.updateParentEl()\n }\n\n updateParentEl() {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness')\n }\n }\n\n handleClick = (ev: MouseEvent) => {\n let { props, context } = this\n let { moreLinkClick } = context.options\n let date = computeRange(props).start\n\n function buildPublicSeg(seg: Seg) {\n let { def, instance, range } = seg.eventRange\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n }\n }\n\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi,\n }) as string | undefined\n }\n\n if (!moreLinkClick || moreLinkClick === 'popover') {\n this.setState({ isPopoverOpen: true })\n } else if (typeof moreLinkClick === 'string') { // a view name\n context.calendarApi.zoomTo(date, moreLinkClick)\n }\n }\n\n handlePopoverClose = () => {\n this.setState({ isPopoverOpen: false })\n }\n}\n\nfunction renderMoreLinkInner(props: MoreLinkContentArg) {\n return props.text\n}\n\nfunction computeRange(props: MoreLinkRootProps): DateRange {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1),\n }\n }\n\n let { hiddenSegs } = props\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs),\n }\n}\n\nexport function computeEarliestSegStart(segs: Seg[]): DateMarker {\n return segs.reduce(pickEarliestStart).eventRange.range.start\n}\n\nfunction pickEarliestStart(seg0: Seg, seg1: Seg): Seg {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1\n}\n\nfunction computeLatestSegEnd(segs: Seg[]): DateMarker {\n return segs.reduce(pickLatestEnd).eventRange.range.end\n}\n\nfunction pickLatestEnd(seg0: Seg, seg1: Seg): Seg {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1\n}\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","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\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: 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\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","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\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\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 = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n var 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}","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) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\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 var 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) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\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 var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\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(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState();\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\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) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\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 var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\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 var useSelector = /*#__PURE__*/createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) 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}","/******************************************************************************\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","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\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\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import { useMemo } from 'react'\nimport { radiansToDegrees, positionFromAngle, degreesToRadians } from '@nivo/core'\nimport { DatumWithArc } from './types'\n\n/**\n * Make sure an angle (expressed in radians)\n * always falls in the range 0~2*PI.\n */\nexport const getNormalizedAngle = (angle: number) => {\n let normalizedAngle = angle % (Math.PI * 2)\n if (normalizedAngle < 0) {\n normalizedAngle += Math.PI * 2\n }\n\n return normalizedAngle\n}\n\n/**\n * Filter out arcs with a length below `skipAngle`.\n */\nexport const filterDataBySkipAngle = <Datum extends DatumWithArc>(\n data: Datum[],\n skipAngle: number\n) =>\n data.filter(\n datum => Math.abs(radiansToDegrees(datum.arc.endAngle - datum.arc.startAngle)) >= skipAngle\n )\n\n/**\n * Memoized version of `filterDataBySkipAngle`.\n */\nexport const useFilteredDataBySkipAngle = <Datum extends DatumWithArc>(\n data: Datum[],\n skipAngle: number\n) => useMemo(() => filterDataBySkipAngle(data, skipAngle), [data, skipAngle])\n\nexport const svgEllipticalArcCommand = (\n radius: number,\n largeArcFlag: 0 | 1,\n sweepFlag: 0 | 1,\n x: number,\n y: number\n) =>\n [\n 'A',\n radius,\n radius,\n 0, // x-axis-rotation\n largeArcFlag,\n sweepFlag,\n x,\n y,\n ].join(' ')\n\nexport const generateSvgArc = (\n radius: number,\n originalStartAngle: number,\n originalEndAngle: number\n): string => {\n const startAngle = Math.min(originalStartAngle, originalEndAngle)\n const endAngle = Math.max(originalStartAngle, originalEndAngle)\n\n const start = positionFromAngle(degreesToRadians(endAngle), radius)\n const end = positionFromAngle(degreesToRadians(startAngle), radius)\n\n // we have a full circle, we cannot use a single elliptical arc\n // to draw it, so we use 2 in that case.\n if (endAngle - startAngle >= 360) {\n const mid = positionFromAngle(degreesToRadians(startAngle + 180), radius)\n\n return [\n `M ${start.x} ${start.y}`,\n svgEllipticalArcCommand(radius, 1, 1, mid.x, mid.y),\n `M ${start.x} ${start.y}`,\n svgEllipticalArcCommand(radius, 1, 0, mid.x, mid.y),\n ].join(' ')\n }\n\n const largeArcFlag = endAngle - startAngle <= 180 ? 0 : 1\n\n return [\n `M ${start.x} ${start.y}`,\n svgEllipticalArcCommand(radius, largeArcFlag, 0, end.x, end.y),\n ].join(' ')\n}\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext<FormikContextType<any>>(\n undefined as any\n);\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext<Values>() {\n const formik = React.useContext<FormikContextType<Values>>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.`\n );\n\n return formik;\n}\n","import * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport {\n FormikConfig,\n FormikErrors,\n FormikState,\n FormikTouched,\n FormikValues,\n FormikProps,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FormikHelpers,\n FormikHandlers,\n} from './types';\nimport {\n isFunction,\n isString,\n setIn,\n isEmptyChildren,\n isPromise,\n setNestedObjectValues,\n getActiveElement,\n getIn,\n isObject,\n} from './utils';\nimport { FormikProvider } from './FormikContext';\nimport invariant from 'tiny-warning';\n\ntype FormikMessage<Values> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched<Values> }\n | { type: 'SET_ERRORS'; payload: FormikErrors<Values> }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState<Values>) => FormikState<Values>;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState<Values>;\n };\n\n// State reducer\nfunction formikReducer<Values>(\n state: FormikState<Values>,\n msg: FormikMessage<Values>\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues<FormikTouched<Values>>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors<unknown> = {};\nconst emptyTouched: FormikTouched<unknown> = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise<string> | undefined;\n };\n}\n\nexport function useFormik<Values extends FormikValues = FormikValues>({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig<Values>) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef<boolean>(false);\n const fieldRegistry = React.useRef<FieldRegistry>({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [state, dispatch] = React.useReducer<\n React.Reducer<FormikState<Values>, FormikMessage<Values>>\n >(formikReducer, {\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise<any>).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validate />`,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise<string> => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise<FormikErrors<Values>> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise<string>[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all<FormikErrors<Values>>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n if (!isEqual(state.errors, combinedErrors)) {\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial<FormikState<Values>>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise<any>).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n }\n\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error[name] },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched<Values>, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors<Values>) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction<Values>, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent<any>, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent<any>).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent<any>).target\n : (eventOrTextValue as React.ChangeEvent<any>).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : !!multiple // <select multiple>\n ? getSelectedValues(options)\n : value;\n }\n\n if (field) {\n // Set form fields by name\n setFieldValue(field, val);\n }\n },\n [setFieldValue, state.values]\n );\n\n const handleChange = useEventCallback<FormikHandlers['handleChange']>(\n (\n eventOrPath: string | React.ChangeEvent<any>\n ): void | ((eventOrTextValue: string | React.ChangeEvent<any>) => void) => {\n if (isString(eventOrPath)) {\n return event => executeChange(event, eventOrPath);\n } else {\n executeChange(eventOrPath);\n }\n }\n );\n\n const setFieldTouched = useEventCallback(\n (field: string, touched: boolean = true, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field,\n value: touched,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const executeBlur = React.useCallback(\n (e: any, path?: string) => {\n if (e.persist) {\n e.persist();\n }\n const { name, id, outerHTML } = e.target;\n const field = path ? path : name ? name : id;\n\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur',\n });\n }\n\n setFieldTouched(field, true);\n },\n [setFieldTouched]\n );\n\n const handleBlur = useEventCallback<FormikHandlers['handleBlur']>(\n (eventOrString: any): void | ((e: any) => void) => {\n if (isString(eventOrString)) {\n return event => executeBlur(event, eventOrString);\n } else {\n executeBlur(eventOrString);\n }\n }\n );\n\n const setFormikState = React.useCallback(\n (\n stateOrCb:\n | FormikState<Values>\n | ((state: FormikState<Values>) => FormikState<Values>)\n ): void => {\n if (isFunction(stateOrCb)) {\n dispatch({ type: 'SET_FORMIK_STATE', payload: stateOrCb });\n } else {\n dispatch({ type: 'SET_FORMIK_STATE', payload: () => stateOrCb });\n }\n },\n []\n );\n\n const setStatus = React.useCallback((status: any) => {\n dispatch({ type: 'SET_STATUS', payload: status });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const submitForm = useEventCallback(() => {\n dispatch({ type: 'SUBMIT_ATTEMPT' });\n return validateFormWithHighPriority().then(\n (combinedErrors: FormikErrors<Values>) => {\n // In case an error was thrown and passed to the resolved Promise,\n // `combinedErrors` can be an instance of an Error. We need to check\n // that and abort the submit.\n // If we don't do that, calling `Object.keys(new Error())` yields an\n // empty array, which causes the validation to pass and the form\n // to be submitted.\n\n const isInstanceOfError = combinedErrors instanceof Error;\n const isActuallyValid =\n !isInstanceOfError && Object.keys(combinedErrors).length === 0;\n if (isActuallyValid) {\n // Proceed with submit...\n //\n // To respect sync submit fns, we can't simply wrap executeSubmit in a promise and\n // _always_ dispatch SUBMIT_SUCCESS because isSubmitting would then always be false.\n // This would be fine in simple cases, but make it impossible to disable submit\n // buttons where people use callbacks or promises as side effects (which is basically\n // all of v1 Formik code). Instead, recall that we are inside of a promise chain already,\n // so we can try/catch executeSubmit(), if it returns undefined, then just bail.\n // If there are errors, throw em. Otherwise, wrap executeSubmit in a promise and handle\n // cleanup of isSubmitting on behalf of the consumer.\n let promiseOrUndefined;\n try {\n promiseOrUndefined = executeSubmit();\n // Bail if it's sync, consumer is responsible for cleaning up\n // via setSubmitting(false)\n if (promiseOrUndefined === undefined) {\n return;\n }\n } catch (error) {\n throw error;\n }\n\n return Promise.resolve(promiseOrUndefined)\n .then(result => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_SUCCESS' });\n }\n return result;\n })\n .catch(_errors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_FAILURE' });\n // This is a legit error rejected by the onSubmit fn\n // so we don't want to break the promise chain\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n // ^^^ Make sure Formik is still mounted before updating state\n dispatch({ type: 'SUBMIT_FAILURE' });\n // throw combinedErrors;\n if (isInstanceOfError) {\n throw combinedErrors;\n }\n }\n return;\n }\n );\n });\n\n const handleSubmit = useEventCallback(\n (e?: React.FormEvent<HTMLFormElement>) => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n // Warn if form submission is triggered by a <button> without a\n // specified `type` attribute during development. This mitigates\n // a common gotcha in forms with both reset and submit buttons,\n // where the dev forgets to add type=\"button\" to the reset button.\n if (__DEV__ && typeof document !== 'undefined') {\n // Safely get the active element (works with IE)\n const activeElement = getActiveElement();\n if (\n activeElement !== null &&\n activeElement instanceof HTMLButtonElement\n ) {\n invariant(\n activeElement.attributes &&\n activeElement.attributes.getNamedItem('type'),\n 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.'\n );\n }\n }\n\n submitForm().catch(reason => {\n console.warn(\n `Warning: An unhandled error was caught from submitForm()`,\n reason\n );\n });\n }\n );\n\n const imperativeMethods: FormikHelpers<Values> = {\n resetForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n setErrors,\n setFieldError,\n setFieldTouched,\n setFieldValue,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n setFormikState,\n submitForm,\n };\n\n const executeSubmit = useEventCallback(() => {\n return onSubmit(state.values, imperativeMethods);\n });\n\n const handleReset = useEventCallback(e => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n resetForm();\n });\n\n const getFieldMeta = React.useCallback(\n (name: string): FieldMetaProps<any> => {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name),\n };\n },\n [state.errors, state.touched, state.values]\n );\n\n const getFieldHelpers = React.useCallback(\n (name: string): FieldHelperProps<any> => {\n return {\n setValue: (value: any, shouldValidate?: boolean) =>\n setFieldValue(name, value, shouldValidate),\n setTouched: (value: boolean, shouldValidate?: boolean) =>\n setFieldTouched(name, value, shouldValidate),\n setError: (value: any) => setFieldError(name, value),\n };\n },\n [setFieldValue, setFieldTouched, setFieldError]\n );\n\n const getFieldProps = React.useCallback(\n (nameOrOptions): FieldInputProps<any> => {\n const isAnObject = isObject(nameOrOptions);\n const name = isAnObject ? nameOrOptions.name : nameOrOptions;\n const valueState = getIn(state.values, name);\n\n const field: FieldInputProps<any> = {\n name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n if (isAnObject) {\n const {\n type,\n value: valueProp, // value is special for checkboxes\n as: is,\n multiple,\n } = nameOrOptions;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(\n Array.isArray(valueState) && ~valueState.indexOf(valueProp)\n );\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n return field;\n },\n [handleBlur, handleChange, state.values]\n );\n\n const dirty = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [initialValues.current, state.values]\n );\n\n const isValid = React.useMemo(\n () =>\n typeof isInitialValid !== 'undefined'\n ? dirty\n ? state.errors && Object.keys(state.errors).length === 0\n : isInitialValid !== false && isFunction(isInitialValid)\n ? (isInitialValid as (props: FormikConfig<Values>) => boolean)(props)\n : (isInitialValid as boolean)\n : state.errors && Object.keys(state.errors).length === 0,\n [isInitialValid, dirty, state.errors, props]\n );\n\n const ctx = {\n ...state,\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur,\n handleChange,\n handleReset,\n handleSubmit,\n resetForm,\n setErrors,\n setFormikState,\n setFieldTouched,\n setFieldValue,\n setFieldError,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n submitForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n isValid,\n dirty,\n unregisterField,\n registerField,\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n validateOnBlur,\n validateOnChange,\n validateOnMount,\n };\n\n return ctx;\n}\n\nexport function Formik<\n Values extends FormikValues = FormikValues,\n ExtraProps = {}\n>(props: FormikConfig<Values> & ExtraProps) {\n const formikbag = useFormik<Values>(props);\n const { component, children, render, innerRef } = props;\n\n // This allows folks to pass a ref to <Formik />\n React.useImperativeHandle(innerRef, () => formikbag);\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !props.render,\n `<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>`\n );\n // eslint-disable-next-line\n }, []);\n }\n return (\n <FormikProvider value={formikbag}>\n {component\n ? React.createElement(component as any, formikbag)\n : render\n ? render(formikbag)\n : children // children come last, always called\n ? isFunction(children)\n ? (children as (bag: FormikProps<Values>) => React.ReactNode)(\n formikbag as FormikProps<Values>\n )\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null}\n </FormikProvider>\n );\n}\n\nfunction warnAboutMissingIdentifier({\n htmlContent,\n documentationAnchorLink,\n handlerName,\n}: {\n htmlContent: string;\n documentationAnchorLink: string;\n handlerName: string;\n}) {\n console.warn(\n `Warning: Formik called \\`${handlerName}\\`, but you forgot to pass an \\`id\\` or \\`name\\` attribute to your input:\n ${htmlContent}\n Formik cannot determine which value to update. For more info see https://formik.org/docs/api/formik#${documentationAnchorLink}\n `\n );\n}\n\n/**\n * Transform Yup ValidationError to a more usable object\n */\nexport function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {\n let errors: FormikErrors<Values> = {};\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n for (let err of yupError.inner) {\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n return errors;\n}\n\n/**\n * Validate a yup schema.\n */\nexport function validateYupSchema<T extends FormikValues>(\n values: T,\n schema: any,\n sync: boolean = false,\n context: any = {}\n): Promise<Partial<T>> {\n const validateData: FormikValues = prepareDataForValidation(values);\n return schema[sync ? 'validateSync' : 'validate'](validateData, {\n abortEarly: false,\n context: context,\n });\n}\n\n/**\n * Recursively prepare values.\n */\nexport function prepareDataForValidation<T extends FormikValues>(\n values: T\n): FormikValues {\n let data: FormikValues = Array.isArray(values) ? [] : {};\n for (let k in values) {\n if (Object.prototype.hasOwnProperty.call(values, k)) {\n const key = String(k);\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map((value: any) => {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n return data;\n}\n\n/**\n * deepmerge array merging algorithm\n * https://github.com/KyleAMathews/deepmerge#combine-array\n */\nfunction arrayMerge(target: any[], source: any[], options: any): any[] {\n const destination = target.slice();\n\n source.forEach(function merge(e: any, i: number) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone\n ? deepmerge(Array.isArray(e) ? [] : {}, e, options)\n : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\n/** Return multi select values based on an array of options */\nfunction getSelectedValues(options: any[]) {\n return Array.from(options)\n .filter(el => el.selected)\n .map(el => el.value);\n}\n\n/** Return the next value for a checkbox */\nfunction getValueForCheckbox(\n currentValue: string | any[],\n checked: boolean,\n valueProp: any\n) {\n // If the current value was a boolean, return a boolean\n if (typeof currentValue === 'boolean') {\n return Boolean(checked);\n }\n\n // If the currentValue was not a boolean we want to return an array\n let currentArrayOfValues = [];\n let isValueInArray = false;\n let index = -1;\n\n if (!Array.isArray(currentValue)) {\n // eslint-disable-next-line eqeqeq\n if (!valueProp || valueProp == 'true' || valueProp == 'false') {\n return Boolean(checked);\n }\n } else {\n // If the current value is already an array, use it\n currentArrayOfValues = currentValue;\n index = currentValue.indexOf(valueProp);\n isValueInArray = index >= 0;\n }\n\n // If the checkbox was checked and the value is not already present in the aray we want to add the new value to the array of values\n if (checked && valueProp && !isValueInArray) {\n return currentArrayOfValues.concat(valueProp);\n }\n\n // If the checkbox was unchecked and the value is not in the array, simply return the already existing array of values\n if (!isValueInArray) {\n return currentArrayOfValues;\n }\n\n // If the checkbox was unchecked and the value is in the array, remove the value and return the array\n return currentArrayOfValues\n .slice(0, index)\n .concat(currentArrayOfValues.slice(index + 1));\n}\n\n// 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.\n// @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect;\n\nfunction useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref: any = React.useRef(fn);\n\n // we copy a ref to the callback scoped to the current state/props on each render\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback(\n (...args: any[]) => ref.current.apply(void 0, args),\n []\n ) as T;\n}\n","import * as React from 'react';\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FieldValidator,\n} from './types';\nimport { useFormikContext } from './FormikContext';\nimport { isFunction, isEmptyChildren, isObject } from './utils';\nimport invariant from 'tiny-warning';\n\nexport interface FieldProps<V = any, FormValues = any> {\n field: FieldInputProps<V>;\n form: FormikProps<FormValues>; // if ppl want to restrict this for a given form, let them.\n meta: FieldMetaProps<V>;\n}\n\nexport interface FieldConfig<V = any> {\n /**\n * Field component to render. Can either be a string like 'select' or a component.\n */\n component?:\n | string\n | React.ComponentType<FieldProps<V>>\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Component to render. Can either be a string e.g. 'select', 'input', or 'textarea', or a component.\n */\n as?:\n | React.ComponentType<FieldProps<V>['field']>\n | string\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Render prop (works like React router's <Route render={props =>} />)\n * @deprecated\n */\n render?: (props: FieldProps<V>) => React.ReactNode;\n\n /**\n * Children render function <Field name>{props => ...}</Field>)\n */\n children?: ((props: FieldProps<V>) => React.ReactNode) | React.ReactNode;\n\n /**\n * Validate a single field value independently\n */\n validate?: FieldValidator;\n\n /**\n * Field name\n */\n name: string;\n\n /** HTML input type */\n type?: string;\n\n /** Field value */\n value?: any;\n\n /** Inner ref */\n innerRef?: (instance: any) => void;\n}\n\nexport type FieldAttributes<T> = GenericFieldHTMLAttributes &\n FieldConfig<T> &\n T & { name: string };\n\nexport type FieldHookConfig<T> = GenericFieldHTMLAttributes & FieldConfig<T>;\n\nexport function useField<Val = any>(\n propsOrFieldName: string | FieldHookConfig<Val>\n): [FieldInputProps<Val>, FieldMetaProps<Val>, FieldHelperProps<Val>] {\n const formik = useFormikContext();\n const {\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n registerField,\n unregisterField,\n } = formik;\n\n const isAnObject = isObject(propsOrFieldName);\n\n // Normalize propsOrFieldName to FieldHookConfig<Val>\n const props: FieldHookConfig<Val> = isAnObject\n ? (propsOrFieldName as FieldHookConfig<Val>)\n : { name: propsOrFieldName as string };\n\n const { name: fieldName, validate: validateFn } = props;\n\n React.useEffect(() => {\n if (fieldName) {\n registerField(fieldName, {\n validate: validateFn,\n });\n }\n return () => {\n if (fieldName) {\n unregisterField(fieldName);\n }\n };\n }, [registerField, unregisterField, fieldName, validateFn]);\n\n if (__DEV__) {\n invariant(\n formik,\n 'useField() / <Field /> must be used underneath a <Formik> component or withFormik() higher order component'\n );\n }\n\n invariant(\n fieldName,\n 'Invalid field name. Either pass `useField` a string or an object containing a `name` key.'\n );\n\n return [\n getFieldProps(props),\n getFieldMeta(fieldName),\n getFieldHelpers(fieldName),\n ];\n}\n\nexport function Field({\n validate,\n name,\n render,\n children,\n as: is, // `as` is reserved in typescript lol\n component,\n ...props\n}: FieldAttributes<any>) {\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n\n ...formik\n } = useFormikContext();\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !render,\n `<Field render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Field name=\"${name}\" render={({field, form}) => ...} /> with <Field name=\"${name}\">{({field, form, meta}) => ...}</Field>`\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <Field as> and <Field children> as a function in the same <Field> component; <Field as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <Field component> and <Field children> as a function in the same <Field> component; <Field component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <Field render> and <Field children> in the same <Field> component; <Field children> will be ignored'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n // Register field and field-level validation with parent <Formik>\n const { registerField, unregisterField } = formik;\n React.useEffect(() => {\n registerField(name, {\n validate: validate,\n });\n return () => {\n unregisterField(name);\n };\n }, [registerField, unregisterField, name, validate]);\n const field = formik.getFieldProps({ name, ...props });\n const meta = formik.getFieldMeta(name);\n const legacyBag = { field, form: formik };\n\n if (render) {\n return render({ ...legacyBag, meta });\n }\n\n if (isFunction(children)) {\n return children({ ...legacyBag, meta });\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n\n return React.createElement(asElement, { ...field, ...props }, children);\n}\n","import * as React from 'react';\nimport { useFormikContext } from './FormikContext';\n\nexport type FormikFormProps = Pick<\n React.FormHTMLAttributes<HTMLFormElement>,\n Exclude<\n keyof React.FormHTMLAttributes<HTMLFormElement>,\n 'onReset' | 'onSubmit'\n >\n>;\n\ntype FormProps = React.ComponentPropsWithoutRef<'form'>;\n\n// @todo tests\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props: FormikFormProps, ref) => {\n // iOS needs an \"action\" attribute for nice input: https://stackoverflow.com/a/39485162/406725\n // We default the action to \"#\" in case the preventDefault fails (just updates the URL hash)\n const { action, ...rest } = props;\n const _action = action || '#';\n const { handleReset, handleSubmit } = useFormikContext();\n return (\n <form\n onSubmit={handleSubmit}\n ref={ref}\n onReset={handleReset}\n action={_action}\n {...rest}\n />\n );\n }\n);\n\nForm.displayName = 'Form';\n","import * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\nimport { FormikContextType } from './types';\nimport { FormikConsumer } from './FormikContext';\nimport invariant from 'tiny-warning';\n\n/**\n * Connect any component to Formik context, and inject as a prop called `formik`;\n * @param Comp React Component\n */\nexport function connect<OuterProps, Values = {}>(\n Comp: React.ComponentType<OuterProps & { formik: FormikContextType<Values> }>\n) {\n const C: React.FC<OuterProps> = (props: OuterProps) => (\n <FormikConsumer>\n {formik => {\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are rendering <Form>, <Field>, <FastField>, <FieldArray>, or your custom context-using component as a child of a <Formik> component. Component name: ${Comp.name}`\n );\n return <Comp {...props} formik={formik} />;\n }}\n </FormikConsumer>\n );\n const componentDisplayName =\n Comp.displayName ||\n Comp.name ||\n (Comp.constructor && Comp.constructor.name) ||\n 'Component';\n\n // Assign Comp to C.WrappedComponent so we can access the inner component in tests\n // For example, <Field.WrappedComponent /> gets us <FieldInner/>\n (C as React.FC<OuterProps> & {\n WrappedComponent: React.ReactNode;\n }).WrappedComponent = Comp;\n\n C.displayName = `FormikConnect(${componentDisplayName})`;\n\n return hoistNonReactStatics(\n C,\n Comp as React.ComponentClass<\n OuterProps & { formik: FormikContextType<Values> }\n > // cast type to ComponentClass (even if SFC)\n ) as React.ComponentType<OuterProps>;\n}\n","import * as React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { connect } from './connect';\nimport {\n FormikContextType,\n FormikState,\n SharedRenderProps,\n FormikProps,\n} from './types';\nimport {\n getIn,\n isEmptyChildren,\n isFunction,\n setIn,\n isEmptyArray,\n} from './utils';\nimport isEqual from 'react-fast-compare';\n\nexport type FieldArrayRenderProps = ArrayHelpers & {\n form: FormikProps<any>;\n name: string;\n};\n\nexport type FieldArrayConfig = {\n /** Really the path to the array field to be updated */\n name: string;\n /** Should field array validate the form AFTER array updates/changes? */\n validateOnChange?: boolean;\n} & SharedRenderProps<FieldArrayRenderProps>;\nexport interface ArrayHelpers {\n /** Imperatively add a value to the end of an array */\n push: (obj: any) => void;\n /** Curried fn to add a value to the end of an array */\n handlePush: (obj: any) => () => void;\n /** Imperatively swap two values in an array */\n swap: (indexA: number, indexB: number) => void;\n /** Curried fn to swap two values in an array */\n handleSwap: (indexA: number, indexB: number) => () => void;\n /** Imperatively move an element in an array to another index */\n move: (from: number, to: number) => void;\n /** Imperatively move an element in an array to another index */\n handleMove: (from: number, to: number) => () => void;\n /** Imperatively insert an element at a given index into the array */\n insert: (index: number, value: any) => void;\n /** Curried fn to insert an element at a given index into the array */\n handleInsert: (index: number, value: any) => () => void;\n /** Imperatively replace a value at an index of an array */\n replace: (index: number, value: any) => void;\n /** Curried fn to replace an element at a given index into the array */\n handleReplace: (index: number, value: any) => () => void;\n /** Imperatively add an element to the beginning of an array and return its length */\n unshift: (value: any) => number;\n /** Curried fn to add an element to the beginning of an array */\n handleUnshift: (value: any) => () => void;\n /** Curried fn to remove an element at an index of an array */\n handleRemove: (index: number) => () => void;\n /** Curried fn to remove a value from the end of the array */\n handlePop: () => () => void;\n /** Imperatively remove and element at an index of an array */\n remove<T>(index: number): T | undefined;\n /** Imperatively remove and return value from the end of the array */\n pop<T>(): T | undefined;\n}\n\n/**\n * Some array helpers!\n */\nexport const move = (array: any[], from: number, to: number) => {\n const copy = copyArrayLike(array);\n const value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\n\nexport const swap = (\n arrayLike: ArrayLike<any>,\n indexA: number,\n indexB: number\n) => {\n const copy = copyArrayLike(arrayLike);\n const a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\n\nexport const insert = (\n arrayLike: ArrayLike<any>,\n index: number,\n value: any\n) => {\n const copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\n\nexport const replace = (\n arrayLike: ArrayLike<any>,\n index: number,\n value: any\n) => {\n const copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nconst copyArrayLike = (arrayLike: ArrayLike<any>) => {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [...arrayLike];\n } else {\n const maxIndex = Object.keys(arrayLike)\n .map(key => parseInt(key))\n .reduce((max, el) => (el > max ? el : max), 0);\n return Array.from({ ...arrayLike, length: maxIndex + 1 });\n }\n};\n\nclass FieldArrayInner<Values = {}> extends React.Component<\n FieldArrayConfig & { formik: FormikContextType<Values> },\n {}\n> {\n static defaultProps = {\n validateOnChange: true,\n };\n\n constructor(props: FieldArrayConfig & { formik: FormikContextType<Values> }) {\n super(props);\n // We need TypeScript generics on these, so we'll bind them in the constructor\n // @todo Fix TS 3.2.1\n this.remove = this.remove.bind(this) as any;\n this.pop = this.pop.bind(this) as any;\n }\n\n componentDidUpdate(\n prevProps: FieldArrayConfig & { formik: FormikContextType<Values> }\n ) {\n if (\n this.props.validateOnChange &&\n this.props.formik.validateOnChange &&\n !isEqual(\n getIn(prevProps.formik.values, prevProps.name),\n getIn(this.props.formik.values, this.props.name)\n )\n ) {\n this.props.formik.validateForm(this.props.formik.values);\n }\n }\n\n updateArrayField = (\n fn: Function,\n alterTouched: boolean | Function,\n alterErrors: boolean | Function\n ) => {\n const {\n name,\n\n formik: { setFormikState },\n } = this.props;\n setFormikState((prevState: FormikState<any>) => {\n let updateErrors = typeof alterErrors === 'function' ? alterErrors : fn;\n let updateTouched =\n typeof alterTouched === 'function' ? alterTouched : fn;\n\n // values fn should be executed before updateErrors and updateTouched,\n // otherwise it causes an error with unshift.\n let values = setIn(\n prevState.values,\n name,\n fn(getIn(prevState.values, name))\n );\n\n let fieldError = alterErrors\n ? updateErrors(getIn(prevState.errors, name))\n : undefined;\n let fieldTouched = alterTouched\n ? updateTouched(getIn(prevState.touched, name))\n : undefined;\n\n if (isEmptyArray(fieldError)) {\n fieldError = undefined;\n }\n if (isEmptyArray(fieldTouched)) {\n fieldTouched = undefined;\n }\n\n return {\n ...prevState,\n values,\n errors: alterErrors\n ? setIn(prevState.errors, name, fieldError)\n : prevState.errors,\n touched: alterTouched\n ? setIn(prevState.touched, name, fieldTouched)\n : prevState.touched,\n };\n });\n };\n\n push = (value: any) =>\n this.updateArrayField(\n (arrayLike: ArrayLike<any>) => [\n ...copyArrayLike(arrayLike),\n cloneDeep(value),\n ],\n false,\n false\n );\n\n handlePush = (value: any) => () => this.push(value);\n\n swap = (indexA: number, indexB: number) =>\n this.updateArrayField(\n (array: any[]) => swap(array, indexA, indexB),\n true,\n true\n );\n\n handleSwap = (indexA: number, indexB: number) => () =>\n this.swap(indexA, indexB);\n\n move = (from: number, to: number) =>\n this.updateArrayField((array: any[]) => move(array, from, to), true, true);\n\n handleMove = (from: number, to: number) => () => this.move(from, to);\n\n insert = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => insert(array, index, value),\n (array: any[]) => insert(array, index, null),\n (array: any[]) => insert(array, index, null)\n );\n\n handleInsert = (index: number, value: any) => () => this.insert(index, value);\n\n replace = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => replace(array, index, value),\n false,\n false\n );\n\n handleReplace = (index: number, value: any) => () =>\n this.replace(index, value);\n\n unshift = (value: any) => {\n let length = -1;\n this.updateArrayField(\n (array: any[]) => {\n const arr = array ? [value, ...array] : [value];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n }\n );\n return length;\n };\n\n handleUnshift = (value: any) => () => this.unshift(value);\n\n remove<T>(index: number): T {\n // We need to make sure we also remove relevant pieces of `touched` and `errors`\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array?: any[]) => {\n const copy = array ? copyArrayLike(array) : [];\n if (!result) {\n result = copy[index];\n }\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n return copy;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handleRemove = (index: number) => () => this.remove<any>(index);\n\n pop<T>(): T {\n // Remove relevant pieces of `touched` and `errors` too!\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array: any[]) => {\n const tmp = array;\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n return tmp;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handlePop = () => () => this.pop<any>();\n\n render() {\n const arrayHelpers: ArrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove,\n };\n\n const {\n component,\n render,\n children,\n name,\n formik: {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n },\n } = this.props;\n\n const props: FieldArrayRenderProps = {\n ...arrayHelpers,\n form: restOfFormik,\n name,\n };\n\n return component\n ? React.createElement(component as any, props)\n : render\n ? (render as any)(props)\n : children // children come last, always called\n ? typeof children === 'function'\n ? (children as any)(props)\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null;\n }\n}\n\nexport const FieldArray = connect<FieldArrayConfig, any>(FieldArrayInner);\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport { getIn, isFunction } from './utils';\nimport { connect } from './connect';\n\nexport interface ErrorMessageProps {\n name: string;\n className?: string;\n component?: string | React.ComponentType;\n children?: (errorMessage: string) => React.ReactNode;\n render?: (errorMessage: string) => React.ReactNode;\n}\n\nclass ErrorMessageImpl extends React.Component<\n ErrorMessageProps & { formik: FormikContextType<any> }\n> {\n shouldComponentUpdate(\n props: ErrorMessageProps & { formik: FormikContextType<any> }\n ) {\n if (\n getIn(this.props.formik.errors, this.props.name) !==\n getIn(props.formik.errors, this.props.name) ||\n getIn(this.props.formik.touched, this.props.name) !==\n getIn(props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n render() {\n let { component, formik, render, children, name, ...rest } = this.props;\n\n const touch = getIn(formik.touched, name);\n const error = getIn(formik.errors, name);\n\n return !!touch && !!error\n ? render\n ? isFunction(render)\n ? render(error)\n : null\n : children\n ? isFunction(children)\n ? children(error)\n : null\n : component\n ? React.createElement(component, rest as any, error)\n : error\n : null;\n }\n}\n\nexport const ErrorMessage = connect<\n ErrorMessageProps,\n ErrorMessageProps & { formik: FormikContextType<any> }\n>(ErrorMessageImpl);\n","import * as React from 'react';\n\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FormikContextType,\n FieldMetaProps,\n FieldInputProps,\n} from './types';\nimport invariant from 'tiny-warning';\nimport { getIn, isEmptyChildren, isFunction } from './utils';\nimport { FieldConfig } from './Field';\nimport { connect } from './connect';\n\ntype $FixMe = any;\n\nexport interface FastFieldProps<V = any> {\n field: FieldInputProps<V>;\n meta: FieldMetaProps<V>;\n form: FormikProps<V>; // if ppl want to restrict this for a given form, let them.\n}\n\nexport type FastFieldConfig<T> = FieldConfig & {\n /** Override FastField's default shouldComponentUpdate */\n shouldUpdate?: (\n nextProps: T & GenericFieldHTMLAttributes,\n props: {}\n ) => boolean;\n};\n\nexport type FastFieldAttributes<T> = GenericFieldHTMLAttributes &\n FastFieldConfig<T> &\n T;\n\ntype FastFieldInnerProps<Values = {}, Props = {}> = FastFieldAttributes<\n Props\n> & { formik: FormikContextType<Values> };\n\n/**\n * Custom Field component for quickly hooking into Formik\n * context and wiring up forms.\n */\nclass FastFieldInner<Values = {}, Props = {}> extends React.Component<\n FastFieldInnerProps<Values, Props>,\n {}\n> {\n constructor(props: FastFieldInnerProps<Values, Props>) {\n super(props);\n const { render, children, component, as: is, name } = props;\n invariant(\n !render,\n `<FastField render> has been deprecated. Please use a child callback function instead: <FastField name={${name}}>{props => ...}</FastField> instead.`\n );\n invariant(\n !(component && render),\n 'You should not use <FastField component> and <FastField render> in the same <FastField> component; <FastField component> will be ignored'\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <FastField as> and <FastField children> as a function in the same <FastField> component; <FastField as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <FastField component> and <FastField children> as a function in the same <FastField> component; <FastField component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <FastField render> and <FastField children> in the same <FastField> component; <FastField children> will be ignored'\n );\n }\n\n shouldComponentUpdate(props: FastFieldInnerProps<Values, Props>) {\n if (this.props.shouldUpdate) {\n return this.props.shouldUpdate(props, this.props);\n } else if (\n props.name !== this.props.name ||\n getIn(props.formik.values, this.props.name) !==\n getIn(this.props.formik.values, this.props.name) ||\n getIn(props.formik.errors, this.props.name) !==\n getIn(this.props.formik.errors, this.props.name) ||\n getIn(props.formik.touched, this.props.name) !==\n getIn(this.props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length ||\n props.formik.isSubmitting !== this.props.formik.isSubmitting\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n componentDidMount() {\n // Register the Field with the parent Formik. Parent will cycle through\n // registered Field's validate fns right prior to submit\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n componentDidUpdate(prevProps: FastFieldAttributes<Props>) {\n if (this.props.name !== prevProps.name) {\n this.props.formik.unregisterField(prevProps.name);\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n if (this.props.validate !== prevProps.validate) {\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n }\n\n componentWillUnmount() {\n this.props.formik.unregisterField(this.props.name);\n }\n\n render() {\n const {\n validate,\n name,\n render,\n as: is,\n children,\n component,\n shouldUpdate,\n formik,\n ...props\n } = this.props as FastFieldInnerProps<Values, Props>;\n\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n } = formik;\n const field = formik.getFieldProps({ name, ...props });\n const meta = {\n value: getIn(formik.values, name),\n error: getIn(formik.errors, name),\n touched: !!getIn(formik.touched, name),\n initialValue: getIn(formik.initialValues, name),\n initialTouched: !!getIn(formik.initialTouched, name),\n initialError: getIn(formik.initialErrors, name),\n };\n\n const bag = { field, meta, form: restOfFormik };\n\n if (render) {\n return (render as any)(bag);\n }\n\n if (isFunction(children)) {\n return (children as (props: FastFieldProps<any>) => React.ReactNode)(bag);\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component as React.ComponentClass<$FixMe>,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n\n return React.createElement(\n asElement as React.ComponentClass,\n { ...field, ...props },\n children\n );\n }\n}\n\nexport const FastField = connect<FastFieldAttributes<any>, any>(FastFieldInner);\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","import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n value,\n writable: true,\n configurable: true\n});\nconst is = {\n arr: Array.isArray,\n obj: a => !!a && a.constructor.name === 'Object',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === undefined\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n\n return;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n if (globals.to) to = globals.to;\n if (globals.now) raf.now = globals.now;\n if (globals.colors !== undefined) colors$1 = globals.colors;\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance) willAdvance = globals.willAdvance;\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get createStringInterpolator () { return createStringInterpolator$1; },\n get to () { return to; },\n get colors () { return colors$1; },\n get skipAnimation () { return skipAnimation; },\n get willAdvance () { return willAdvance; },\n assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n\n advance,\n\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n\n};\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\n\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n const nextFrame = prevFrame;\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n }\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n if (colors$1 && colors$1[color] !== undefined) {\n return colors$1[color];\n }\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n }\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (is.str(range.output[0])) {\n return createStringInterpolator$1(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n if (observer.eventObserved) {\n observer.eventObserved(event);\n } else {\n observer(event);\n }\n}\n\nfunction callFluidObservers(target, event) {\n let observers = target[$observers];\n\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event);\n });\n }\n}\n\nclass FluidValue {\n constructor(get) {\n this[$get] = void 0;\n this[$observers] = void 0;\n\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter');\n }\n\n setFluidGetter(this, get);\n }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n if (target[$get]) {\n let observers = target[$observers];\n\n if (!observers) {\n setHidden(target, $observers, observers = new Set());\n }\n\n if (!observers.has(observer)) {\n observers.add(observer);\n\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer);\n }\n }\n }\n\n return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n let observers = target[$observers];\n\n if (observers && observers.has(observer)) {\n const count = observers.size - 1;\n\n if (count) {\n observers.delete(observer);\n } else {\n target[$observers] = null;\n }\n\n if (target.observerRemoved) {\n target.observerRemoved(count, observer);\n }\n }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n const [token, fallback] = parseCSSVariable(input);\n\n if (!token || isSSR()) {\n return input;\n }\n\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n if (value) {\n return value.trim();\n } else if (fallback && fallback.startsWith('--')) {\n const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n if (_value) {\n return _value;\n } else {\n return input;\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n return variableToRgba(fallback);\n } else if (fallback) {\n return fallback;\n }\n\n return input;\n};\n\nconst parseCSSVariable = current => {\n const match = cssVariableRegex.exec(current);\n if (!match) return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n const output = config.output.map(value => {\n return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n });\n const keyframes = output.map(value => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n\n return values[i];\n }));\n const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n output\n })));\n return input => {\n var _output$find;\n\n const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n let i = 0;\n return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n const func = fn;\n let called = false;\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nfunction useForceUpdate() {\n const update = useState()[1];\n const isMounted = useIsMounted();\n return () => {\n if (isMounted.current) {\n update(Math.random());\n }\n };\n}\n\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState(() => ({\n inputs,\n result: getResult()\n }));\n const committed = useRef();\n const prevCache = committed.current;\n let cache = prevCache;\n\n if (cache) {\n const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n\n useEffect(() => {\n committed.current = cache;\n\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined;\n }\n }, [cache]);\n return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n const prevRef = useRef();\n useEffect(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };\n","import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n value,\n writable: true,\n configurable: true\n});\nconst is = {\n arr: Array.isArray,\n obj: a => !!a && a.constructor.name === 'Object',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === undefined\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n\n return;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n if (globals.to) to = globals.to;\n if (globals.now) raf.now = globals.now;\n if (globals.colors !== undefined) colors$1 = globals.colors;\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance) willAdvance = globals.willAdvance;\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get createStringInterpolator () { return createStringInterpolator$1; },\n get to () { return to; },\n get colors () { return colors$1; },\n get skipAnimation () { return skipAnimation; },\n get willAdvance () { return willAdvance; },\n assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n\n advance,\n\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n\n};\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\n\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n const nextFrame = prevFrame;\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n }\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n if (colors$1 && colors$1[color] !== undefined) {\n return colors$1[color];\n }\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n }\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (is.str(range.output[0])) {\n return createStringInterpolator$1(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n if (observer.eventObserved) {\n observer.eventObserved(event);\n } else {\n observer(event);\n }\n}\n\nfunction callFluidObservers(target, event) {\n let observers = target[$observers];\n\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event);\n });\n }\n}\n\nclass FluidValue {\n constructor(get) {\n this[$get] = void 0;\n this[$observers] = void 0;\n\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter');\n }\n\n setFluidGetter(this, get);\n }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n if (target[$get]) {\n let observers = target[$observers];\n\n if (!observers) {\n setHidden(target, $observers, observers = new Set());\n }\n\n if (!observers.has(observer)) {\n observers.add(observer);\n\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer);\n }\n }\n }\n\n return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n let observers = target[$observers];\n\n if (observers && observers.has(observer)) {\n const count = observers.size - 1;\n\n if (count) {\n observers.delete(observer);\n } else {\n target[$observers] = null;\n }\n\n if (target.observerRemoved) {\n target.observerRemoved(count, observer);\n }\n }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n const [token, fallback] = parseCSSVariable(input);\n\n if (!token || isSSR()) {\n return input;\n }\n\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n if (value) {\n return value.trim();\n } else if (fallback && fallback.startsWith('--')) {\n const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n if (_value) {\n return _value;\n } else {\n return input;\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n return variableToRgba(fallback);\n } else if (fallback) {\n return fallback;\n }\n\n return input;\n};\n\nconst parseCSSVariable = current => {\n const match = cssVariableRegex.exec(current);\n if (!match) return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n const output = config.output.map(value => {\n return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n });\n const keyframes = output.map(value => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n\n return values[i];\n }));\n const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n output\n })));\n return input => {\n var _output$find;\n\n const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n let i = 0;\n return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n const func = fn;\n let called = false;\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nfunction useForceUpdate() {\n const update = useState()[1];\n const isMounted = useIsMounted();\n return () => {\n if (isMounted.current) {\n update(Math.random());\n }\n };\n}\n\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState(() => ({\n inputs,\n result: getResult()\n }));\n const committed = useRef();\n const prevCache = committed.current;\n let cache = prevCache;\n\n if (cache) {\n const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n\n useEffect(() => {\n committed.current = cache;\n\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined;\n }\n }, [cache]);\n return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n const prevRef = useRef();\n useEffect(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };\n","let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n let time = raf.now() + ms;\n\n let cancel = () => {\n let i = timeouts.findIndex(t => t.cancel == cancel);\n if (~i) timeouts.splice(i, 1);\n __raf.count -= ~i ? 1 : 0;\n };\n\n let timeout = {\n time,\n handler,\n cancel\n };\n timeouts.splice(findTimeout(time), 0, timeout);\n __raf.count += 1;\n start();\n return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n updateQueue.delete(fn);\n writeQueue.delete(fn);\n};\n\nraf.sync = fn => {\n sync = true;\n raf.batchedUpdates(fn);\n sync = false;\n};\n\nraf.throttle = fn => {\n let lastArgs;\n\n function queuedFn() {\n try {\n fn(...lastArgs);\n } finally {\n lastArgs = null;\n }\n }\n\n function throttled(...args) {\n lastArgs = args;\n raf.onStart(queuedFn);\n }\n\n throttled.handler = fn;\n\n throttled.cancel = () => {\n onStartQueue.delete(queuedFn);\n lastArgs = null;\n };\n\n return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n if (raf.frameLoop !== 'demand') {\n console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n } else {\n update();\n }\n};\n\nlet ts = -1;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n if (sync) {\n queue.delete(fn);\n fn(0);\n } else {\n queue.add(fn);\n start();\n }\n}\n\nfunction start() {\n if (ts < 0) {\n ts = 0;\n\n if (raf.frameLoop !== 'demand') {\n nativeRaf(loop);\n }\n }\n}\n\nfunction loop() {\n if (~ts) {\n nativeRaf(loop);\n raf.batchedUpdates(update);\n }\n}\n\nfunction update() {\n let prevTs = ts;\n ts = raf.now();\n let count = findTimeout(ts);\n\n if (count) {\n eachSafely(timeouts.splice(0, count), t => t.handler());\n __raf.count -= count;\n }\n\n onStartQueue.flush();\n updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n onFrameQueue.flush();\n writeQueue.flush();\n onFinishQueue.flush();\n}\n\nfunction makeQueue() {\n let next = new Set();\n let current = next;\n return {\n add(fn) {\n __raf.count += current == next && !next.has(fn) ? 1 : 0;\n next.add(fn);\n },\n\n delete(fn) {\n __raf.count -= current == next && next.has(fn) ? 1 : 0;\n return next.delete(fn);\n },\n\n flush(arg) {\n if (current.size) {\n next = new Set();\n __raf.count -= current.size;\n eachSafely(current, fn => fn(arg) && next.add(fn));\n __raf.count += next.size;\n current = next;\n }\n }\n\n };\n}\n\nfunction eachSafely(values, each) {\n values.forEach(value => {\n try {\n each(value);\n } catch (e) {\n raf.catch(e);\n }\n });\n}\n\nconst __raf = {\n count: 0,\n\n clear() {\n ts = -1;\n timeouts = [];\n onStartQueue = makeQueue();\n updateQueue = makeQueue();\n onFrameQueue = makeQueue();\n writeQueue = makeQueue();\n onFinishQueue = makeQueue();\n __raf.count = 0;\n }\n\n};\n\nexport { __raf, raf };\n","import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useEffect, useState, useRef } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n value,\n writable: true,\n configurable: true\n});\nconst is = {\n arr: Array.isArray,\n obj: a => !!a && a.constructor.name === 'Object',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === undefined\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n\n return;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n if (globals.to) to = globals.to;\n if (globals.now) raf.now = globals.now;\n if (globals.colors !== undefined) colors$1 = globals.colors;\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance) willAdvance = globals.willAdvance;\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get createStringInterpolator () { return createStringInterpolator$1; },\n get to () { return to; },\n get colors () { return colors$1; },\n get skipAnimation () { return skipAnimation; },\n get willAdvance () { return willAdvance; },\n assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n\n advance,\n\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n\n};\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\n\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n const nextFrame = prevFrame;\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n }\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n if (colors$1 && colors$1[color] !== undefined) {\n return colors$1[color];\n }\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n }\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (is.str(range.output[0])) {\n return createStringInterpolator$1(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n if (observer.eventObserved) {\n observer.eventObserved(event);\n } else {\n observer(event);\n }\n}\n\nfunction callFluidObservers(target, event) {\n let observers = target[$observers];\n\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event);\n });\n }\n}\n\nclass FluidValue {\n constructor(get) {\n this[$get] = void 0;\n this[$observers] = void 0;\n\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter');\n }\n\n setFluidGetter(this, get);\n }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n if (target[$get]) {\n let observers = target[$observers];\n\n if (!observers) {\n setHidden(target, $observers, observers = new Set());\n }\n\n if (!observers.has(observer)) {\n observers.add(observer);\n\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer);\n }\n }\n }\n\n return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n let observers = target[$observers];\n\n if (observers && observers.has(observer)) {\n const count = observers.size - 1;\n\n if (count) {\n observers.delete(observer);\n } else {\n target[$observers] = null;\n }\n\n if (target.observerRemoved) {\n target.observerRemoved(count, observer);\n }\n }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nlet namedColorRegex;\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n const output = config.output.map(value => getFluidValue(value).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba));\n const keyframes = output.map(value => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n\n return values[i];\n }));\n const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n output\n })));\n return input => {\n let i = 0;\n return output[0].replace(numberRegex, () => String(interpolators[i++](input))).replace(rgbaRegex, rgbaRound);\n };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n const func = fn;\n let called = false;\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == '#' || /\\d/.test(value) || value in (colors$1 || {}));\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction useForceUpdate() {\n const update = useState()[1];\n const mounted = useState(makeMountedRef)[0];\n useOnce(mounted.unmount);\n return () => {\n if (mounted.current) {\n update({});\n }\n };\n}\n\nfunction makeMountedRef() {\n const mounted = {\n current: true,\n unmount: () => () => {\n mounted.current = false;\n }\n };\n return mounted;\n}\n\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState(() => ({\n inputs,\n result: getResult()\n }));\n const committed = useRef();\n const prevCache = committed.current;\n let cache = prevCache;\n\n if (cache) {\n const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n\n useEffect(() => {\n committed.current = cache;\n\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined;\n }\n }, [cache]);\n return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction usePrev(value) {\n const prevRef = useRef();\n useEffect(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\nconst useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addYears\"),require(\"date-fns/subMinutes\"),require(\"date-fns/subHours\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarWeeks\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-popper\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addYears\",\"date-fns/subMinutes\",\"date-fns/subHours\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarWeeks\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-popper\",\"react-dom\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addYears,null,null,e.subDays,e.subWeeks,e.subMonths,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,null,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,null,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactPopper,e.ReactDOM)}(this,(function(e,t,r,a,n,o,s,i,p,l,d,c,u,f,h,m,y,v,D,w,k,g,b,C,S,_,M,P,E,N,O,Y,x,T,I,L,F,R,q,A,W,B,j,H,K,Q,V,U,$,z,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe){\"use strict\";function le(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=le(t),ce=le(a),ue=le(n),fe=le(o),he=le(s),me=le(i),ye=le(p),ve=le(l),De=le(d),we=le(c),ke=le(u),ge=le(m),be=le(y),Ce=le(v),Se=le(D),_e=le(w),Me=le(k),Pe=le(g),Ee=le(b),Ne=le(C),Oe=le(S),Ye=le(_),xe=le(M),Te=le(P),Ie=le(E),Le=le(N),Fe=le(O),Re=le(Y),qe=le(x),Ae=le(T),We=le(I),Be=le(L),je=le(F),He=le(R),Ke=le(q),Qe=le(W),Ve=le(B),Ue=le(j),$e=le(H),ze=le(K),Ge=le(Q),Je=le(V),Xe=le(z),Ze=le(G),et=le(J),tt=le(X),rt=le(Z),at=le(ee),nt=le(te),ot=le(re),st=le(ae),it=le(ne),pt=le(oe),lt=le(se),dt=le(pe);function ct(e){return(ct=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ut(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function ft(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function ht(e,t,r){return t&&ft(e.prototype,t),r&&ft(e,r),e}function mt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function yt(){return(yt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(this,arguments)}function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(r),!0).forEach((function(t){mt(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):vt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function wt(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&>(e,t)}function kt(e){return(kt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function gt(e,t){return(gt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function bt(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Ct(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?bt(e):t}function St(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,a=kt(e);if(t){var n=kt(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return Ct(this,r)}}function _t(e){return function(e){if(Array.isArray(e))return Mt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return Mt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Mt(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Mt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function Pt(e,t){switch(e){case\"P\":return t.date({width:\"short\"});case\"PP\":return t.date({width:\"medium\"});case\"PPP\":return t.date({width:\"long\"});case\"PPPP\":default:return t.date({width:\"full\"})}}function Et(e,t){switch(e){case\"p\":return t.time({width:\"short\"});case\"pp\":return t.time({width:\"medium\"});case\"ppp\":return t.time({width:\"long\"});case\"pppp\":default:return t.time({width:\"full\"})}}var Nt={p:Et,P:function(e,t){var r,a=e.match(/(P+)(p+)?/),n=a[1],o=a[2];if(!o)return Pt(e,t);switch(n){case\"P\":r=t.dateTime({width:\"short\"});break;case\"PP\":r=t.dateTime({width:\"medium\"});break;case\"PPP\":r=t.dateTime({width:\"long\"});break;case\"PPPP\":default:r=t.dateTime({width:\"full\"})}return r.replace(\"{{date}}\",Pt(n,t)).replace(\"{{time}}\",Et(o,t))}},Ot=12,Yt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;function xt(e){var t=e?\"string\"==typeof e||e instanceof String?pt.default(e):st.default(e):new Date;return It(t)?t:null}function Tt(e,t,r,a){var n=null,o=Jt(r)||Jt(Gt()),s=!0;return Array.isArray(t)?(t.forEach((function(t){var r=it.default(e,t,new Date,{locale:o});a&&(s=It(r)&&e===he.default(r,t,{awareOfUnicodeTokens:!0})),It(r)&&s&&(n=r)})),n):(n=it.default(e,t,new Date,{locale:o}),a?s=It(n)&&e===he.default(n,t,{awareOfUnicodeTokens:!0}):It(n)||(t=t.match(Yt).map((function(e){var t=e[0];return\"p\"===t||\"P\"===t?o?(0,Nt[t])(e,o.formatLong):t:e})).join(\"\"),e.length>0&&(n=it.default(e,t.slice(0,e.length),new Date)),It(n)||(n=new Date(e))),It(n)&&s?n:null)}function It(e){return fe.default(e)&&at.default(e,new Date(\"1/1/1000\"))}function Lt(e,t,r){if(\"en\"===r)return he.default(e,t,{awareOfUnicodeTokens:!0});var a=Jt(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&Gt()&&Jt(Gt())&&(a=Jt(Gt())),he.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Ft(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return Re.default(Fe.default(Le.default(e,i),o),a)}function Rt(e,t){var r=t&&Jt(t)||Gt()&&Jt(Gt());return Oe.default(e,r?{locale:r}:null)}function qt(e,t){return Lt(e,\"ddd\",t)}function At(e){return Ve.default(e)}function Wt(e,t){var r=Jt(t||Gt());return Ue.default(e,{locale:r})}function Bt(e){return $e.default(e)}function jt(e){return Ge.default(e)}function Ht(e){return ze.default(e)}function Kt(e,t){return e&&t?tt.default(e,t):!e&&!t}function Qt(e,t){return e&&t?et.default(e,t):!e&&!t}function Vt(e,t){return e&&t?rt.default(e,t):!e&&!t}function Ut(e,t){return e&&t?Ze.default(e,t):!e&&!t}function $t(e,t){return e&&t?Xe.default(e,t):!e&&!t}function zt(e,t,r){var a,n=Ve.default(t),o=Je.default(r);try{a=ot.default(e,{start:n,end:o})}catch(e){a=!1}return a}function Gt(){return(\"undefined\"!=typeof window?window:global).__localeId__}function Jt(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:global;return t.__localeData__?t.__localeData__[e]:null}return e}function Xt(e,t){return Lt(qe.default(xt(),e),\"LLLL\",t)}function Zt(e,t){return Lt(qe.default(xt(),e),\"LLL\",t)}function er(e,t){return Lt(Ae.default(xt(),e),\"QQQ\",t)}function tr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Ut(e,t)}))||o&&!o.some((function(t){return Ut(e,t)}))||s&&!s(xt(e))||!1}function rr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates;return r&&r.some((function(t){return Ut(e,t)}))||!1}function ar(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Qt(e,t)}))||o&&!o.some((function(t){return Qt(e,t)}))||s&&!s(xt(e))||!1}function nr(e,t,r,a){var n=Te.default(e),o=Ye.default(e),s=Te.default(t),i=Ye.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return pr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Vt(e,t)}))||o&&!o.some((function(t){return Vt(e,t)}))||s&&!s(xt(e))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=new Date(e,0,1);return pr(n,{minDate:r,maxDate:a})||!1}function ir(e,t,r,a){var n=Te.default(e),o=xe.default(e),s=Te.default(t),i=xe.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&He.default(e,r)<0||a&&He.default(e,a)>0}function lr(e,t){return t.some((function(t){return Pe.default(t)===Pe.default(e)&&Me.default(t)===Me.default(e)}))}function dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&lr(e,r)||a&&!lr(e,a)||n&&!n(e)||!1}function cr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=xt(),s=Re.default(Fe.default(o,Me.default(e)),Pe.default(e)),i=Re.default(Fe.default(o,Me.default(r)),Pe.default(r)),p=Re.default(Fe.default(o,Me.default(a)),Pe.default(a));try{n=!ot.default(s,{start:i,end:p})}catch(e){n=!1}return n}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ce.default(e,1);return r&&Ke.default(r,n)>0||a&&a.every((function(e){return Ke.default(e,n)>0}))||!1}function fr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&Ke.default(n,r)>0||a&&a.every((function(e){return Ke.default(n,e)>0}))||!1}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Se.default(e,1);return r&&Qe.default(r,n)>0||a&&a.every((function(e){return Qe.default(e,n)>0}))||!1}function mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ke.default(e,1);return r&&Qe.default(n,r)>0||a&&a.every((function(e){return Qe.default(n,e)>0}))||!1}function yr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)>=0}));return Be.default(a)}return r?Be.default(r):t}function vr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return He.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function Dr(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a<n;a++){var o=e[a];if(ue.default(o)){var s=Lt(o,\"MM.dd.yyyy\"),i=r.get(s)||[];i.includes(t)||(i.push(t),r.set(s,i))}else if(\"object\"===ct(o)){var p=Object.keys(o),l=p[0],d=o[p[0]];if(\"string\"==typeof l&&d.constructor===Array)for(var c=0,u=d.length;c<u;c++){var f=Lt(d[c],\"MM.dd.yyyy\"),h=r.get(f)||[];h.includes(l)||(h.push(l),r.set(f,h))}}}return r}function wr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i<o;i++){var p=me.default(ye.default(e,Pe.default(n[i])),Me.default(n[i])),l=me.default(e,(r+1)*a);at.default(p,t)&&nt.default(p,l)&&s.push(n[i])}return s}function kr(e){return e<10?\"0\".concat(e):\"\".concat(e)}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ot,r=Math.ceil(Te.default(e)/t)*t,a=r-(t-1);return{startPeriod:a,endPeriod:r}}function br(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Te.default(r)<=s),a&&i&&(i=Te.default(a)>=s),i&&n.push(s)}return n}var Cr=function(e){wt(r,e);var t=St(r);function r(e){var a;ut(this,r),mt(bt(a=t.call(this,e)),\"renderOptions\",(function(){var e=a.props.year,t=a.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:a.onChange.bind(bt(a),t)},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=a.props.minDate?Te.default(a.props.minDate):null,n=a.props.maxDate?Te.default(a.props.maxDate):null;return n&&a.state.yearsList.find((function(e){return e===n}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:a.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&a.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:a.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),mt(bt(a),\"onChange\",(function(e){a.props.onChange(e)})),mt(bt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),mt(bt(a),\"shiftYears\",(function(e){var t=a.state.yearsList.map((function(t){return t+e}));a.setState({yearsList:t})})),mt(bt(a),\"incrementYears\",(function(){return a.shiftYears(1)})),mt(bt(a),\"decrementYears\",(function(){return a.shiftYears(-1)}));var n=e.yearDropdownItemNumber,o=e.scrollableYearDropdown,s=n||(o?10:5);return a.state={yearsList:br(a.props.year,s,a.props.minDate,a.props.maxDate)},a}return ht(r,[{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Sr=lt.default(Cr),_r=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(){for(var t=e.props.minDate?Te.default(e.props.minDate):1900,r=e.props.maxDate?Te.default(e.props.maxDate):2100,a=[],n=t;n<=r;n++)a.push(de.default.createElement(\"option\",{key:n,value:n},n));return a})),mt(bt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),mt(bt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:e.props.year,className:\"react-datepicker__year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),mt(bt(e),\"renderReadView\",(function(t){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--selected-year\"},e.props.year))})),mt(bt(e),\"renderDropdown\",(function(){return de.default.createElement(Sr,{key:\"dropdown\",year:e.props.year,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableYearDropdown:e.props.scrollableYearDropdown,yearDropdownItemNumber:e.props.yearDropdownItemNumber})})),mt(bt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.year&&e.props.onChange(t)})),mt(bt(e),\"toggleDropdown\",(function(t){e.setState({dropdownVisible:!e.state.dropdownVisible},(function(){e.props.adjustDateOnChange&&e.handleYearChange(e.props.date,t)}))})),mt(bt(e),\"handleYearChange\",(function(t,r){e.onSelect(t,r),e.setOpen()})),mt(bt(e),\"onSelect\",(function(t,r){e.props.onSelect&&e.props.onSelect(t,r)})),mt(bt(e),\"setOpen\",(function(){e.props.setOpen&&e.props.setOpen(!0)})),e}return ht(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Mr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"renderOptions\",(function(){return e.props.monthNames.map((function(t,r){return de.default.createElement(\"div\",{className:e.props.month===r?\"react-datepicker__month-option react-datepicker__month-option--selected_month\":\"react-datepicker__month-option\",key:t,onClick:e.onChange.bind(bt(e),r)},e.props.month===r?de.default.createElement(\"span\",{className:\"react-datepicker__month-option--selected\"},\"✓\"):\"\",t)}))})),mt(bt(e),\"onChange\",(function(t){return e.props.onChange(t)})),mt(bt(e),\"handleClickOutside\",(function(){return e.props.onCancel()})),e}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown\"},this.renderOptions())}}]),r}(de.default.Component),Pr=lt.default(Mr),Er=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(e){return e.map((function(e,t){return de.default.createElement(\"option\",{key:t,value:t},e)}))})),mt(bt(e),\"renderSelectMode\",(function(t){return de.default.createElement(\"select\",{value:e.props.month,className:\"react-datepicker__month-select\",onChange:function(t){return e.onChange(t.target.value)}},e.renderSelectOptions(t))})),mt(bt(e),\"renderReadView\",(function(t,r){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-read-view\",onClick:e.toggleDropdown},de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--selected-month\"},r[e.props.month]))})),mt(bt(e),\"renderDropdown\",(function(t){return de.default.createElement(Pr,{key:\"dropdown\",month:e.props.month,monthNames:t,onChange:e.onChange,onCancel:e.toggleDropdown})})),mt(bt(e),\"renderScrollMode\",(function(t){var r=e.state.dropdownVisible,a=[e.renderReadView(!r,t)];return r&&a.unshift(e.renderDropdown(t)),a})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.month&&e.props.onChange(t)})),mt(bt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return ht(r,[{key:\"render\",value:function(){var e,t=this,r=[0,1,2,3,4,5,6,7,8,9,10,11].map(this.props.useShortMonthInDropdown?function(e){return Zt(e,t.props.locale)}:function(e){return Xt(e,t.props.locale)});switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode(r);break;case\"select\":e=this.renderSelectMode(r)}return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component);function Nr(e,t){for(var r=[],a=Bt(e),n=Bt(t);!at.default(a,n);)r.push(xt(a)),a=we.default(a,1);return r}var Or=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"renderOptions\",(function(){return a.state.monthYearsList.map((function(e){var t=Ie.default(e),r=Kt(a.props.date,e)&&Qt(a.props.date,e);return de.default.createElement(\"div\",{className:r?\"react-datepicker__month-year-option --selected_month-year\":\"react-datepicker__month-year-option\",key:t,onClick:a.onChange.bind(bt(a),t)},r?de.default.createElement(\"span\",{className:\"react-datepicker__month-year-option--selected\"},\"✓\"):\"\",Lt(e,a.props.dateFormat,a.props.locale))}))})),mt(bt(a),\"onChange\",(function(e){return a.props.onChange(e)})),mt(bt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),a.state={monthYearsList:Nr(a.props.minDate,a.props.maxDate)},a}return ht(r,[{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__month-year-dropdown\":!0,\"react-datepicker__month-year-dropdown--scrollable\":this.props.scrollableMonthYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Yr=lt.default(Or),xr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),mt(bt(e),\"renderSelectOptions\",(function(){for(var t=Bt(e.props.minDate),r=Bt(e.props.maxDate),a=[];!at.default(t,r);){var n=Ie.default(t);a.push(de.default.createElement(\"option\",{key:n,value:n},Lt(t,e.props.dateFormat,e.props.locale))),t=we.default(t,1)}return a})),mt(bt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),mt(bt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:Ie.default(Bt(e.props.date)),className:\"react-datepicker__month-year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),mt(bt(e),\"renderReadView\",(function(t){var r=Lt(e.props.date,e.props.dateFormat,e.props.locale);return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--selected-month-year\"},r))})),mt(bt(e),\"renderDropdown\",(function(){return de.default.createElement(Yr,{key:\"dropdown\",date:e.props.date,dateFormat:e.props.dateFormat,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableMonthYearDropdown:e.props.scrollableMonthYearDropdown,locale:e.props.locale})})),mt(bt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),mt(bt(e),\"onChange\",(function(t){e.toggleDropdown();var r=xt(parseInt(t));Kt(e.props.date,r)&&Qt(e.props.date,r)||e.props.onChange(r)})),mt(bt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return ht(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Tr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"dayEl\",de.default.createRef()),mt(bt(e),\"handleClick\",(function(t){!e.isDisabled()&&e.props.onClick&&e.props.onClick(t)})),mt(bt(e),\"handleMouseEnter\",(function(t){!e.isDisabled()&&e.props.onMouseEnter&&e.props.onMouseEnter(t)})),mt(bt(e),\"handleOnKeyDown\",(function(t){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),e.props.handleOnKeyDown(t)})),mt(bt(e),\"isSameDay\",(function(t){return Ut(e.props.day,t)})),mt(bt(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!e.isSameDay(e.props.selected)&&e.isSameDay(e.props.preSelection)})),mt(bt(e),\"isDisabled\",(function(){return tr(e.props.day,e.props)})),mt(bt(e),\"isExcluded\",(function(){return rr(e.props.day,e.props)})),mt(bt(e),\"getHighLightedClass\",(function(t){var r=e.props,a=r.day,n=r.highlightDates;if(!n)return!1;var o=Lt(a,\"MM.dd.yyyy\");return n.get(o)})),mt(bt(e),\"isInRange\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&zt(r,a,n)})),mt(bt(e),\"isInSelectingRange\",(function(){var t=e.props,r=t.day,a=t.selectsStart,n=t.selectsEnd,o=t.selectsRange,s=t.selectingDate,i=t.startDate,p=t.endDate;return!(!(a||n||o)||!s||e.isDisabled())&&(a&&p&&(nt.default(s,p)||$t(s,p))?zt(r,s,p):(n&&i&&(at.default(s,i)||$t(s,i))||!(!o||!i||p||!at.default(s,i)&&!$t(s,i)))&&zt(r,i,s))})),mt(bt(e),\"isSelectingRangeStart\",(function(){if(!e.isInSelectingRange())return!1;var t=e.props,r=t.day,a=t.selectingDate,n=t.startDate;return Ut(r,t.selectsStart?a:n)})),mt(bt(e),\"isSelectingRangeEnd\",(function(){if(!e.isInSelectingRange())return!1;var t=e.props,r=t.day,a=t.selectingDate,n=t.endDate;return Ut(r,t.selectsEnd?a:n)})),mt(bt(e),\"isRangeStart\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Ut(a,r)})),mt(bt(e),\"isRangeEnd\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Ut(n,r)})),mt(bt(e),\"isWeekend\",(function(){var t=Ee.default(e.props.day);return 0===t||6===t})),mt(bt(e),\"isOutsideMonth\",(function(){return void 0!==e.props.month&&e.props.month!==Ye.default(e.props.day)})),mt(bt(e),\"getClassNames\",(function(t){var r=e.props.dayClassName?e.props.dayClassName(t):void 0;return ce.default(\"react-datepicker__day\",r,\"react-datepicker__day--\"+qt(e.props.day),{\"react-datepicker__day--disabled\":e.isDisabled(),\"react-datepicker__day--excluded\":e.isExcluded(),\"react-datepicker__day--selected\":e.isSameDay(e.props.selected),\"react-datepicker__day--keyboard-selected\":e.isKeyboardSelected(),\"react-datepicker__day--range-start\":e.isRangeStart(),\"react-datepicker__day--range-end\":e.isRangeEnd(),\"react-datepicker__day--in-range\":e.isInRange(),\"react-datepicker__day--in-selecting-range\":e.isInSelectingRange(),\"react-datepicker__day--selecting-range-start\":e.isSelectingRangeStart(),\"react-datepicker__day--selecting-range-end\":e.isSelectingRangeEnd(),\"react-datepicker__day--today\":e.isSameDay(xt()),\"react-datepicker__day--weekend\":e.isWeekend(),\"react-datepicker__day--outside-month\":e.isOutsideMonth()},e.getHighLightedClass(\"react-datepicker__day--highlighted\"))})),mt(bt(e),\"getAriaLabel\",(function(){var t=e.props,r=t.day,a=t.ariaLabelPrefixWhenEnabled,n=void 0===a?\"Choose\":a,o=t.ariaLabelPrefixWhenDisabled,s=void 0===o?\"Not available\":o,i=e.isDisabled()||e.isExcluded()?s:n;return\"\".concat(i,\" \").concat(Lt(r,\"PPPP\"))})),mt(bt(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return e.isKeyboardSelected()||e.isSameDay(a)&&Ut(n,a)?0:-1})),mt(bt(e),\"handleFocusDay\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(r=!0)),r&&e.dayEl.current.focus({preventScroll:!0})})),mt(bt(e),\"renderDayContents\",(function(){if(e.isOutsideMonth()){if(e.props.monthShowsDuplicateDaysEnd&&Ne.default(e.props.day)<10)return null;if(e.props.monthShowsDuplicateDaysStart&&Ne.default(e.props.day)>20)return null}return e.props.renderDayContents?e.props.renderDayContents(Ne.default(e.props.day),e.props.day):Ne.default(e.props.day)})),mt(bt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"button\",\"aria-disabled\":e.isDisabled()},e.renderDayContents())})),e}return ht(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),Ir=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"handleClick\",(function(t){e.props.onClick&&e.props.onClick(t)})),e}return ht(r,[{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,a=void 0===r?\"week \":r,n={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick};return de.default.createElement(\"div\",{className:ce.default(n),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick},t)}}]),r}(de.default.Component),Lr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r)})),mt(bt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),mt(bt(e),\"handleWeekClick\",(function(t,r,a){\"function\"==typeof e.props.onWeekSelect&&e.props.onWeekSelect(t,r,a),e.props.shouldCloseOnSelect&&e.props.setOpen(!1)})),mt(bt(e),\"formatWeekNumber\",(function(t){return e.props.formatWeekNumber?e.props.formatWeekNumber(t):Rt(t)})),mt(bt(e),\"renderDays\",(function(){var t=Wt(e.props.day,e.props.locale),r=[],a=e.formatWeekNumber(t);if(e.props.showWeekNumber){var n=e.props.onWeekSelect?e.handleWeekClick.bind(bt(e),t,a):void 0;r.push(de.default.createElement(Ir,{key:\"W\",weekNumber:a,onClick:n,ariaLabelPrefix:e.props.ariaLabelPrefix}))}return r.concat([0,1,2,3,4,5,6].map((function(r){var a=ve.default(t,r);return de.default.createElement(Tr,{ariaLabelPrefixWhenEnabled:e.props.chooseDayAriaLabelPrefix,ariaLabelPrefixWhenDisabled:e.props.disabledDayAriaLabelPrefix,key:a.valueOf(),day:a,month:e.props.month,onClick:e.handleDayClick.bind(bt(e),a),onMouseEnter:e.handleDayMouseEnter.bind(bt(e),a),minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,includeDates:e.props.includeDates,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,renderDayContents:e.props.renderDayContents,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})})))})),e}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__week\"},this.renderDays())}}],[{key:\"defaultProps\",get:function(){return{shouldCloseOnSelect:!0}}}]),r}(de.default.Component),Fr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"MONTH_REFS\",_t(Array(12)).map((function(){return de.default.createRef()}))),mt(bt(e),\"isDisabled\",(function(t){return tr(t,e.props)})),mt(bt(e),\"isExcluded\",(function(t){return rr(t,e.props)})),mt(bt(e),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r,e.props.orderInDisplay)})),mt(bt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),mt(bt(e),\"handleMouseLeave\",(function(){e.props.onMouseLeave&&e.props.onMouseLeave()})),mt(bt(e),\"isRangeStartMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Qt(qe.default(a,t),n)})),mt(bt(e),\"isRangeStartQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Vt(Ae.default(a,t),n)})),mt(bt(e),\"isRangeEndMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Qt(qe.default(a,t),o)})),mt(bt(e),\"isRangeEndQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Vt(Ae.default(a,t),o)})),mt(bt(e),\"isWeekInMonth\",(function(t){var r=e.props.day,a=ve.default(t,6);return Qt(t,r)||Qt(a,r)})),mt(bt(e),\"renderWeeks\",(function(){for(var t=[],r=e.props.fixedHeight,a=Wt(Bt(e.props.day),e.props.locale),n=0,o=!1;t.push(de.default.createElement(Lr,{ariaLabelPrefix:e.props.weekAriaLabelPrefix,chooseDayAriaLabelPrefix:e.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:e.props.disabledDayAriaLabelPrefix,key:n,day:a,month:Ye.default(e.props.day),onDayClick:e.handleDayClick,onDayMouseEnter:e.handleDayMouseEnter,onWeekSelect:e.props.onWeekSelect,formatWeekNumber:e.props.formatWeekNumber,locale:e.props.locale,minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,includeDates:e.props.includeDates,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,showWeekNumber:e.props.showWeekNumbers,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,setOpen:e.props.setOpen,shouldCloseOnSelect:e.props.shouldCloseOnSelect,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,renderDayContents:e.props.renderDayContents,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})),!o;){n++,a=De.default(a,1);var s=r&&n>=6,i=!r&&!e.isWeekInMonth(a);if(s||i){if(!e.props.peekNextMonth)break;o=!0}}return t})),mt(bt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Bt(qe.default(e.props.day,r)),t)})),mt(bt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),mt(bt(e),\"onMonthKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onMonthClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,Ce.default(e.props.preSelection,1))}})),mt(bt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Ht(Ae.default(e.props.day,r)),t)})),mt(bt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,d=r.monthClassName,c=d?d(a):void 0;return ce.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),c,{\"react-datepicker__month--disabled\":(i||p)&&ar(qe.default(a,t),e.props),\"react-datepicker__month--selected\":Ye.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__month-text--keyboard-selected\":Ye.default(l)===t,\"react-datepicker__month--in-range\":nr(n,o,t,a),\"react-datepicker__month--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month--range-end\":e.isRangeEndMonth(t)})})),mt(bt(e),\"getTabIndex\",(function(t){var r=Ye.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),mt(bt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.ariaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=qe.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Lt(p,\"MMMM yyyy\"))})),mt(bt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate;return ce.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter--disabled\":(i||p)&&or(Ae.default(a,t),e.props),\"react-datepicker__quarter--selected\":xe.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__quarter--in-range\":ir(n,o,t,a),\"react-datepicker__quarter--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter--range-end\":e.isRangeEndQuarter(t)})})),mt(bt(e),\"renderMonths\",(function(){var t=e.props,r=t.showFullMonthYearPicker,a=t.showTwoColumnMonthYearPicker,n=t.showFourColumnMonthYearPicker,o=t.locale;return(n?[[0,1,2,3],[4,5,6,7],[8,9,10,11]]:a?[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]]).map((function(t,a){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:a},t.map((function(t,a){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:a,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"button\",\"aria-label\":e.getAriaLabel(t)},r?Xt(t,o):Zt(t,o))})))}))})),mt(bt(e),\"renderQuarters\",(function(){return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,r){return de.default.createElement(\"div\",{key:r,onClick:function(r){e.onQuarterClick(r,t)},className:e.getQuarterClassNames(t)},er(t,e.props.locale))})))})),mt(bt(e),\"getClassNames\",(function(){var t=e.props;t.day;var r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ce.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return ht(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Lt(a,\"yyyy-MM\"))},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),Rr=function(e){wt(r,e);var t=St(r);function r(){var e;ut(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return mt(bt(e=t.call.apply(t,[this].concat(n))),\"state\",{height:null}),mt(bt(e),\"handleClick\",(function(t){(e.props.minTime||e.props.maxTime)&&cr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&dr(t,e.props)||e.props.onChange(t)})),mt(bt(e),\"liClasses\",(function(t,r,a){var n=[\"react-datepicker__time-list-item\",e.props.timeClassName?e.props.timeClassName(t,r,a):void 0];return e.props.selected&&r===Pe.default(t)&&a===Me.default(t)&&n.push(\"react-datepicker__time-list-item--selected\"),((e.props.minTime||e.props.maxTime)&&cr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&dr(t,e.props))&&n.push(\"react-datepicker__time-list-item--disabled\"),e.props.injectTimes&&(60*Pe.default(t)+Me.default(t))%e.props.intervals!=0&&n.push(\"react-datepicker__time-list-item--injected\"),n.join(\" \")})),mt(bt(e),\"renderTimes\",(function(){for(var t=[],r=e.props.format?e.props.format:\"p\",a=e.props.intervals,n=At(xt(e.props.selected)),o=1440/a,s=e.props.injectTimes&&e.props.injectTimes.sort((function(e,t){return e-t})),i=e.props.selected||e.props.openToDate||xt(),p=Pe.default(i),l=Me.default(i),d=Re.default(Fe.default(n,l),p),c=0;c<o;c++){var u=me.default(n,c*a);if(t.push(u),s){var f=wr(n,u,c,a,s);t=t.concat(f)}}return t.map((function(t,a){return de.default.createElement(\"li\",{key:a,onClick:e.handleClick.bind(bt(e),t),className:e.liClasses(t,p,l),ref:function(r){(nt.default(t,d)||$t(t,d))&&(e.centerLi=r)},tabIndex:\"0\"},Lt(t,r,e.props.locale))}))})),e}return ht(r,[{key:\"componentDidMount\",value:function(){this.list.scrollTop=r.calcCenterPosition(this.props.monthRef?this.props.monthRef.clientHeight-this.header.clientHeight:this.list.clientHeight,this.centerLi),this.props.monthRef&&this.header&&this.setState({height:this.props.monthRef.clientHeight-this.header.clientHeight})}},{key:\"render\",value:function(){var e=this,t=this.state.height;return de.default.createElement(\"div\",{className:\"react-datepicker__time-container \".concat(this.props.todayButton?\"react-datepicker__time-container--with-today-button\":\"\")},de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--time \".concat(this.props.showTimeSelectOnly?\"react-datepicker__header--time--only\":\"\"),ref:function(t){e.header=t}},de.default.createElement(\"div\",{className:\"react-datepicker-time__header\"},this.props.timeCaption)),de.default.createElement(\"div\",{className:\"react-datepicker__time\"},de.default.createElement(\"div\",{className:\"react-datepicker__time-box\"},de.default.createElement(\"ul\",{className:\"react-datepicker__time-list\",ref:function(t){e.list=t},style:t?{height:t}:{},tabIndex:\"0\"},this.renderTimes()))))}}],[{key:\"defaultProps\",get:function(){return{intervals:30,onTimeChange:function(){},todayButton:null,timeCaption:\"Time\"}}}]),r}(de.default.Component);mt(Rr,\"calcCenterPosition\",(function(e,t){return t.offsetTop-(e/2-t.clientHeight/2)}));var qr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"handleYearClick\",(function(e,t){a.props.onDayClick&&a.props.onDayClick(e,t)})),mt(bt(a),\"isSameDay\",(function(e,t){return Ut(e,t)})),mt(bt(a),\"isKeyboardSelected\",(function(e){var t=jt(We.default(a.props.date,e));return!a.props.disabledKeyboardNavigation&&!a.props.inline&&!Ut(t,jt(a.props.selected))&&Ut(t,jt(a.props.preSelection))})),mt(bt(a),\"onYearClick\",(function(e,t){var r=a.props.date;a.handleYearClick(jt(We.default(r,t)),e)})),mt(bt(a),\"getYearClassNames\",(function(e){var t=a.props,r=t.minDate,n=t.maxDate,o=t.selected;return ce.default(\"react-datepicker__year-text\",{\"react-datepicker__year-text--selected\":e===Te.default(o),\"react-datepicker__year-text--disabled\":(r||n)&&sr(e,a.props),\"react-datepicker__year-text--keyboard-selected\":a.isKeyboardSelected(e),\"react-datepicker__year-text--today\":e===Te.default(xt())})})),a}return ht(r,[{key:\"render\",value:function(){for(var e=this,t=[],r=this.props,a=gr(r.date,r.yearItemNumber),n=a.startPeriod,o=a.endPeriod,s=function(r){t.push(de.default.createElement(\"div\",{onClick:function(t){e.onYearClick(t,r)},className:e.getYearClassNames(r),key:r},r))},i=n;i<=o;i++)s(i);return de.default.createElement(\"div\",{className:\"react-datepicker__year\"},de.default.createElement(\"div\",{className:\"react-datepicker__year-wrapper\"},t))}}]),r}(de.default.Component),Ar=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"onTimeChange\",(function(e){a.setState({time:e});var t=new Date;t.setHours(e.split(\":\")[0]),t.setMinutes(e.split(\":\")[1]),a.props.onChange(t)})),mt(bt(a),\"renderTimeInput\",(function(){var e=a.state.time,t=a.props,r=t.date,n=t.timeString,o=t.customTimeInput;return o?de.default.cloneElement(o,{date:r,value:e,onChange:a.onTimeChange}):de.default.createElement(\"input\",{type:\"time\",className:\"react-datepicker-time__input\",placeholder:\"Time\",name:\"time-input\",required:!0,value:e,onChange:function(e){a.onTimeChange(e.target.value||n)}})})),a.state={time:a.props.timeString},a}return ht(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__input-time-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__caption\"},this.props.timeInputLabel),de.default.createElement(\"div\",{className:\"react-datepicker-time__input-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__input\"},this.renderTimeInput())))}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){return e.timeString!==t.time?{time:e.timeString}:null}}]),r}(de.default.Component);function Wr(e){var t=e.className,r=e.children,a=e.showPopperArrow,n=e.arrowProps,o=void 0===n?{}:n;return de.default.createElement(\"div\",{className:t},a&&de.default.createElement(\"div\",yt({className:\"react-datepicker__triangle\"},o)),r)}var Br=[\"react-datepicker__year-select\",\"react-datepicker__month-select\",\"react-datepicker__month-year-select\"],jr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"handleClickOutside\",(function(e){a.props.onClickOutside(e)})),mt(bt(a),\"setClickOutsideRef\",(function(){return a.containerRef.current})),mt(bt(a),\"handleDropdownFocus\",(function(e){(function(){var e=((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Br.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),mt(bt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=yr(a.props),s=vr(a.props),i=xt(),p=n||r||t;return p||(o&&nt.default(i,o)?o:s&&at.default(i,s)?s:i)})),mt(bt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:Ce.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),mt(bt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),mt(bt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&a.props.onYearChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleMonthChange\",(function(e){a.props.onMonthChange&&a.props.onMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),mt(bt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),mt(bt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:qe.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),mt(bt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(qe.default(r,Ye.default(e)),Te.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),mt(bt(a),\"header\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=Wt(e,a.props.locale),r=[];return a.props.showWeekNumbers&&r.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),r.concat([0,1,2,3,4,5,6].map((function(e){var r=ve.default(t,e),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:e,className:ce.default(\"react-datepicker__day-name\",o)},n)})))})),mt(bt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Lt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Lt(e,\"EEE\",t)}(e,t):function(e,t){return Lt(e,\"EEEEEE\",t)}(e,t)})),mt(bt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Se.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=hr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=gr(jt(Se.default(e,n)),n).endPeriod,s=r&&Te.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=ur(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthAriaLabel,i=void 0===s?\"Previous Month\":s,p=o.previousYearAriaLabel,l=void 0===p?\"Previous Year\":p;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,\"aria-label\":n?l:i},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel)}}})),mt(bt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:ke.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),mt(bt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=mr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=gr(ke.default(e,n),n).startPeriod,s=r&&Te.default(r);return s&&s<o||!1}(a.state.date,a.props);break;default:e=fr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--next\"];a.props.showTimeSelect&&t.push(\"react-datepicker__navigation--next--with-time\"),a.props.todayButton&&t.push(\"react-datepicker__navigation--next--with-today-button\");var r=a.increaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.increaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--next--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.nextMonthAriaLabel,i=void 0===s?\"Next Month\":s,p=o.nextYearAriaLabel,l=void 0===p?\"Next Year\":p;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,\"aria-label\":n?l:i},n?a.props.nextYearButtonLabel:a.props.nextMonthButtonLabel)}}})),mt(bt(a),\"renderCurrentMonth\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Lt(e,a.props.dateFormat,a.props.locale))})),mt(bt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(_r,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Te.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),mt(bt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Er,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Ye.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),mt(bt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(xr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),mt(bt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.props.onSelect(Ve.default(xt()),e)}},a.props.todayButton)})),mt(bt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),mt(bt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=ur(a.state.date,a.props),o=fr(a.state.date,a.props),s=hr(a.state.date,a.props),i=mr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),mt(bt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=gr(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Te.default(e))})),mt(bt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),mt(bt(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var e=[],t=a.props.showPreviousMonths?a.props.monthsShown-1:0,r=Ce.default(a.state.date,t),n=0;n<a.props.monthsShown;++n){var o=n-a.props.monthSelectedIn,s=we.default(r,o),i=\"month-\".concat(n),p=n<a.props.monthsShown-1,l=n>0;e.push(de.default.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:s,i:n}),de.default.createElement(Fr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,onChange:a.changeMonthYear,day:s,dayClassName:a.props.dayClassName,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:n,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:p,monthShowsDuplicateDaysStart:l})))}return e}})),mt(bt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(qr,yt({onDayClick:a.handleDayClick,date:a.state.date},a.props))):void 0})),mt(bt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(Rr,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,showTimeSelectOnly:a.props.showTimeSelectOnly})})),mt(bt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=It(e)&&Boolean(a.props.selected)?\"\".concat(kr(e.getHours()),\":\").concat(kr(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Ar,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null},a}return ht(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){this.props.preSelection&&!Ut(this.props.preSelection,e.preSelection)?this.setState({date:this.props.preSelection}):this.props.openToDate&&!Ut(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate})}},{key:\"render\",value:function(){var e=this.props.container||Wr;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ce.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.props.children))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Ot}}}]),r}(de.default.Component),Hr=function(e){return!e.disabled&&-1!==e.tabIndex},Kr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(Hr)})),mt(bt(a),\"handleFocusStart\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[t.length-1].focus()})),mt(bt(a),\"handleFocusEnd\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return ht(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),Qr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return ht(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=document.getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),document.body.appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return dt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),Vr=function(e){wt(r,e);var t=St(r);function r(){return ut(this,r),t.apply(this,arguments)}return ht(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,d=t.enableTabLoop,c=t.popperOnKeyDown,u=t.portalId;if(!n){var f=ce.default(\"react-datepicker-popper\",r);e=de.default.createElement(ie.Popper,yt({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(Kr,{enableTabLoop:d},de.default.createElement(\"div\",{ref:t,style:r,className:f,\"data-placement\":a,onKeyDown:c},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(Qr,{portalId:u},e));var h=ce.default(\"react-datepicker-wrapper\",a);return de.default.createElement(ie.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(ie.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:h},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:{preventOverflow:{enabled:!0,escapeWithReference:!0,boundariesElement:\"viewport\"}},popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),Ur=\"react-datepicker-ignore-onclickoutside\",$r=lt.default(jr);var zr=\"Date input not valid.\",Gr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ut(this,r),mt(bt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:xt()})),mt(bt(a),\"calcInitialState\",(function(){var e=a.getPreSelection(),t=yr(a.props),r=vr(a.props),n=t&&nt.default(e,Ve.default(t))?t:r&&at.default(e,Je.default(r))?r:e;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:a.props.selected?a.props.selected:n,highlightDates:Dr(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1}})),mt(bt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),mt(bt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),mt(bt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),mt(bt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:Xr},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),mt(bt(a),\"inputOk\",(function(){return ue.default(a.state.preSelection)})),mt(bt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),mt(bt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),mt(bt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),mt(bt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),mt(bt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),mt(bt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),mt(bt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),mt(bt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0];if(!a.props.onChangeRaw||(a.props.onChangeRaw.apply(bt(a),t),\"function\"==typeof n.isDefaultPrevented&&!n.isDefaultPrevented())){a.setState({inputValue:n.target.value,lastPreSelectChange:Jr});var o=Tt(n.target.value,a.props.dateFormat,a.props.locale,a.props.strictParsing);!o&&n.target.value||a.setSelected(o,n,!0)}})),mt(bt(a),\"handleSelect\",(function(e,t,r){a.setState({preventFocus:!0},(function(){return a.preventFocusTimeout=setTimeout((function(){return a.setState({preventFocus:!1})}),50),a.preventFocusTimeout})),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.setSelected(e,t,!1,r),!a.props.shouldCloseOnSelect||a.props.showTimeSelect?a.setPreSelection(e):a.props.inline||a.setOpen(!1)})),mt(bt(a),\"setSelected\",(function(e,t,r,n){var o=e;if(null===o||!tr(o,a.props)){var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,d=s.endDate;if(!$t(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Ft(o,{hour:Pe.default(a.props.selected),minute:Me.default(a.props.selected),second:_e.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var c=l&&!d,u=l&&d;!l&&!d?i([o,null],t):c&&(nt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))}})),mt(bt(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){var o=Ve.default(e);if(t&&r)n=zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=Ve.default(a.props.minDate);n=at.default(e,s)||$t(o,s)}else if(r){var i=Je.default(a.props.maxDate);n=nt.default(e,i)||$t(o,i)}}n&&a.setState({preSelection:e})})),mt(bt(a),\"handleTimeChange\",(function(e){var t=Ft(a.props.selected?a.props.selected:a.getPreSelection(),{hour:Pe.default(e),minute:Me.default(e)});a.setState({preSelection:t}),a.props.onChange(t),a.props.shouldCloseOnSelect&&a.setOpen(!1),a.props.showTimeInput&&a.setOpen(!0),a.setState({inputValue:null})})),mt(bt(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),mt(bt(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.calendar.componentNode&&a.calendar.componentNode.querySelector('.react-datepicker__day[tabindex=\"0\"]');return void(r&&r.focus({preventScroll:!0}))}var n=xt(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===Xr?(a.handleSelect(n,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(n)):a.setOpen(!1)):\"Escape\"===t&&(e.preventDefault(),a.setOpen(!1)),a.inputOk()||a.props.onInputError({code:1,msg:zr})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),mt(bt(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=xt(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:zr});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=ge.default(r,1);break;case\"ArrowRight\":n=ve.default(r,1);break;case\"ArrowUp\":n=be.default(r,1);break;case\"ArrowDown\":n=De.default(r,1);break;case\"PageUp\":n=Ce.default(r,1);break;case\"PageDown\":n=we.default(r,1);break;case\"Home\":n=Se.default(r,1);break;case\"End\":n=ke.default(r,1)}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:zr}));if(e.preventDefault(),a.setState({lastPreSelectChange:Xr}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Ye.default(r),s=Ye.default(n),i=Te.default(r),p=Te.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),mt(bt(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),mt(bt(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.props.onChange(null,e),a.setState({inputValue:null})})),mt(bt(a),\"clear\",(function(){a.onClearClick()})),mt(bt(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),mt(bt(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement($r,{ref:function(e){a.calendar=e},locale:a.props.locale,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,includeDates:a.props.includeDates,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:Ur,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),mt(bt(a),\"renderDateInput\",(function(){var e,t,r,n,o,s=ce.default(a.props.className,mt({},Ur,a.state.open)),i=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),p=a.props.customInputRef||\"ref\",l=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:(t=a.props.selected,r=a.props,n=r.dateFormat,o=r.locale,t&&Lt(t,Array.isArray(n)?n[0]:n,o)||\"\");return de.default.cloneElement(i,(mt(e={},p,(function(e){a.input=e})),mt(e,\"value\",l),mt(e,\"onBlur\",a.handleBlur),mt(e,\"onChange\",a.handleChange),mt(e,\"onClick\",a.onInputClick),mt(e,\"onFocus\",a.handleFocus),mt(e,\"onKeyDown\",a.onInputKeyDown),mt(e,\"id\",a.props.id),mt(e,\"name\",a.props.name),mt(e,\"autoFocus\",a.props.autoFocus),mt(e,\"placeholder\",a.props.placeholderText),mt(e,\"disabled\",a.props.disabled),mt(e,\"autoComplete\",a.props.autoComplete),mt(e,\"className\",ce.default(i.props.className,s)),mt(e,\"title\",a.props.title),mt(e,\"readOnly\",a.props.readOnly),mt(e,\"required\",a.props.required),mt(e,\"tabIndex\",a.props.tabIndex),mt(e,\"aria-describedby\",a.props.ariaDescribedBy),mt(e,\"aria-invalid\",a.props.ariaInvalid),mt(e,\"aria-labelledby\",a.props.ariaLabelledBy),mt(e,\"aria-required\",a.props.ariaRequired),e))})),mt(bt(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.selected,n=e.clearButtonTitle,o=e.clearButtonClassName,s=e.ariaLabelClose,i=void 0===s?\"Close\":s;return t&&null!=r?de.default.createElement(\"button\",{type:\"button\",className:\"react-datepicker__close-icon \".concat(o),\"aria-label\":i,onClick:a.onClearClick,title:n,tabIndex:-1}):null})),a.state=a.calcInitialState(),a}return ht(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Ye.default(r)!==Ye.default(a)||Te.default(r)!==Te.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:Dr(this.props.highlightDates)}),t.focused||$t(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"render\",value:function(){var e=this.renderCalendar();return this.props.inline&&!this.props.withPortal?e:this.props.withPortal?de.default.createElement(\"div\",null,this.props.inline?null:de.default.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),this.state.open||this.props.inline?de.default.createElement(\"div\",{className:\"react-datepicker__portal\"},e):null):de.default.createElement(Vr,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,popperModifiers:this.props.popperModifiers,targetComponent:de.default.createElement(\"div\",{className:\"react-datepicker__input-container\"},this.renderDateInput(),this.renderClearButton()),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Ot,renderDayContents:function(e){return e},focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null}}}]),r}(de.default.Component),Jr=\"input\",Xr=\"navigate\";e.CalendarContainer=Wr,e.default=Gr,e.getDefaultLocale=Gt,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:global;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:global).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyType.Set ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\tstate.copy_![prop] === value &&\n\t\t\t// special case: NaN\n\t\t\ttypeof value !== \"number\" &&\n\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t(value !== undefined || prop in state.copy_)\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (\n\t\targ1: any,\n\t\targ2?: any,\n\t\targ3?: any\n\t): any => {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import { Ancestor, Editor, Node, RangeRef } from 'slate'\nimport { Key } from './key'\nimport { TextInsertion } from '../components/android/diff-text'\n\n/**\n * Two weak maps that allow us rebuild a path given a node. They are populated\n * at render time such that after a render occurs we can always backtrack.\n */\n\nexport const NODE_TO_INDEX: WeakMap<Node, number> = new WeakMap()\nexport const NODE_TO_PARENT: WeakMap<Node, Ancestor> = new WeakMap()\n\n/**\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\n * are used to resolve DOM event-related logic into Slate actions.\n */\nexport const EDITOR_TO_WINDOW: WeakMap<Editor, Window> = new WeakMap()\nexport const EDITOR_TO_ELEMENT: WeakMap<Editor, HTMLElement> = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER: WeakMap<Editor, string> = new WeakMap()\nexport const ELEMENT_TO_NODE: WeakMap<HTMLElement, Node> = new WeakMap()\nexport const NODE_TO_ELEMENT: WeakMap<Node, HTMLElement> = new WeakMap()\nexport const NODE_TO_KEY: WeakMap<Node, Key> = new WeakMap()\nexport const EDITOR_TO_KEY_TO_ELEMENT: WeakMap<\n Editor,\n WeakMap<Key, HTMLElement>\n> = new WeakMap()\n\n/**\n * Weak maps for storing editor-related state.\n */\n\nexport const IS_READ_ONLY: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_FOCUSED: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_DRAGGING: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_CLICKING: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_COMPOSING: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_ON_COMPOSITION_END: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const EDITOR_TO_USER_SELECTION: WeakMap<Editor, RangeRef> = new WeakMap()\n\n/**\n * Weak maps for saving text on composition stage.\n */\n\nexport const EDITOR_ON_COMPOSITION_TEXT: WeakMap<\n Editor,\n TextInsertion[]\n> = new WeakMap()\n\n/**\n * Weak map for associating the context `onChange` context with the plugin.\n */\n\nexport const EDITOR_TO_ON_CHANGE = new WeakMap<Editor, () => void>()\n\nexport const NODE_TO_RESTORE_DOM = new WeakMap<Node, () => void>()\n\n/**\n * Symbols.\n */\n\nexport const PLACEHOLDER_SYMBOL = (Symbol('placeholder') as unknown) as string\n","import {\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n PointRef,\n Range,\n RangeRef,\n Text,\n Transforms,\n} from './'\nimport { DIRTY_PATHS, DIRTY_PATH_KEYS, FLUSHING } from './utils/weak-maps'\nimport { TextUnit } from './interfaces/types'\n\n/**\n * Create a new Slate `Editor` object.\n */\n\nexport const createEditor = (): Editor => {\n const editor: Editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isInline: () => false,\n isVoid: () => false,\n onChange: () => {},\n\n apply: (op: Operation) => {\n for (const ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op)\n }\n\n for (const ref of Editor.pointRefs(editor)) {\n PointRef.transform(ref, op)\n }\n\n for (const ref of Editor.rangeRefs(editor)) {\n RangeRef.transform(ref, op)\n }\n\n const oldDirtyPaths = DIRTY_PATHS.get(editor) || []\n const oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set()\n let dirtyPaths: Path[]\n let dirtyPathKeys: Set<string>\n\n const add = (path: Path | null) => {\n if (path) {\n const key = path.join(',')\n\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key)\n dirtyPaths.push(path)\n }\n }\n }\n\n if (Path.operationCanTransformPath(op)) {\n dirtyPaths = []\n dirtyPathKeys = new Set()\n for (const path of oldDirtyPaths) {\n const newPath = Path.transform(path, op)\n add(newPath)\n }\n } else {\n dirtyPaths = oldDirtyPaths\n dirtyPathKeys = oldDirtyPathKeys\n }\n\n const newDirtyPaths = getDirtyPaths(op)\n for (const path of newDirtyPaths) {\n add(path)\n }\n\n DIRTY_PATHS.set(editor, dirtyPaths)\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys)\n Transforms.transform(editor, op)\n editor.operations.push(op)\n Editor.normalize(editor)\n\n // Clear any formats applied to the cursor if the selection changes.\n if (op.type === 'set_selection') {\n editor.marks = null\n }\n\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true)\n\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false)\n editor.onChange()\n editor.operations = []\n })\n }\n },\n\n addMark: (key: string, value: any) => {\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(\n editor,\n { [key]: value },\n { match: Text.isText, split: true }\n )\n } else {\n const marks = {\n ...(Editor.marks(editor) || {}),\n [key]: value,\n }\n\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n },\n\n deleteBackward: (unit: TextUnit) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit, reverse: true })\n }\n },\n\n deleteForward: (unit: TextUnit) => {\n const { selection } = editor\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, { unit })\n }\n },\n\n deleteFragment: (direction?: 'forward' | 'backward') => {\n const { selection } = editor\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, { reverse: direction === 'backward' })\n }\n },\n\n getFragment: () => {\n const { selection } = editor\n\n if (selection) {\n return Node.fragment(editor, selection)\n }\n return []\n },\n\n insertBreak: () => {\n Transforms.splitNodes(editor, { always: true })\n },\n\n insertSoftBreak: () => {\n Transforms.splitNodes(editor, { always: true })\n },\n\n insertFragment: (fragment: Node[]) => {\n Transforms.insertFragment(editor, fragment)\n },\n\n insertNode: (node: Node) => {\n Transforms.insertNodes(editor, node)\n },\n\n insertText: (text: string) => {\n const { selection, marks } = editor\n\n if (selection) {\n if (marks) {\n const node = { text, ...marks }\n Transforms.insertNodes(editor, node)\n } else {\n Transforms.insertText(editor, text)\n }\n\n editor.marks = null\n }\n },\n\n normalizeNode: (entry: NodeEntry) => {\n const [node, path] = entry\n\n // There are no core normalizations for text nodes.\n if (Text.isText(node)) {\n return\n }\n\n // Ensure that block and inline nodes have at least one text child.\n if (Element.isElement(node) && node.children.length === 0) {\n const child = { text: '' }\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true,\n })\n return\n }\n\n // Determine whether the node should have block or inline children.\n const shouldHaveInlines = Editor.isEditor(node)\n ? false\n : Element.isElement(node) &&\n (editor.isInline(node) ||\n node.children.length === 0 ||\n Text.isText(node.children[0]) ||\n editor.isInline(node.children[0]))\n\n // Since we'll be applying operations while iterating, keep track of an\n // index that accounts for any added/removed nodes.\n let n = 0\n\n for (let i = 0; i < node.children.length; i++, n++) {\n const currentNode = Node.get(editor, path)\n if (Text.isText(currentNode)) continue\n const child = node.children[i] as Descendant\n const prev = currentNode.children[n - 1] as Descendant\n const isLast = i === node.children.length - 1\n const isInlineOrText =\n Text.isText(child) ||\n (Element.isElement(child) && editor.isInline(child))\n\n // Only allow block nodes in the top-level children and parent blocks\n // that only contain block nodes. Similarly, only allow inline nodes in\n // other inline nodes, or parent blocks that only contain inlines and\n // text.\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (Element.isElement(child)) {\n // Ensure that inline nodes are surrounded by text nodes.\n if (editor.isInline(child)) {\n if (prev == null || !Text.isText(prev)) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n),\n voids: true,\n })\n n++\n } else if (isLast) {\n const newChild = { text: '' }\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n + 1),\n voids: true,\n })\n n++\n }\n }\n } else {\n // Merge adjacent text nodes that are empty or match.\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(child, prev, { loose: true })) {\n Transforms.mergeNodes(editor, { at: path.concat(n), voids: true })\n n--\n } else if (prev.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n - 1),\n voids: true,\n })\n n--\n } else if (child.text === '') {\n Transforms.removeNodes(editor, {\n at: path.concat(n),\n voids: true,\n })\n n--\n }\n }\n }\n }\n },\n\n removeMark: (key: string) => {\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, {\n match: Text.isText,\n split: true,\n })\n } else {\n const marks = { ...(Editor.marks(editor) || {}) }\n delete marks[key]\n editor.marks = marks\n if (!FLUSHING.get(editor)) {\n editor.onChange()\n }\n }\n }\n },\n }\n\n return editor\n}\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\n\nconst getDirtyPaths = (op: Operation): Path[] => {\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node': {\n const { path } = op\n return Path.levels(path)\n }\n\n case 'insert_node': {\n const { node, path } = op\n const levels = Path.levels(path)\n const descendants = Text.isText(node)\n ? []\n : Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n\n return [...levels, ...descendants]\n }\n\n case 'merge_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n const previousPath = Path.previous(path)\n return [...ancestors, previousPath]\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.equals(path, newPath)) {\n return []\n }\n\n const oldAncestors: Path[] = []\n const newAncestors: Path[] = []\n\n for (const ancestor of Path.ancestors(path)) {\n const p = Path.transform(ancestor, op)\n oldAncestors.push(p!)\n }\n\n for (const ancestor of Path.ancestors(newPath)) {\n const p = Path.transform(ancestor, op)\n newAncestors.push(p!)\n }\n\n const newParent = newAncestors[newAncestors.length - 1]\n const newIndex = newPath[newPath.length - 1]\n const resultPath = newParent.concat(newIndex)\n\n return [...oldAncestors, ...newAncestors, resultPath]\n }\n\n case 'remove_node': {\n const { path } = op\n const ancestors = Path.ancestors(path)\n return [...ancestors]\n }\n\n case 'split_node': {\n const { path } = op\n const levels = Path.levels(path)\n const nextPath = Path.next(path)\n return [...levels, nextPath]\n }\n\n default: {\n return []\n }\n }\n}\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\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n const isLTR = !isRTL\n const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n let left: CodepointType = CodepointType.None\n let right: CodepointType = CodepointType.None\n let distance = 0\n // Evaluation of these conditions are deferred.\n let gb11: boolean | null = null // Is GB11 applicable?\n let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n for (const char of codepoints) {\n const code = char.codePointAt(0)\n if (!code) break\n\n const type = getCodepointType(char, code)\n ;[left, right] = isLTR ? [right, type] : [type, left]\n\n if (\n intersects(left, CodepointType.ZWJ) &&\n intersects(right, CodepointType.ExtPict)\n ) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n }\n if (!gb11) break\n }\n\n if (\n intersects(left, CodepointType.RI) &&\n intersects(right, CodepointType.RI)\n ) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13\n } else {\n if (isLTR) {\n gb12Or13 = true\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(\n str.substring(0, str.length - distance)\n )\n }\n }\n if (!gb12Or13) break\n }\n\n if (\n left !== CodepointType.None &&\n right !== CodepointType.None &&\n isBoundaryPair(left, right)\n ) {\n break\n }\n\n distance += char.length\n }\n\n return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n let dist = 0\n let started = false\n\n while (text.length > 0) {\n const charDist = getCharacterDistance(text, isRTL)\n const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true\n dist += charDist\n } else if (!started) {\n dist += charDist\n } else {\n break\n }\n\n text = remaining\n }\n\n return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n str: string,\n dist: number,\n isRTL?: boolean\n): [string, string] => {\n if (isRTL) {\n const at = str.length - dist\n return [str.slice(at, str.length), str.slice(0, at)]\n }\n\n return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n char: string,\n remaining: string,\n isRTL = false\n): boolean => {\n if (SPACE.test(char)) {\n return false\n }\n\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n const charDist = getCharacterDistance(remaining, isRTL)\n const [nextChar, nextRemaining] = splitByCharacterDistance(\n remaining,\n charDist,\n isRTL\n )\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false\n }\n\n return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function*(str: string) {\n const end = str.length - 1\n\n for (let i = 0; i < str.length; i++) {\n const char1 = str.charAt(end - i)\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n const char2 = str.charAt(end - i - 1)\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1\n\n i++\n continue\n }\n }\n\n yield char1\n }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n None = 0,\n Extend = 1 << 0,\n ZWJ = 1 << 1,\n RI = 1 << 2,\n Prepend = 1 << 3,\n SpacingMark = 1 << 4,\n L = 1 << 5,\n V = 1 << 6,\n T = 1 << 7,\n LV = 1 << 8,\n LVT = 1 << 9,\n ExtPict = 1 << 10,\n Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend = /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark = /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n let type = CodepointType.Any\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict\n }\n\n return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n // GB6\n [\n CodepointType.L,\n CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n ],\n // GB7\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n // GB8\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n // GB9\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n // GB9a\n [CodepointType.Any, CodepointType.SpacingMark],\n // GB9b\n [CodepointType.Prepend, CodepointType.Any],\n // GB11\n [CodepointType.ZWJ, CodepointType.ExtPict],\n // GB12 and GB13\n [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n return (\n NonBoundaryPairs.findIndex(\n r => intersects(left, r[0]) && intersects(right, r[1])\n ) === -1\n )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n const match = str.match(endingRIs)\n if (match === null) {\n return false\n } else {\n // A RI is represented by a surrogate pair.\n const numRIs = match[0].length / 2\n return numRIs % 2 === 1\n }\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Editor, Node, Path, Descendant, ExtendedType, Ancestor } from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementInterface {\n isAncestor: (value: any) => value is Ancestor\n isElement: (value: any) => value is Element\n isElementList: (value: any) => value is Element[]\n isElementProps: (props: any) => props is Partial<Element>\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey?: string\n ) => value is T\n matches: (element: Element, props: Partial<Element>) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (value: any): value is Element => {\n return (\n isPlainObject(value) &&\n Node.isNodeList(value.children) &&\n !Editor.isEditor(value)\n )\n}\n\nexport const Element: ElementInterface = {\n /**\n * Check if a value implements the 'Ancestor' interface.\n */\n\n isAncestor(value: any): value is Ancestor {\n return isPlainObject(value) && Node.isNodeList(value.children)\n },\n\n /**\n * Check if a value implements the `Element` interface.\n */\n\n isElement,\n /**\n * Check if a value is an array of `Element` objects.\n */\n\n isElementList(value: any): value is Element[] {\n return Array.isArray(value) && value.every(val => Element.isElement(val))\n },\n\n /**\n * Check if a set of props is a partial of Element.\n */\n\n isElementProps(props: any): props is Partial<Element> {\n return (props as Partial<Element>).children !== undefined\n },\n\n /**\n * Check if a value implements the `Element` interface and has elementKey with selected value.\n * Default it check to `type` key value\n */\n\n isElementType: <T extends Element>(\n value: any,\n elementVal: string,\n elementKey: string = 'type'\n ): value is T => {\n return isElement(value) && value[elementKey] === elementVal\n },\n\n /**\n * Check if an element matches set of properties.\n *\n * Note: this checks custom properties, and it does not ensure that any\n * children are equivalent.\n */\n\n matches(element: Element, props: Partial<Element>): boolean {\n for (const key in props) {\n if (key === 'children') {\n continue\n }\n\n if (element[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\n\nexport type ElementEntry = [Element, Path]\n","import { isPlainObject } from 'is-plain-object'\n\nimport {\n Ancestor,\n ExtendedType,\n Location,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n Point,\n PointRef,\n Range,\n RangeRef,\n Span,\n Text,\n} from '..'\nimport {\n DIRTY_PATHS,\n DIRTY_PATH_KEYS,\n NORMALIZING,\n PATH_REFS,\n POINT_REFS,\n RANGE_REFS,\n} from '../utils/weak-maps'\nimport {\n getWordDistance,\n getCharacterDistance,\n splitByCharacterDistance,\n} from '../utils/string'\nimport { Descendant } from './node'\nimport { Element } from './element'\nimport {\n LeafEdge,\n SelectionMode,\n TextDirection,\n TextUnit,\n TextUnitAdjustment,\n RangeDirection,\n MaximizeMode,\n} from './types'\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit<Text, 'text'>\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\n\nexport interface BaseEditor {\n children: Descendant[]\n selection: Selection\n operations: Operation[]\n marks: EditorMarks | null\n\n // Schema-specific node behaviors.\n isInline: (element: Element) => boolean\n isVoid: (element: Element) => boolean\n normalizeNode: (entry: NodeEntry) => void\n onChange: () => void\n\n // Overrideable core actions.\n addMark: (key: string, value: any) => void\n apply: (operation: Operation) => void\n deleteBackward: (unit: TextUnit) => void\n deleteForward: (unit: TextUnit) => void\n deleteFragment: (direction?: TextDirection) => void\n getFragment: () => Descendant[]\n insertBreak: () => void\n insertSoftBreak: () => void\n insertFragment: (fragment: Node[]) => void\n insertNode: (node: Node) => void\n insertText: (text: string) => void\n removeMark: (key: string) => void\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport interface EditorAboveOptions<T extends Ancestor> {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n unit?: TextUnit\n}\n\nexport interface EditorFragmentDeletionOptions {\n direction?: TextDirection\n}\n\nexport interface EditorLeafOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNextOptions<T extends Descendant> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions<T extends Node> {\n at?: Location | Span\n match?: NodeMatch<T>\n mode?: SelectionMode\n universal?: boolean\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNormalizeOptions {\n force?: boolean\n}\n\nexport interface EditorParentOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n at?: Location\n unit?: TextUnitAdjustment\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorPreviousOptions<T extends Node> {\n at?: Location\n match?: NodeMatch<T>\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorInterface {\n above: <T extends Ancestor>(\n editor: Editor,\n options?: EditorAboveOptions<T>\n ) => NodeEntry<T> | undefined\n addMark: (editor: Editor, key: string, value: any) => void\n after: (\n editor: Editor,\n at: Location,\n options?: EditorAfterOptions\n ) => Point | undefined\n before: (\n editor: Editor,\n at: Location,\n options?: EditorBeforeOptions\n ) => Point | undefined\n deleteBackward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n deleteForward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n deleteFragment: (\n editor: Editor,\n options?: EditorFragmentDeletionOptions\n ) => void\n edges: (editor: Editor, at: Location) => [Point, Point]\n end: (editor: Editor, at: Location) => Point\n first: (editor: Editor, at: Location) => NodeEntry\n fragment: (editor: Editor, at: Location) => Descendant[]\n hasBlocks: (editor: Editor, element: Element) => boolean\n hasInlines: (editor: Editor, element: Element) => boolean\n hasPath: (editor: Editor, path: Path) => boolean\n hasTexts: (editor: Editor, element: Element) => boolean\n insertBreak: (editor: Editor) => void\n insertSoftBreak: (editor: Editor) => void\n insertFragment: (editor: Editor, fragment: Node[]) => void\n insertNode: (editor: Editor, node: Node) => void\n insertText: (editor: Editor, text: string) => void\n isBlock: (editor: Editor, value: any) => value is Element\n isEditor: (value: any) => value is Editor\n isEnd: (editor: Editor, point: Point, at: Location) => boolean\n isEdge: (editor: Editor, point: Point, at: Location) => boolean\n isEmpty: (editor: Editor, element: Element) => boolean\n isInline: (editor: Editor, value: any) => value is Element\n isNormalizing: (editor: Editor) => boolean\n isStart: (editor: Editor, point: Point, at: Location) => boolean\n isVoid: (editor: Editor, value: any) => value is Element\n last: (editor: Editor, at: Location) => NodeEntry\n leaf: (\n editor: Editor,\n at: Location,\n options?: EditorLeafOptions\n ) => NodeEntry<Text>\n levels: <T extends Node>(\n editor: Editor,\n options?: EditorLevelsOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n marks: (editor: Editor) => Omit<Text, 'text'> | null\n next: <T extends Descendant>(\n editor: Editor,\n options?: EditorNextOptions<T>\n ) => NodeEntry<T> | undefined\n node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n nodes: <T extends Node>(\n editor: Editor,\n options?: EditorNodesOptions<T>\n ) => Generator<NodeEntry<T>, void, undefined>\n normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n parent: (\n editor: Editor,\n at: Location,\n options?: EditorParentOptions\n ) => NodeEntry<Ancestor>\n path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n pathRef: (\n editor: Editor,\n path: Path,\n options?: EditorPathRefOptions\n ) => PathRef\n pathRefs: (editor: Editor) => Set<PathRef>\n point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n pointRef: (\n editor: Editor,\n point: Point,\n options?: EditorPointRefOptions\n ) => PointRef\n pointRefs: (editor: Editor) => Set<PointRef>\n positions: (\n editor: Editor,\n options?: EditorPositionsOptions\n ) => Generator<Point, void, undefined>\n previous: <T extends Node>(\n editor: Editor,\n options?: EditorPreviousOptions<T>\n ) => NodeEntry<T> | undefined\n range: (editor: Editor, at: Location, to?: Location) => Range\n rangeRef: (\n editor: Editor,\n range: Range,\n options?: EditorRangeRefOptions\n ) => RangeRef\n rangeRefs: (editor: Editor) => Set<RangeRef>\n removeMark: (editor: Editor, key: string) => void\n setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n start: (editor: Editor, at: Location) => Point\n string: (\n editor: Editor,\n at: Location,\n options?: EditorStringOptions\n ) => string\n unhangRange: (\n editor: Editor,\n range: Range,\n options?: EditorUnhangRangeOptions\n ) => Range\n void: (\n editor: Editor,\n options?: EditorVoidOptions\n ) => NodeEntry<Element> | undefined\n withoutNormalizing: (editor: Editor, fn: () => void) => void\n}\n\nconst IS_EDITOR_CACHE = new WeakMap<object, boolean>()\n\nexport const Editor: EditorInterface = {\n /**\n * Get the ancestor above a location in the document.\n */\n\n above<T extends Ancestor>(\n editor: Editor,\n options: EditorAboveOptions<T> = {}\n ): NodeEntry<T> | undefined {\n const {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match,\n } = options\n\n if (!at) {\n return\n }\n\n const path = Editor.path(editor, at)\n const reverse = mode === 'lowest'\n\n for (const [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse,\n })) {\n if (!Text.isText(n) && !Path.equals(path, p)) {\n return [n, p]\n }\n }\n },\n\n /**\n * Add a custom property to the leaf text nodes in the current selection.\n *\n * If the selection is currently collapsed, the marks will be added to the\n * `editor.marks` property instead, and applied when text is inserted next.\n */\n\n addMark(editor: Editor, key: string, value: any): void {\n editor.addMark(key, value)\n },\n\n /**\n * Get the point after a location.\n */\n\n after(\n editor: Editor,\n at: Location,\n options: EditorAfterOptions = {}\n ): Point | undefined {\n const anchor = Editor.point(editor, at, { edge: 'end' })\n const focus = Editor.end(editor, [])\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n },\n\n /**\n * Get the point before a location.\n */\n\n before(\n editor: Editor,\n at: Location,\n options: EditorBeforeOptions = {}\n ): Point | undefined {\n const anchor = Editor.start(editor, [])\n const focus = Editor.point(editor, at, { edge: 'start' })\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n reverse: true,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n },\n\n /**\n * Delete content in the editor backward from the current selection.\n */\n\n deleteBackward(\n editor: Editor,\n options: EditorDirectedDeletionOptions = {}\n ): void {\n const { unit = 'character' } = options\n editor.deleteBackward(unit)\n },\n\n /**\n * Delete content in the editor forward from the current selection.\n */\n\n deleteForward(\n editor: Editor,\n options: EditorDirectedDeletionOptions = {}\n ): void {\n const { unit = 'character' } = options\n editor.deleteForward(unit)\n },\n\n /**\n * Delete the content in the current selection.\n */\n\n deleteFragment(\n editor: Editor,\n options: EditorFragmentDeletionOptions = {}\n ): void {\n const { direction = 'forward' } = options\n editor.deleteFragment(direction)\n },\n\n /**\n * Get the start and end points of a location.\n */\n\n edges(editor: Editor, at: Location): [Point, Point] {\n return [Editor.start(editor, at), Editor.end(editor, at)]\n },\n\n /**\n * Get the end point of a location.\n */\n\n end(editor: Editor, at: Location): Point {\n return Editor.point(editor, at, { edge: 'end' })\n },\n\n /**\n * Get the first node at a location.\n */\n\n first(editor: Editor, at: Location): NodeEntry {\n const path = Editor.path(editor, at, { edge: 'start' })\n return Editor.node(editor, path)\n },\n\n /**\n * Get the fragment at a location.\n */\n\n fragment(editor: Editor, at: Location): Descendant[] {\n const range = Editor.range(editor, at)\n const fragment = Node.fragment(editor, range)\n return fragment\n },\n /**\n * Check if a node has block children.\n */\n\n hasBlocks(editor: Editor, element: Element): boolean {\n return element.children.some(n => Editor.isBlock(editor, n))\n },\n\n /**\n * Check if a node has inline and text children.\n */\n\n hasInlines(editor: Editor, element: Element): boolean {\n return element.children.some(\n n => Text.isText(n) || Editor.isInline(editor, n)\n )\n },\n\n /**\n * Check if a node has text children.\n */\n\n hasTexts(editor: Editor, element: Element): boolean {\n return element.children.every(n => Text.isText(n))\n },\n\n /**\n * Insert a block break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertBreak(editor: Editor): void {\n editor.insertBreak()\n },\n\n /**\n * Insert a soft break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertSoftBreak(editor: Editor): void {\n editor.insertSoftBreak()\n },\n\n /**\n * Insert a fragment at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertFragment(editor: Editor, fragment: Node[]): void {\n editor.insertFragment(fragment)\n },\n\n /**\n * Insert a node at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertNode(editor: Editor, node: Node): void {\n editor.insertNode(node)\n },\n\n /**\n * Insert text at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertText(editor: Editor, text: string): void {\n editor.insertText(text)\n },\n\n /**\n * Check if a value is a block `Element` object.\n */\n\n isBlock(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && !editor.isInline(value)\n },\n\n /**\n * Check if a value is an `Editor` object.\n */\n\n isEditor(value: any): value is Editor {\n if (!isPlainObject(value)) return false\n const cachedIsEditor = IS_EDITOR_CACHE.get(value)\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor\n }\n const isEditor =\n typeof value.addMark === 'function' &&\n typeof value.apply === 'function' &&\n typeof value.deleteBackward === 'function' &&\n typeof value.deleteForward === 'function' &&\n typeof value.deleteFragment === 'function' &&\n typeof value.insertBreak === 'function' &&\n typeof value.insertSoftBreak === 'function' &&\n typeof value.insertFragment === 'function' &&\n typeof value.insertNode === 'function' &&\n typeof value.insertText === 'function' &&\n typeof value.isInline === 'function' &&\n typeof value.isVoid === 'function' &&\n typeof value.normalizeNode === 'function' &&\n typeof value.onChange === 'function' &&\n typeof value.removeMark === 'function' &&\n (value.marks === null || isPlainObject(value.marks)) &&\n (value.selection === null || Range.isRange(value.selection)) &&\n Node.isNodeList(value.children) &&\n Operation.isOperationList(value.operations)\n IS_EDITOR_CACHE.set(value, isEditor)\n return isEditor\n },\n\n /**\n * Check if a point is the end point of a location.\n */\n\n isEnd(editor: Editor, point: Point, at: Location): boolean {\n const end = Editor.end(editor, at)\n return Point.equals(point, end)\n },\n\n /**\n * Check if a point is an edge of a location.\n */\n\n isEdge(editor: Editor, point: Point, at: Location): boolean {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n },\n\n /**\n * Check if an element is empty, accounting for void nodes.\n */\n\n isEmpty(editor: Editor, element: Element): boolean {\n const { children } = element\n const [first] = children\n return (\n children.length === 0 ||\n (children.length === 1 &&\n Text.isText(first) &&\n first.text === '' &&\n !editor.isVoid(element))\n )\n },\n\n /**\n * Check if a value is an inline `Element` object.\n */\n\n isInline(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && editor.isInline(value)\n },\n\n /**\n * Check if the editor is currently normalizing after each operation.\n */\n\n isNormalizing(editor: Editor): boolean {\n const isNormalizing = NORMALIZING.get(editor)\n return isNormalizing === undefined ? true : isNormalizing\n },\n\n /**\n * Check if a point is the start point of a location.\n */\n\n isStart(editor: Editor, point: Point, at: Location): boolean {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false\n }\n\n const start = Editor.start(editor, at)\n return Point.equals(point, start)\n },\n\n /**\n * Check if a value is a void `Element` object.\n */\n\n isVoid(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && editor.isVoid(value)\n },\n\n /**\n * Get the last node at a location.\n */\n\n last(editor: Editor, at: Location): NodeEntry {\n const path = Editor.path(editor, at, { edge: 'end' })\n return Editor.node(editor, path)\n },\n\n /**\n * Get the leaf text node at a location.\n */\n\n leaf(\n editor: Editor,\n at: Location,\n options: EditorLeafOptions = {}\n ): NodeEntry<Text> {\n const path = Editor.path(editor, at, options)\n const node = Node.leaf(editor, path)\n return [node, path]\n },\n\n /**\n * Iterate through all of the levels at a location.\n */\n\n *levels<T extends Node>(\n editor: Editor,\n options: EditorLevelsOptions<T> = {}\n ): Generator<NodeEntry<T>, void, undefined> {\n const { at = editor.selection, reverse = false, voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n const levels: NodeEntry<T>[] = []\n const path = Editor.path(editor, at)\n\n for (const [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue\n }\n\n levels.push([n, p])\n\n if (!voids && Editor.isVoid(editor, n)) {\n break\n }\n }\n\n if (reverse) {\n levels.reverse()\n }\n\n yield* levels\n },\n\n /**\n * Get the marks that would be added to text at the current selection.\n */\n\n marks(editor: Editor): Omit<Text, 'text'> | null {\n const { marks, selection } = editor\n\n if (!selection) {\n return null\n }\n\n if (marks) {\n return marks\n }\n\n if (Range.isExpanded(selection)) {\n const [match] = Editor.nodes(editor, { match: Text.isText })\n\n if (match) {\n const [node] = match as NodeEntry<Text>\n const { text, ...rest } = node\n return rest\n } else {\n return {}\n }\n }\n\n const { anchor } = selection\n const { path } = anchor\n let [node] = Editor.leaf(editor, path)\n\n if (anchor.offset === 0) {\n const prev = Editor.previous(editor, { at: path, match: Text.isText })\n const block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n })\n\n if (prev && block) {\n const [prevNode, prevPath] = prev\n const [, blockPath] = block\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode as Text\n }\n }\n }\n\n const { text, ...rest } = node\n return rest\n },\n\n /**\n * Get the matching node in the branch of the document after a location.\n */\n\n next<T extends Descendant>(\n editor: Editor,\n options: EditorNextOptions<T> = {}\n ): NodeEntry<T> | undefined {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointAfterLocation = Editor.after(editor, at, { voids })\n\n if (!pointAfterLocation) return\n\n const [, to] = Editor.last(editor, [])\n\n const span: Span = [pointAfterLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the next node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n return next\n },\n\n /**\n * Get the node at a location.\n */\n\n node(\n editor: Editor,\n at: Location,\n options: EditorNodeOptions = {}\n ): NodeEntry {\n const path = Editor.path(editor, at, options)\n const node = Node.get(editor, path)\n return [node, path]\n },\n\n /**\n * Iterate through all of the nodes in the Editor.\n */\n\n *nodes<T extends Node>(\n editor: Editor,\n options: EditorNodesOptions<T> = {}\n ): Generator<NodeEntry<T>, void, undefined> {\n const {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n } = options\n let { match } = options\n\n if (!match) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n let from\n let to\n\n if (Span.isSpan(at)) {\n from = at[0]\n to = at[1]\n } else {\n const first = Editor.path(editor, at, { edge: 'start' })\n const last = Editor.path(editor, at, { edge: 'end' })\n from = reverse ? last : first\n to = reverse ? first : last\n }\n\n const nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n)),\n })\n\n const matches: NodeEntry<T>[] = []\n let hit: NodeEntry<T> | undefined\n\n for (const [node, path] of nodeEntries) {\n const isLower = hit && Path.compare(path, hit[1]) === 0\n\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return\n } else {\n continue\n }\n }\n\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path]\n continue\n }\n\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n const emit: NodeEntry<T> | undefined =\n mode === 'lowest' ? hit : [node, path]\n\n if (emit) {\n if (universal) {\n matches.push(emit)\n } else {\n yield emit\n }\n }\n\n hit = [node, path]\n }\n\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit)\n } else {\n yield hit\n }\n }\n\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches\n }\n },\n /**\n * Normalize any dirty objects in the editor.\n */\n\n normalize(editor: Editor, options: EditorNormalizeOptions = {}): void {\n const { force = false } = options\n const getDirtyPaths = (editor: Editor) => {\n return DIRTY_PATHS.get(editor) || []\n }\n\n const getDirtyPathKeys = (editor: Editor) => {\n return DIRTY_PATH_KEYS.get(editor) || new Set()\n }\n\n const popDirtyPath = (editor: Editor): Path => {\n const path = getDirtyPaths(editor).pop()!\n const key = path.join(',')\n getDirtyPathKeys(editor).delete(key)\n return path\n }\n\n if (!Editor.isNormalizing(editor)) {\n return\n }\n\n if (force) {\n const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n DIRTY_PATHS.set(editor, allPaths)\n DIRTY_PATH_KEYS.set(editor, allPathKeys)\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (const dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n const [node, _] = entry\n\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry)\n }\n }\n }\n\n const max = getDirtyPaths(editor).length * 42 // HACK: better way?\n let m = 0\n\n while (getDirtyPaths(editor).length !== 0) {\n if (m > max) {\n throw new Error(`\n Could not completely normalize the editor after ${max} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\n `)\n }\n\n const dirtyPath = popDirtyPath(editor)\n\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n editor.normalizeNode(entry)\n }\n m++\n }\n })\n },\n\n /**\n * Get the parent node of a location.\n */\n\n parent(\n editor: Editor,\n at: Location,\n options: EditorParentOptions = {}\n ): NodeEntry<Ancestor> {\n const path = Editor.path(editor, at, options)\n const parentPath = Path.parent(path)\n const entry = Editor.node(editor, parentPath)\n return entry as NodeEntry<Ancestor>\n },\n\n /**\n * Get the path of a location.\n */\n\n path(editor: Editor, at: Location, options: EditorPathOptions = {}): Path {\n const { depth, edge } = options\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n const [, firstPath] = Node.first(editor, at)\n at = firstPath\n } else if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n at = lastPath\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at)\n } else if (edge === 'end') {\n at = Range.end(at)\n } else {\n at = Path.common(at.anchor.path, at.focus.path)\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path\n }\n\n if (depth != null) {\n at = at.slice(0, depth)\n }\n\n return at\n },\n\n hasPath(editor: Editor, path: Path): boolean {\n return Node.has(editor, path)\n },\n\n /**\n * Create a mutable ref for a `Path` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n pathRef(\n editor: Editor,\n path: Path,\n options: EditorPathRefOptions = {}\n ): PathRef {\n const { affinity = 'forward' } = options\n const ref: PathRef = {\n current: path,\n affinity,\n unref() {\n const { current } = ref\n const pathRefs = Editor.pathRefs(editor)\n pathRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pathRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked path refs of the editor.\n */\n\n pathRefs(editor: Editor): Set<PathRef> {\n let refs = PATH_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n PATH_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Get the start or end point of a location.\n */\n\n point(editor: Editor, at: Location, options: EditorPointOptions = {}): Point {\n const { edge = 'start' } = options\n\n if (Path.isPath(at)) {\n let path\n\n if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n path = lastPath\n } else {\n const [, firstPath] = Node.first(editor, at)\n path = firstPath\n }\n\n const node = Node.get(editor, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n )\n }\n\n return { path, offset: edge === 'end' ? node.text.length : 0 }\n }\n\n if (Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n return edge === 'start' ? start : end\n }\n\n return at\n },\n\n /**\n * Create a mutable ref for a `Point` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n pointRef(\n editor: Editor,\n point: Point,\n options: EditorPointRefOptions = {}\n ): PointRef {\n const { affinity = 'forward' } = options\n const ref: PointRef = {\n current: point,\n affinity,\n unref() {\n const { current } = ref\n const pointRefs = Editor.pointRefs(editor)\n pointRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pointRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked point refs of the editor.\n */\n\n pointRefs(editor: Editor): Set<PointRef> {\n let refs = POINT_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n POINT_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Return all the positions in `at` range where a `Point` can be placed.\n *\n * By default, moves forward by individual offsets at a time, but\n * the `unit` option can be used to to move by character, word, line, or block.\n *\n * The `reverse` option can be used to change iteration direction.\n *\n * Note: By default void nodes are treated as a single point and iteration\n * will not happen inside their content unless you pass in true for the\n * `voids` option, then iteration will occur.\n */\n\n *positions(\n editor: Editor,\n options: EditorPositionsOptions = {}\n ): Generator<Point, void, undefined> {\n const {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n const first = reverse ? end : start\n let isNewBlock = false\n let blockText = ''\n let distance = 0 // Distance for leafText to catch up to blockText.\n let leafTextRemaining = 0\n let leafTextOffset = 0\n\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (const [node, path] of Editor.nodes(editor, { at, reverse, voids })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && editor.isVoid(node)) {\n yield Editor.start(editor, path)\n continue\n }\n\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue\n\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n const e = Path.isAncestor(path, end.path)\n ? end\n : Editor.end(editor, path)\n const s = Path.isAncestor(path, start.path)\n ? start\n : Editor.start(editor, path)\n\n blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n isNewBlock = true\n }\n }\n\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n const isFirst = Path.equals(path, first.path)\n\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse\n ? first.offset\n : node.text.length - first.offset\n leafTextOffset = first.offset // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length\n leafTextOffset = reverse ? leafTextRemaining : 0\n }\n\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield { path, offset: leafTextOffset }\n isNewBlock = false\n }\n\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break\n distance = calcDistance(blockText, unit, reverse)\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(\n blockText,\n distance,\n reverse\n )[1]\n }\n\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse\n ? leafTextOffset - distance\n : leafTextOffset + distance\n leafTextRemaining = leafTextRemaining - distance\n\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining\n break\n }\n\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0\n yield { path, offset: leafTextOffset }\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text: string, unit: string, reverse?: boolean) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse)\n } else if (unit === 'word') {\n return getWordDistance(text, reverse)\n } else if (unit === 'line' || unit === 'block') {\n return text.length\n }\n return 1\n }\n },\n\n /**\n * Get the matching node in the branch of the document before a location.\n */\n\n previous<T extends Node>(\n editor: Editor,\n options: EditorPreviousOptions<T> = {}\n ): NodeEntry<T> | undefined {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n if (!pointBeforeLocation) {\n return\n }\n\n const [, to] = Editor.first(editor, [])\n\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n const span: Span = [pointBeforeLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the previous node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids,\n })\n\n return previous\n },\n\n /**\n * Get a range of a location.\n */\n\n range(editor: Editor, at: Location, to?: Location): Range {\n if (Range.isRange(at) && !to) {\n return at\n }\n\n const start = Editor.start(editor, at)\n const end = Editor.end(editor, to || at)\n return { anchor: start, focus: end }\n },\n\n /**\n * Create a mutable ref for a `Range` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n rangeRef(\n editor: Editor,\n range: Range,\n options: EditorRangeRefOptions = {}\n ): RangeRef {\n const { affinity = 'forward' } = options\n const ref: RangeRef = {\n current: range,\n affinity,\n unref() {\n const { current } = ref\n const rangeRefs = Editor.rangeRefs(editor)\n rangeRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.rangeRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked range refs of the editor.\n */\n\n rangeRefs(editor: Editor): Set<RangeRef> {\n let refs = RANGE_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n RANGE_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Remove a custom property from all of the leaf text nodes in the current\n * selection.\n *\n * If the selection is currently collapsed, the removal will be stored on\n * `editor.marks` and applied to the text inserted next.\n */\n\n removeMark(editor: Editor, key: string): void {\n editor.removeMark(key)\n },\n\n /**\n * Manually set if the editor should currently be normalizing.\n *\n * Note: Using this incorrectly can leave the editor in an invalid state.\n *\n */\n setNormalizing(editor: Editor, isNormalizing: boolean): void {\n NORMALIZING.set(editor, isNormalizing)\n },\n\n /**\n * Get the start point of a location.\n */\n\n start(editor: Editor, at: Location): Point {\n return Editor.point(editor, at, { edge: 'start' })\n },\n\n /**\n * Get the text string content of a location.\n *\n * Note: by default the text of void nodes is considered to be an empty\n * string, regardless of content, unless you pass in true for the voids option\n */\n\n string(\n editor: Editor,\n at: Location,\n options: EditorStringOptions = {}\n ): string {\n const { voids = false } = options\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n let text = ''\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset)\n }\n\n text += t\n }\n\n return text\n },\n\n /**\n * Convert a range into a non-hanging one.\n */\n\n unhangRange(\n editor: Editor,\n range: Range,\n options: EditorUnhangRangeOptions = {}\n ): Range {\n const { voids = false } = options\n let [start, end] = Range.edges(range)\n\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Editor.isBlock(editor, n),\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n },\n\n /**\n * Match a void node in the current branch of the editor.\n */\n\n void(\n editor: Editor,\n options: EditorVoidOptions = {}\n ): NodeEntry<Element> | undefined {\n return Editor.above(editor, {\n ...options,\n match: n => Editor.isVoid(editor, n),\n })\n },\n\n /**\n * Call a function, deferring normalization until after it completes.\n */\n\n withoutNormalizing(editor: Editor, fn: () => void): void {\n const value = Editor.isNormalizing(editor)\n Editor.setNormalizing(editor, false)\n try {\n fn()\n } finally {\n Editor.setNormalizing(editor, value)\n }\n Editor.normalize(editor)\n },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch<T extends Node> =\n | ((node: Node, path: Path) => node is T)\n | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial<Node>, node: Partial<Node>) => boolean\nexport type PropsMerge = (prop: Partial<Node>, node: Partial<Node>) => object\n","import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n isLocation: (value: any) => value is Location\n}\n\nexport const Location: LocationInterface = {\n /**\n * Check if a value implements the `Location` interface.\n */\n\n isLocation(value: any): value is Location {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n isSpan: (value: any) => value is Span\n}\n\nexport const Span: SpanInterface = {\n /**\n * Check if a value implements the `Span` interface.\n */\n\n isSpan(value: any): value is Span {\n return (\n Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n )\n },\n}\n","import { produce } from 'immer'\nimport { Editor, Path, Range, Text, Scrubber } from '..'\nimport { Element, ElementEntry } from './element'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeLevelsOptions {\n reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n ancestor: (root: Node, path: Path) => Ancestor\n ancestors: (\n root: Node,\n path: Path,\n options?: NodeAncestorsOptions\n ) => Generator<NodeEntry<Ancestor>, void, undefined>\n child: (root: Node, index: number) => Descendant\n children: (\n root: Node,\n path: Path,\n options?: NodeChildrenOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n common: (root: Node, path: Path, another: Path) => NodeEntry\n descendant: (root: Node, path: Path) => Descendant\n descendants: (\n root: Node,\n options?: NodeDescendantsOptions\n ) => Generator<NodeEntry<Descendant>, void, undefined>\n elements: (\n root: Node,\n options?: NodeElementsOptions\n ) => Generator<ElementEntry, void, undefined>\n extractProps: (node: Node) => NodeProps\n first: (root: Node, path: Path) => NodeEntry\n fragment: (root: Node, range: Range) => Descendant[]\n get: (root: Node, path: Path) => Node\n has: (root: Node, path: Path) => boolean\n isNode: (value: any) => value is Node\n isNodeList: (value: any) => value is Node[]\n last: (root: Node, path: Path) => NodeEntry\n leaf: (root: Node, path: Path) => Text\n levels: (\n root: Node,\n path: Path,\n options?: NodeLevelsOptions\n ) => Generator<NodeEntry, void, undefined>\n matches: (node: Node, props: Partial<Node>) => boolean\n nodes: (\n root: Node,\n options?: NodeNodesOptions\n ) => Generator<NodeEntry, void, undefined>\n parent: (root: Node, path: Path) => Ancestor\n string: (node: Node) => string\n texts: (\n root: Node,\n options?: NodeTextsOptions\n ) => Generator<NodeEntry<Text>, void, undefined>\n}\n\nconst IS_NODE_LIST_CACHE = new WeakMap<any[], boolean>()\n\nexport const Node: NodeInterface = {\n /**\n * Get the node at a specific path, asserting that it's an ancestor node.\n */\n\n ancestor(root: Node, path: Path): Ancestor {\n const node = Node.get(root, path)\n\n if (Text.isText(node)) {\n throw new Error(\n `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of all the ancestor nodes above a specific path.\n *\n * By default the order is top-down, from highest to lowest ancestor in\n * the tree, but you can pass the `reverse: true` option to go bottom-up.\n */\n\n *ancestors(\n root: Node,\n path: Path,\n options: NodeAncestorsOptions = {}\n ): Generator<NodeEntry<Ancestor>, void, undefined> {\n for (const p of Path.ancestors(path, options)) {\n const n = Node.ancestor(root, p)\n const entry: NodeEntry<Ancestor> = [n, p]\n yield entry\n }\n },\n\n /**\n * Get the child of a node at a specific index.\n */\n\n child(root: Node, index: number): Descendant {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n )\n }\n\n const c = root.children[index] as Descendant\n\n if (c == null) {\n throw new Error(\n `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n return c\n },\n\n /**\n * Iterate over the children of a node at a specific path.\n */\n\n *children(\n root: Node,\n path: Path,\n options: NodeChildrenOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n const { reverse = false } = options\n const ancestor = Node.ancestor(root, path)\n const { children } = ancestor\n let index = reverse ? children.length - 1 : 0\n\n while (reverse ? index >= 0 : index < children.length) {\n const child = Node.child(ancestor, index)\n const childPath = path.concat(index)\n yield [child, childPath]\n index = reverse ? index - 1 : index + 1\n }\n },\n\n /**\n * Get an entry for the common ancesetor node of two paths.\n */\n\n common(root: Node, path: Path, another: Path): NodeEntry {\n const p = Path.common(path, another)\n const n = Node.get(root, p)\n return [n, p]\n },\n\n /**\n * Get the node at a specific path, asserting that it's a descendant node.\n */\n\n descendant(root: Node, path: Path): Descendant {\n const node = Node.get(root, path)\n\n if (Editor.isEditor(node)) {\n throw new Error(\n `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of all the descendant node entries inside a root node.\n */\n\n *descendants(\n root: Node,\n options: NodeDescendantsOptions = {}\n ): Generator<NodeEntry<Descendant>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path] as NodeEntry<Descendant>\n }\n }\n },\n\n /**\n * Return a generator of all the element nodes inside a root node. Each iteration\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n * root node is an element it will be included in the iteration as well.\n */\n\n *elements(\n root: Node,\n options: NodeElementsOptions = {}\n ): Generator<ElementEntry, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path]\n }\n }\n },\n\n /**\n * Extract props from a Node.\n */\n\n extractProps(node: Node): NodeProps {\n if (Element.isAncestor(node)) {\n const { children, ...properties } = node\n\n return properties\n } else {\n const { text, ...properties } = node\n\n return properties\n }\n },\n\n /**\n * Get the first node entry in a root node from a path.\n */\n\n first(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n n = n.children[0]\n p.push(0)\n }\n }\n\n return [n, p]\n },\n\n /**\n * Get the sliced fragment represented by a range inside a root node.\n */\n\n fragment(root: Node, range: Range): Descendant[] {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get a fragment starting from a root text node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n const newRoot = produce({ children: root.children }, r => {\n const [start, end] = Range.edges(range)\n const nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: ([, path]) => !Range.includes(range, path),\n })\n\n for (const [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n const parent = Node.parent(r, path)\n const index = path[path.length - 1]\n parent.children.splice(index, 1)\n }\n\n if (Path.equals(path, end.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(start.offset)\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null\n }\n })\n\n return newRoot.children\n },\n\n /**\n * Get the descendant node referred to by a specific path. If the path is an\n * empty array, it refers to the root node itself.\n */\n\n get(root: Node, path: Path): Node {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n throw new Error(\n `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n node = node.children[p]\n }\n\n return node\n },\n\n /**\n * Check if a descendant node exists at a specific path.\n */\n\n has(root: Node, path: Path): boolean {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return false\n }\n\n node = node.children[p]\n }\n\n return true\n },\n\n /**\n * Check if a value implements the `Node` interface.\n */\n\n isNode(value: any): value is Node {\n return (\n Text.isText(value) || Element.isElement(value) || Editor.isEditor(value)\n )\n },\n\n /**\n * Check if a value is a list of `Node` objects.\n */\n\n isNodeList(value: any): value is Node[] {\n if (!Array.isArray(value)) {\n return false\n }\n const cachedResult = IS_NODE_LIST_CACHE.get(value)\n if (cachedResult !== undefined) {\n return cachedResult\n }\n const isNodeList = value.every(val => Node.isNode(val))\n IS_NODE_LIST_CACHE.set(value, isNodeList)\n return isNodeList\n },\n\n /**\n * Get the last node entry in a root node from a path.\n */\n\n last(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n const i = n.children.length - 1\n n = n.children[i]\n p.push(i)\n }\n }\n\n return [n, p]\n },\n\n /**\n * Get the node at a specific path, ensuring it's a leaf text node.\n */\n\n leaf(root: Node, path: Path): Text {\n const node = Node.get(root, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of the in a branch of the tree, from a specific path.\n *\n * By default the order is top-down, from highest to lowest node in the tree,\n * but you can pass the `reverse: true` option to go bottom-up.\n */\n\n *levels(\n root: Node,\n path: Path,\n options: NodeLevelsOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n for (const p of Path.levels(path, options)) {\n const n = Node.get(root, p)\n yield [n, p]\n }\n },\n\n /**\n * Check if a node matches a set of props.\n */\n\n matches(node: Node, props: Partial<Node>): boolean {\n return (\n (Element.isElement(node) &&\n Element.isElementProps(props) &&\n Element.matches(node, props)) ||\n (Text.isText(node) &&\n Text.isTextProps(props) &&\n Text.matches(node, props))\n )\n },\n\n /**\n * Return a generator of all the node entries of a root node. Each entry is\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\n * position inside the root node.\n */\n\n *nodes(\n root: Node,\n options: NodeNodesOptions = {}\n ): Generator<NodeEntry, void, undefined> {\n const { pass, reverse = false } = options\n const { from = [], to } = options\n const visited = new Set()\n let p: Path = []\n let n = root\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break\n }\n\n if (!visited.has(n)) {\n yield [n, p]\n }\n\n // If we're allowed to go downward and we haven't descended yet, do.\n if (\n !visited.has(n) &&\n !Text.isText(n) &&\n n.children.length !== 0 &&\n (pass == null || pass([n, p]) === false)\n ) {\n visited.add(n)\n let nextIndex = reverse ? n.children.length - 1 : 0\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length]\n }\n\n p = p.concat(nextIndex)\n n = Node.get(root, p)\n continue\n }\n\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break\n }\n\n // If we're going forward...\n if (!reverse) {\n const newPath = Path.next(p)\n\n if (Node.has(root, newPath)) {\n p = newPath\n n = Node.get(root, p)\n continue\n }\n }\n\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n const newPath = Path.previous(p)\n p = newPath\n n = Node.get(root, p)\n continue\n }\n\n // Otherwise we're going upward...\n p = Path.parent(p)\n n = Node.get(root, p)\n visited.add(n)\n }\n },\n\n /**\n * Get the parent of a node at a specific path.\n */\n\n parent(root: Node, path: Path): Ancestor {\n const parentPath = Path.parent(path)\n const p = Node.get(root, parentPath)\n\n if (Text.isText(p)) {\n throw new Error(\n `Cannot get the parent of path [${path}] because it does not exist in the root.`\n )\n }\n\n return p\n },\n\n /**\n * Get the concatenated text string of a node's content.\n *\n * Note that this will not include spaces or line breaks between block nodes.\n * It is not a user-facing string, but a string for performing offset-related\n * computations for a node.\n */\n\n string(node: Node): string {\n if (Text.isText(node)) {\n return node.text\n } else {\n return node.children.map(Node.string).join('')\n }\n },\n\n /**\n * Return a generator of all leaf text nodes in a root node.\n */\n\n *texts(\n root: Node,\n options: NodeTextsOptions = {}\n ): Generator<NodeEntry<Text>, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path]\n }\n }\n },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry<T extends Node = Node> = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n | Omit<Editor, 'children'>\n | Omit<Element, 'children'>\n | Omit<Text, 'text'>\n","import { ExtendedType, Node, Path, Range } from '..'\nimport { isPlainObject } from 'is-plain-object'\n\nexport type BaseInsertNodeOperation = {\n type: 'insert_node'\n path: Path\n node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n 'InsertNodeOperation',\n BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n type: 'insert_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n 'InsertTextOperation',\n BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n type: 'merge_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type MergeNodeOperation = ExtendedType<\n 'MergeNodeOperation',\n BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n type: 'move_node'\n path: Path\n newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n 'MoveNodeOperation',\n BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n type: 'remove_node'\n path: Path\n node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n 'RemoveNodeOperation',\n BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n type: 'remove_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n 'RemoveTextOperation',\n BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n type: 'set_node'\n path: Path\n properties: Partial<Node>\n newProperties: Partial<Node>\n}\n\nexport type SetNodeOperation = ExtendedType<\n 'SetNodeOperation',\n BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n | {\n type: 'set_selection'\n properties: null\n newProperties: Range\n }\n | {\n type: 'set_selection'\n properties: Partial<Range>\n newProperties: Partial<Range>\n }\n | {\n type: 'set_selection'\n properties: Range\n newProperties: null\n }\n\nexport type SetSelectionOperation = ExtendedType<\n 'SetSelectionOperation',\n BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n type: 'split_node'\n path: Path\n position: number\n properties: Partial<Node>\n}\n\nexport type SplitNodeOperation = ExtendedType<\n 'SplitNodeOperation',\n BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n | InsertNodeOperation\n | MergeNodeOperation\n | MoveNodeOperation\n | RemoveNodeOperation\n | SetNodeOperation\n | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n isNodeOperation: (value: any) => value is NodeOperation\n isOperation: (value: any) => value is Operation\n isOperationList: (value: any) => value is Operation[]\n isSelectionOperation: (value: any) => value is SelectionOperation\n isTextOperation: (value: any) => value is TextOperation\n inverse: (op: Operation) => Operation\n}\n\nexport const Operation: OperationInterface = {\n /**\n * Check of a value is a `NodeOperation` object.\n */\n\n isNodeOperation(value: any): value is NodeOperation {\n return Operation.isOperation(value) && value.type.endsWith('_node')\n },\n\n /**\n * Check of a value is an `Operation` object.\n */\n\n isOperation(value: any): value is Operation {\n if (!isPlainObject(value)) {\n return false\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'insert_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'merge_node':\n return (\n typeof value.position === 'number' &&\n Path.isPath(value.path) &&\n isPlainObject(value.properties)\n )\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath)\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'remove_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'set_node':\n return (\n Path.isPath(value.path) &&\n isPlainObject(value.properties) &&\n isPlainObject(value.newProperties)\n )\n case 'set_selection':\n return (\n (value.properties === null && Range.isRange(value.newProperties)) ||\n (value.newProperties === null && Range.isRange(value.properties)) ||\n (isPlainObject(value.properties) &&\n isPlainObject(value.newProperties))\n )\n case 'split_node':\n return (\n Path.isPath(value.path) &&\n typeof value.position === 'number' &&\n isPlainObject(value.properties)\n )\n default:\n return false\n }\n },\n\n /**\n * Check if a value is a list of `Operation` objects.\n */\n\n isOperationList(value: any): value is Operation[] {\n return (\n Array.isArray(value) && value.every(val => Operation.isOperation(val))\n )\n },\n\n /**\n * Check of a value is a `SelectionOperation` object.\n */\n\n isSelectionOperation(value: any): value is SelectionOperation {\n return Operation.isOperation(value) && value.type.endsWith('_selection')\n },\n\n /**\n * Check of a value is a `TextOperation` object.\n */\n\n isTextOperation(value: any): value is TextOperation {\n return Operation.isOperation(value) && value.type.endsWith('_text')\n },\n\n /**\n * Invert an operation, returning a new operation that will exactly undo the\n * original when applied.\n */\n\n inverse(op: Operation): Operation {\n switch (op.type) {\n case 'insert_node': {\n return { ...op, type: 'remove_node' }\n }\n\n case 'insert_text': {\n return { ...op, type: 'remove_text' }\n }\n\n case 'merge_node': {\n return { ...op, type: 'split_node', path: Path.previous(op.path) }\n }\n\n case 'move_node': {\n const { newPath, path } = op\n\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op\n }\n\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return { ...op, path: newPath, newPath: path }\n }\n\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n const inversePath = Path.transform(path, op)!\n const inverseNewPath = Path.transform(Path.next(path), op)!\n return { ...op, path: inversePath, newPath: inverseNewPath }\n }\n\n case 'remove_node': {\n return { ...op, type: 'insert_node' }\n }\n\n case 'remove_text': {\n return { ...op, type: 'insert_text' }\n }\n\n case 'set_node': {\n const { properties, newProperties } = op\n return { ...op, properties: newProperties, newProperties: properties }\n }\n\n case 'set_selection': {\n const { properties, newProperties } = op\n\n if (properties == null) {\n return {\n ...op,\n properties: newProperties as Range,\n newProperties: null,\n }\n } else if (newProperties == null) {\n return {\n ...op,\n properties: null,\n newProperties: properties as Range,\n }\n } else {\n return { ...op, properties: newProperties, newProperties: properties }\n }\n }\n\n case 'split_node': {\n return { ...op, type: 'merge_node', path: Path.next(op.path) }\n }\n }\n },\n}\n","import { produce } from 'immer'\nimport { Operation } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n common: (path: Path, another: Path) => Path\n compare: (path: Path, another: Path) => -1 | 0 | 1\n endsAfter: (path: Path, another: Path) => boolean\n endsAt: (path: Path, another: Path) => boolean\n endsBefore: (path: Path, another: Path) => boolean\n equals: (path: Path, another: Path) => boolean\n hasPrevious: (path: Path) => boolean\n isAfter: (path: Path, another: Path) => boolean\n isAncestor: (path: Path, another: Path) => boolean\n isBefore: (path: Path, another: Path) => boolean\n isChild: (path: Path, another: Path) => boolean\n isCommon: (path: Path, another: Path) => boolean\n isDescendant: (path: Path, another: Path) => boolean\n isParent: (path: Path, another: Path) => boolean\n isPath: (value: any) => value is Path\n isSibling: (path: Path, another: Path) => boolean\n levels: (path: Path, options?: PathLevelsOptions) => Path[]\n next: (path: Path) => Path\n operationCanTransformPath: (operation: Operation) => boolean\n parent: (path: Path) => Path\n previous: (path: Path) => Path\n relative: (path: Path, ancestor: Path) => Path\n transform: (\n path: Path,\n operation: Operation,\n options?: PathTransformOptions\n ) => Path | null\n}\n\nexport const Path: PathInterface = {\n /**\n * Get a list of ancestor paths for a given path.\n *\n * The paths are sorted from shallowest to deepest ancestor. However, if the\n * `reverse: true` option is passed, they are reversed.\n */\n\n ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n const { reverse = false } = options\n let paths = Path.levels(path, options)\n\n if (reverse) {\n paths = paths.slice(1)\n } else {\n paths = paths.slice(0, -1)\n }\n\n return paths\n },\n\n /**\n * Get the common ancestor path of two paths.\n */\n\n common(path: Path, another: Path): Path {\n const common: Path = []\n\n for (let i = 0; i < path.length && i < another.length; i++) {\n const av = path[i]\n const bv = another[i]\n\n if (av !== bv) {\n break\n }\n\n common.push(av)\n }\n\n return common\n },\n\n /**\n * Compare a path to another, returning an integer indicating whether the path\n * was before, at, or after the other.\n *\n * Note: Two paths of unequal length can still receive a `0` result if one is\n * directly above or below the other. If you want exact matching, use\n * [[Path.equals]] instead.\n */\n\n compare(path: Path, another: Path): -1 | 0 | 1 {\n const min = Math.min(path.length, another.length)\n\n for (let i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1\n if (path[i] > another[i]) return 1\n }\n\n return 0\n },\n\n /**\n * Check if a path ends after one of the indexes in another.\n */\n\n endsAfter(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av > bv\n },\n\n /**\n * Check if a path ends at one of the indexes in another.\n */\n\n endsAt(path: Path, another: Path): boolean {\n const i = path.length\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n return Path.equals(as, bs)\n },\n\n /**\n * Check if a path ends before one of the indexes in another.\n */\n\n endsBefore(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av < bv\n },\n\n /**\n * Check if a path is exactly equal to another.\n */\n\n equals(path: Path, another: Path): boolean {\n return (\n path.length === another.length && path.every((n, i) => n === another[i])\n )\n },\n\n /**\n * Check if the path of previous sibling node exists\n */\n\n hasPrevious(path: Path): boolean {\n return path[path.length - 1] > 0\n },\n\n /**\n * Check if a path is after another.\n */\n\n isAfter(path: Path, another: Path): boolean {\n return Path.compare(path, another) === 1\n },\n\n /**\n * Check if a path is an ancestor of another.\n */\n\n isAncestor(path: Path, another: Path): boolean {\n return path.length < another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is before another.\n */\n\n isBefore(path: Path, another: Path): boolean {\n return Path.compare(path, another) === -1\n },\n\n /**\n * Check if a path is a child of another.\n */\n\n isChild(path: Path, another: Path): boolean {\n return (\n path.length === another.length + 1 && Path.compare(path, another) === 0\n )\n },\n\n /**\n * Check if a path is equal to or an ancestor of another.\n */\n\n isCommon(path: Path, another: Path): boolean {\n return path.length <= another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is a descendant of another.\n */\n\n isDescendant(path: Path, another: Path): boolean {\n return path.length > another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is the parent of another.\n */\n\n isParent(path: Path, another: Path): boolean {\n return (\n path.length + 1 === another.length && Path.compare(path, another) === 0\n )\n },\n\n /**\n * Check is a value implements the `Path` interface.\n */\n\n isPath(value: any): value is Path {\n return (\n Array.isArray(value) &&\n (value.length === 0 || typeof value[0] === 'number')\n )\n },\n\n /**\n * Check if a path is a sibling of another.\n */\n\n isSibling(path: Path, another: Path): boolean {\n if (path.length !== another.length) {\n return false\n }\n\n const as = path.slice(0, -1)\n const bs = another.slice(0, -1)\n const al = path[path.length - 1]\n const bl = another[another.length - 1]\n return al !== bl && Path.equals(as, bs)\n },\n\n /**\n * Get a list of paths at every level down to a path. Note: this is the same\n * as `Path.ancestors`, but including the path itself.\n *\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\n * true` option is passed, they are reversed.\n */\n\n levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n const { reverse = false } = options\n const list: Path[] = []\n\n for (let i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i))\n }\n\n if (reverse) {\n list.reverse()\n }\n\n return list\n },\n\n /**\n * Given a path, get the path to the next sibling node.\n */\n\n next(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the next path of a root path [${path}], because it has no next index.`\n )\n }\n\n const last = path[path.length - 1]\n return path.slice(0, -1).concat(last + 1)\n },\n\n /**\n * Returns whether this operation can affect paths or not. Used as an\n * optimization when updating dirty paths during normalization\n *\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\n * below\n */\n operationCanTransformPath(operation: Operation): boolean {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true\n default:\n return false\n }\n },\n\n /**\n * Given a path, return a new path referring to the parent node above it.\n */\n\n parent(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n return path.slice(0, -1)\n },\n\n /**\n * Given a path, get the path to the previous sibling node.\n */\n\n previous(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n )\n }\n\n const last = path[path.length - 1]\n\n if (last <= 0) {\n throw new Error(\n `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n )\n }\n\n return path.slice(0, -1).concat(last - 1)\n },\n\n /**\n * Get a path relative to an ancestor.\n */\n\n relative(path: Path, ancestor: Path): Path {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\n `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n )\n }\n\n return path.slice(ancestor.length)\n },\n\n /**\n * Transform a path by an operation.\n */\n\n transform(\n path: Path | null,\n operation: Operation,\n options: PathTransformOptions = {}\n ): Path | null {\n return produce(path, p => {\n const { affinity = 'forward' } = options\n\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (!path || path?.length === 0) {\n return\n }\n\n if (p === null) {\n return null\n }\n\n switch (operation.type) {\n case 'insert_node': {\n const { path: op } = operation\n\n if (\n Path.equals(op, p) ||\n Path.endsBefore(op, p) ||\n Path.isAncestor(op, p)\n ) {\n p[op.length - 1] += 1\n }\n\n break\n }\n\n case 'remove_node': {\n const { path: op } = operation\n\n if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n return null\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n break\n }\n\n case 'merge_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else if (Path.isAncestor(op, p)) {\n p[op.length - 1] -= 1\n p[op.length] += position\n }\n\n break\n }\n\n case 'split_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1\n } else if (affinity === 'backward') {\n // Nothing, because it still refers to the right path.\n } else {\n return null\n }\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] += 1\n } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n p[op.length - 1] += 1\n p[op.length] -= position\n }\n\n break\n }\n\n case 'move_node': {\n const { path: op, newPath: onp } = operation\n\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(op, onp)) {\n return\n }\n\n if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n const copy = onp.slice()\n\n if (Path.endsBefore(op, onp) && op.length < onp.length) {\n copy[op.length - 1] -= 1\n }\n\n return copy.concat(p.slice(op.length))\n } else if (\n Path.isSibling(op, onp) &&\n (Path.isAncestor(onp, p) || Path.equals(onp, p))\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else {\n p[op.length - 1] += 1\n }\n } else if (\n Path.endsBefore(onp, p) ||\n Path.equals(onp, p) ||\n Path.isAncestor(onp, p)\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n p[onp.length - 1] += 1\n } else if (Path.endsBefore(op, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1\n }\n\n p[op.length - 1] -= 1\n }\n\n break\n }\n }\n })\n },\n}\n","import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n current: Path | null\n affinity: 'forward' | 'backward' | null\n unref(): Path | null\n}\n\nexport interface PathRefInterface {\n transform: (ref: PathRef, op: Operation) => void\n}\n\nexport const PathRef: PathRefInterface = {\n /**\n * Transform the path ref's current value by an operation.\n */\n\n transform(ref: PathRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Path.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { produce } from 'immer'\nimport { ExtendedType, Operation, Path } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n path: Path\n offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n compare: (point: Point, another: Point) => -1 | 0 | 1\n isAfter: (point: Point, another: Point) => boolean\n isBefore: (point: Point, another: Point) => boolean\n equals: (point: Point, another: Point) => boolean\n isPoint: (value: any) => value is Point\n transform: (\n point: Point,\n op: Operation,\n options?: PointTransformOptions\n ) => Point | null\n}\n\nexport const Point: PointInterface = {\n /**\n * Compare a point to another, returning an integer indicating whether the\n * point was before, at, or after the other.\n */\n\n compare(point: Point, another: Point): -1 | 0 | 1 {\n const result = Path.compare(point.path, another.path)\n\n if (result === 0) {\n if (point.offset < another.offset) return -1\n if (point.offset > another.offset) return 1\n return 0\n }\n\n return result\n },\n\n /**\n * Check if a point is after another.\n */\n\n isAfter(point: Point, another: Point): boolean {\n return Point.compare(point, another) === 1\n },\n\n /**\n * Check if a point is before another.\n */\n\n isBefore(point: Point, another: Point): boolean {\n return Point.compare(point, another) === -1\n },\n\n /**\n * Check if a point is exactly equal to another.\n */\n\n equals(point: Point, another: Point): boolean {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return (\n point.offset === another.offset && Path.equals(point.path, another.path)\n )\n },\n\n /**\n * Check if a value implements the `Point` interface.\n */\n\n isPoint(value: any): value is Point {\n return (\n isPlainObject(value) &&\n typeof value.offset === 'number' &&\n Path.isPath(value.path)\n )\n },\n\n /**\n * Transform a point by an operation.\n */\n\n transform(\n point: Point | null,\n op: Operation,\n options: PointTransformOptions = {}\n ): Point | null {\n return produce(point, p => {\n if (p === null) {\n return null\n }\n const { affinity = 'forward' } = options\n const { path, offset } = p\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node': {\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'insert_text': {\n if (\n Path.equals(op.path, path) &&\n (op.offset < offset ||\n (op.offset === offset && affinity === 'forward'))\n ) {\n p.offset += op.text.length\n }\n\n break\n }\n\n case 'merge_node': {\n if (Path.equals(op.path, path)) {\n p.offset += op.position\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'remove_text': {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length)\n }\n\n break\n }\n\n case 'remove_node': {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'split_node': {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null\n } else if (\n op.position < offset ||\n (op.position === offset && affinity === 'forward')\n ) {\n p.offset -= op.position\n\n p.path = Path.transform(path, op, {\n ...options,\n affinity: 'forward',\n })!\n }\n } else {\n p.path = Path.transform(path, op, options)!\n }\n\n break\n }\n }\n })\n },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n","import { Operation, Point } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n current: Point | null\n affinity: TextDirection | null\n unref(): Point | null\n}\n\nexport interface PointRefInterface {\n transform: (ref: PointRef, op: Operation) => void\n}\n\nexport const PointRef: PointRefInterface = {\n /**\n * Transform the point ref's current value by an operation.\n */\n\n transform(ref: PointRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const point = Point.transform(current, op, { affinity })\n ref.current = point\n\n if (point == null) {\n ref.unref()\n }\n },\n}\n","import { produce } from 'immer'\nimport { isPlainObject } from 'is-plain-object'\nimport { ExtendedType, Operation, Path, Point, PointEntry } from '..'\nimport { RangeDirection } from './types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n anchor: Point\n focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n end: (range: Range) => Point\n equals: (range: Range, another: Range) => boolean\n includes: (range: Range, target: Path | Point | Range) => boolean\n intersection: (range: Range, another: Range) => Range | null\n isBackward: (range: Range) => boolean\n isCollapsed: (range: Range) => boolean\n isExpanded: (range: Range) => boolean\n isForward: (range: Range) => boolean\n isRange: (value: any) => value is Range\n points: (range: Range) => Generator<PointEntry, void, undefined>\n start: (range: Range) => Point\n transform: (\n range: Range,\n op: Operation,\n options?: RangeTransformOptions\n ) => Range | null\n}\n\nexport const Range: RangeInterface = {\n /**\n * Get the start and end points of a range, in the order in which they appear\n * in the document.\n */\n\n edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n const { reverse = false } = options\n const { anchor, focus } = range\n return Range.isBackward(range) === reverse\n ? [anchor, focus]\n : [focus, anchor]\n },\n\n /**\n * Get the end point of a range.\n */\n\n end(range: Range): Point {\n const [, end] = Range.edges(range)\n return end\n },\n\n /**\n * Check if a range is exactly equal to another.\n */\n\n equals(range: Range, another: Range): boolean {\n return (\n Point.equals(range.anchor, another.anchor) &&\n Point.equals(range.focus, another.focus)\n )\n },\n\n /**\n * Check if a range includes a path, a point or part of another range.\n */\n\n includes(range: Range, target: Path | Point | Range): boolean {\n if (Range.isRange(target)) {\n if (\n Range.includes(range, target.anchor) ||\n Range.includes(range, target.focus)\n ) {\n return true\n }\n\n const [rs, re] = Range.edges(range)\n const [ts, te] = Range.edges(target)\n return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n }\n\n const [start, end] = Range.edges(range)\n let isAfterStart = false\n let isBeforeEnd = false\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0\n isBeforeEnd = Point.compare(target, end) <= 0\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0\n isBeforeEnd = Path.compare(target, end.path) <= 0\n }\n\n return isAfterStart && isBeforeEnd\n },\n\n /**\n * Get the intersection of a range with another.\n */\n\n intersection(range: Range, another: Range): Range | null {\n const { anchor, focus, ...rest } = range\n const [s1, e1] = Range.edges(range)\n const [s2, e2] = Range.edges(another)\n const start = Point.isBefore(s1, s2) ? s2 : s1\n const end = Point.isBefore(e1, e2) ? e1 : e2\n\n if (Point.isBefore(end, start)) {\n return null\n } else {\n return { anchor: start, focus: end, ...rest }\n }\n },\n\n /**\n * Check if a range is backward, meaning that its anchor point appears in the\n * document _after_ its focus point.\n */\n\n isBackward(range: Range): boolean {\n const { anchor, focus } = range\n return Point.isAfter(anchor, focus)\n },\n\n /**\n * Check if a range is collapsed, meaning that both its anchor and focus\n * points refer to the exact same position in the document.\n */\n\n isCollapsed(range: Range): boolean {\n const { anchor, focus } = range\n return Point.equals(anchor, focus)\n },\n\n /**\n * Check if a range is expanded.\n *\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n */\n\n isExpanded(range: Range): boolean {\n return !Range.isCollapsed(range)\n },\n\n /**\n * Check if a range is forward.\n *\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n */\n\n isForward(range: Range): boolean {\n return !Range.isBackward(range)\n },\n\n /**\n * Check if a value implements the [[Range]] interface.\n */\n\n isRange(value: any): value is Range {\n return (\n isPlainObject(value) &&\n Point.isPoint(value.anchor) &&\n Point.isPoint(value.focus)\n )\n },\n\n /**\n * Iterate through all of the point entries in a range.\n */\n\n *points(range: Range): Generator<PointEntry, void, undefined> {\n yield [range.anchor, 'anchor']\n yield [range.focus, 'focus']\n },\n\n /**\n * Get the start point of a range.\n */\n\n start(range: Range): Point {\n const [start] = Range.edges(range)\n return start\n },\n\n /**\n * Transform a range by an operation.\n */\n\n transform(\n range: Range | null,\n op: Operation,\n options: RangeTransformOptions = {}\n ): Range | null {\n return produce(range, r => {\n if (r === null) {\n return null\n }\n const { affinity = 'inward' } = options\n let affinityAnchor: 'forward' | 'backward' | null\n let affinityFocus: 'forward' | 'backward' | null\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n const isCollapsed = Range.isCollapsed(r)\n if (Range.isForward(r)) {\n affinityAnchor = 'forward'\n affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n } else {\n affinityAnchor = 'backward'\n affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward'\n affinityFocus = 'forward'\n } else {\n affinityAnchor = 'forward'\n affinityFocus = 'backward'\n }\n } else {\n affinityAnchor = affinity\n affinityFocus = affinity\n }\n const anchor = Point.transform(r.anchor, op, { affinity: affinityAnchor })\n const focus = Point.transform(r.focus, op, { affinity: affinityFocus })\n\n if (!anchor || !focus) {\n return null\n }\n\n r.anchor = anchor\n r.focus = focus\n })\n },\n}\n","import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n current: Range | null\n affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n transform: (ref: RangeRef, op: Operation) => void\n}\n\nexport const RangeRef: RangeRefInterface = {\n /**\n * Transform the range ref's current value by an operation.\n */\n\n transform(ref: RangeRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Range.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n setScrubber(scrubber: Scrubber | undefined): void\n stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\nexport const Scrubber: ScrubberInterface = {\n setScrubber(scrubber: Scrubber | undefined): void {\n _scrubber = scrubber\n },\n\n stringify(value: any): string {\n return JSON.stringify(value, _scrubber)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n node: Record<string, any>,\n another: Record<string, any>\n): boolean => {\n for (const key in node) {\n const a = node[key]\n const b = another[key]\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n } else if (a !== b) {\n return false\n }\n }\n\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n\n for (const key in another) {\n if (node[key] === undefined && another[key] !== undefined) {\n return false\n }\n }\n\n return true\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Range } from '..'\nimport { ExtendedType } from './custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface TextEqualsOptions {\n loose?: boolean\n}\n\nexport interface TextInterface {\n equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n isText: (value: any) => value is Text\n isTextList: (value: any) => value is Text[]\n isTextProps: (props: any) => props is Partial<Text>\n matches: (text: Text, props: Partial<Text>) => boolean\n decorations: (node: Text, decorations: Range[]) => Text[]\n}\n\nexport const Text: TextInterface = {\n /**\n * Check if two text nodes are equal.\n *\n * When loose is set, the text is not compared. This is\n * used to check whether sibling text nodes can be merged.\n */\n equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n const { loose = false } = options\n\n function omitText(obj: Record<any, any>) {\n const { text, ...rest } = obj\n\n return rest\n }\n\n return isDeepEqual(\n loose ? omitText(text) : text,\n loose ? omitText(another) : another\n )\n },\n\n /**\n * Check if a value implements the `Text` interface.\n */\n\n isText(value: any): value is Text {\n return isPlainObject(value) && typeof value.text === 'string'\n },\n\n /**\n * Check if a value is a list of `Text` objects.\n */\n\n isTextList(value: any): value is Text[] {\n return Array.isArray(value) && value.every(val => Text.isText(val))\n },\n\n /**\n * Check if some props are a partial of Text.\n */\n\n isTextProps(props: any): props is Partial<Text> {\n return (props as Partial<Text>).text !== undefined\n },\n\n /**\n * Check if an text matches set of properties.\n *\n * Note: this is for matching custom properties, and it does not ensure that\n * the `text` property are two nodes equal.\n */\n\n matches(text: Text, props: Partial<Text>): boolean {\n for (const key in props) {\n if (key === 'text') {\n continue\n }\n\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n\n /**\n * Get the leaves for a text node given decorations.\n */\n\n decorations(node: Text, decorations: Range[]): Text[] {\n let leaves: Text[] = [{ ...node }]\n\n for (const dec of decorations) {\n const { anchor, focus, ...rest } = dec\n const [start, end] = Range.edges(dec)\n const next = []\n let o = 0\n\n for (const leaf of leaves) {\n const { length } = leaf.text\n const offset = o\n o += length\n\n // If the range encompases the entire leaf, add the range.\n if (start.offset <= offset && end.offset >= o) {\n Object.assign(leaf, rest)\n next.push(leaf)\n continue\n }\n\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (\n (start.offset !== end.offset &&\n (start.offset === o || end.offset === offset)) ||\n start.offset > o ||\n end.offset < offset ||\n (end.offset === offset && offset !== 0)\n ) {\n next.push(leaf)\n continue\n }\n\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n let middle = leaf\n let before\n let after\n\n if (end.offset < o) {\n const off = end.offset - offset\n after = { ...middle, text: middle.text.slice(off) }\n middle = { ...middle, text: middle.text.slice(0, off) }\n }\n\n if (start.offset > offset) {\n const off = start.offset - offset\n before = { ...middle, text: middle.text.slice(0, off) }\n middle = { ...middle, text: middle.text.slice(off) }\n }\n\n Object.assign(middle, rest)\n\n if (before) {\n next.push(before)\n }\n\n next.push(middle)\n\n if (after) {\n next.push(after)\n }\n }\n\n leaves = next\n }\n\n return leaves\n },\n}\n","import { createDraft, finishDraft, isDraft } from 'immer'\nimport {\n Ancestor,\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n Point,\n Range,\n Scrubber,\n Selection,\n Text,\n} from '..'\n\nexport interface GeneralTransforms {\n transform: (editor: Editor, op: Operation) => void\n}\n\nconst applyToDraft = (editor: Editor, selection: Selection, op: Operation) => {\n switch (op.type) {\n case 'insert_node': {\n const { path, node } = op\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (index > parent.children.length) {\n throw new Error(\n `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n )\n }\n\n parent.children.splice(index, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'insert_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset)\n node.text = before + text + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'merge_node': {\n const { path } = op\n const node = Node.get(editor, path)\n const prevPath = Path.previous(path)\n const prev = Node.get(editor, prevPath)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (Text.isText(node) && Text.isText(prev)) {\n prev.text += node.text\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n prev.children.push(...node.children)\n } else {\n throw new Error(\n `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prev)}`\n )\n }\n\n parent.children.splice(index, 1)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.isAncestor(path, newPath)) {\n throw new Error(\n `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n parent.children.splice(index, 1)\n const truePath = Path.transform(path, op)!\n const newParent = Node.get(editor, Path.parent(truePath)) as Ancestor\n const newIndex = truePath[truePath.length - 1]\n\n newParent.children.splice(newIndex, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'remove_node': {\n const { path } = op\n const index = path[path.length - 1]\n const parent = Node.parent(editor, path)\n parent.children.splice(index, 1)\n\n // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n const result = Point.transform(point, op)\n\n if (selection != null && result != null) {\n selection[key] = result\n } else {\n let prev: NodeEntry<Text> | undefined\n let next: NodeEntry<Text> | undefined\n\n for (const [n, p] of Node.texts(editor)) {\n if (Path.compare(p, path) === -1) {\n prev = [n, p]\n } else {\n next = [n, p]\n break\n }\n }\n\n let preferNext = false\n if (prev && next) {\n if (Path.equals(next[1], path)) {\n preferNext = !Path.hasPrevious(next[1])\n } else {\n preferNext =\n Path.common(prev[1], path).length <\n Path.common(next[1], path).length\n }\n }\n\n if (prev && !preferNext) {\n point.path = prev[1]\n point.offset = prev[0].text.length\n } else if (next) {\n point.path = next[1]\n point.offset = 0\n } else {\n selection = null\n }\n }\n }\n }\n\n break\n }\n\n case 'remove_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset + text.length)\n node.text = before + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'set_node': {\n const { path, properties, newProperties } = op\n\n if (path.length === 0) {\n throw new Error(`Cannot set properties on the root node!`)\n }\n\n const node = Node.get(editor, path)\n\n for (const key in newProperties) {\n if (key === 'children' || key === 'text') {\n throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n }\n\n const value = newProperties[key]\n\n if (value == null) {\n delete node[key]\n } else {\n node[key] = value\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in properties) {\n if (!newProperties.hasOwnProperty(key)) {\n delete node[key]\n }\n }\n\n break\n }\n\n case 'set_selection': {\n const { newProperties } = op\n\n if (newProperties == null) {\n selection = newProperties\n } else {\n if (selection == null) {\n if (!Range.isRange(newProperties)) {\n throw new Error(\n `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n newProperties\n )} when there is no current selection.`\n )\n }\n\n selection = { ...newProperties }\n }\n\n for (const key in newProperties) {\n const value = newProperties[key]\n\n if (value == null) {\n if (key === 'anchor' || key === 'focus') {\n throw new Error(`Cannot remove the \"${key}\" selection property`)\n }\n\n delete selection[key]\n } else {\n selection[key] = value\n }\n }\n }\n\n break\n }\n\n case 'split_node': {\n const { path, position, properties } = op\n\n if (path.length === 0) {\n throw new Error(\n `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n let newNode: Descendant\n\n if (Text.isText(node)) {\n const before = node.text.slice(0, position)\n const after = node.text.slice(position)\n node.text = before\n newNode = {\n ...(properties as Partial<Text>),\n text: after,\n }\n } else {\n const before = node.children.slice(0, position)\n const after = node.children.slice(position)\n node.children = before\n\n newNode = {\n ...(properties as Partial<Element>),\n children: after,\n }\n }\n\n parent.children.splice(index + 1, 0, newNode)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n }\n return selection\n}\n\nexport const GeneralTransforms: GeneralTransforms = {\n /**\n * Transform the editor by an operation.\n */\n\n transform(editor: Editor, op: Operation): void {\n editor.children = createDraft(editor.children)\n let selection = editor.selection && createDraft(editor.selection)\n\n try {\n selection = applyToDraft(editor, selection, op)\n } finally {\n editor.children = finishDraft(editor.children)\n\n if (selection) {\n editor.selection = isDraft(selection)\n ? (finishDraft(selection) as Range)\n : selection\n } else {\n editor.selection = null\n }\n }\n },\n}\n","import {\n Ancestor,\n Editor,\n Element,\n Location,\n Node,\n NodeEntry,\n Path,\n Point,\n Range,\n Scrubber,\n Text,\n Transforms,\n} from '..'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeMode, MaximizeMode } from '../interfaces/types'\n\nexport interface NodeTransforms {\n insertNodes: <T extends Node>(\n editor: Editor,\n nodes: Node | Node[],\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n }\n ) => void\n liftNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n }\n ) => void\n mergeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n moveNodes: <T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ) => void\n removeNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n setNodes: <T extends Node>(\n editor: Editor,\n props: Partial<T>,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n splitNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n }\n ) => void\n unsetNodes: <T extends Node>(\n editor: Editor,\n props: string | string[],\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n unwrapNodes: <T extends Node>(\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n wrapNodes: <T extends Node>(\n editor: Editor,\n element: Element,\n options?: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n}\n\nexport const NodeTransforms: NodeTransforms = {\n /**\n * Insert nodes at a specific location in the Editor.\n */\n\n insertNodes<T extends Node>(\n editor: Editor,\n nodes: Node | Node[],\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at, match, select } = options\n\n if (Node.isNode(nodes)) {\n nodes = [nodes]\n }\n\n if (nodes.length === 0) {\n return\n }\n\n const [node] = nodes\n\n // By default, use the selection as the target location. But if there is\n // no selection, insert at the end of the document since that is such a\n // common use case when inserting from a non-selected state.\n if (!at) {\n if (editor.selection) {\n at = editor.selection\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, [])\n } else {\n at = [0]\n }\n\n select = true\n }\n\n if (select == null) {\n select = false\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n)\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n const [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids,\n })\n\n if (entry) {\n const [, matchPath] = entry\n const pathRef = Editor.pathRef(editor, matchPath)\n const isAtEnd = Editor.isEnd(editor, at, matchPath)\n Transforms.splitNodes(editor, { at, match, mode, voids })\n const path = pathRef.unref()!\n at = isAtEnd ? Path.next(path) : path\n } else {\n return\n }\n }\n\n const parentPath = Path.parent(at)\n let index = at[at.length - 1]\n\n if (!voids && Editor.void(editor, { at: parentPath })) {\n return\n }\n\n for (const node of nodes) {\n const path = parentPath.concat(index)\n index++\n editor.apply({ type: 'insert_node', path, node })\n at = Path.next(at)\n }\n at = Path.previous(at)\n\n if (select) {\n const point = Editor.end(editor, at)\n\n if (point) {\n Transforms.select(editor, point)\n }\n }\n })\n },\n\n /**\n * Lift nodes at a specific location upwards in the document tree, splitting\n * their parent in two if necessary.\n */\n\n liftNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { at = editor.selection, mode = 'lowest', voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!at) {\n return\n }\n\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path.length < 2) {\n throw new Error(\n `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n )\n }\n\n const parentNodeEntry = Editor.node(editor, Path.parent(path))\n const [parent, parentPath] = parentNodeEntry as NodeEntry<Ancestor>\n const index = path[path.length - 1]\n const { length } = parent.children\n\n if (length === 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n Transforms.removeNodes(editor, { at: parentPath, voids })\n } else if (index === 0) {\n Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n } else if (index === length - 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n } else {\n const splitPath = Path.next(path)\n const toPath = Path.next(parentPath)\n Transforms.splitNodes(editor, { at: splitPath, voids })\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n }\n }\n })\n },\n\n /**\n * Merge a node at a location with the previous node of the same depth,\n * removing any empty containing nodes after the merge if necessary.\n */\n\n mergeNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection } = options\n const { hanging = false, voids = false, mode = 'lowest' } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n }\n\n const [current] = Editor.nodes(editor, { at, match, voids, mode })\n const prev = Editor.previous(editor, { at, match, voids, mode })\n\n if (!current || !prev) {\n return\n }\n\n const [node, path] = current\n const [prevNode, prevPath] = prev\n\n if (path.length === 0 || prevPath.length === 0) {\n return\n }\n\n const newPath = Path.next(prevPath)\n const commonPath = Path.common(path, prevPath)\n const isPreviousSibling = Path.isSibling(path, prevPath)\n const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n .slice(commonPath.length)\n .slice(0, -1)\n\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n })\n\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n let properties\n let position\n\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n const { text, ...rest } = node\n position = prevNode.text.length\n properties = rest as Partial<Text>\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n const { children, ...rest } = node\n position = prevNode.children.length\n properties = rest as Partial<Element>\n } else {\n throw new Error(\n `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prevNode)}`\n )\n }\n\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n }\n\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n }\n\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n if (\n (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n (Text.isText(prevNode) &&\n prevNode.text === '' &&\n prevPath[prevPath.length - 1] !== 0)\n ) {\n Transforms.removeNodes(editor, { at: prevPath, voids })\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties,\n })\n }\n\n if (emptyRef) {\n emptyRef.unref()\n }\n })\n },\n\n /**\n * Move the nodes at a location to a new location.\n */\n\n moveNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false,\n } = options\n let { match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n const toRef = Editor.pathRef(editor, to)\n const targets = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const newPath = toRef.current!\n\n if (path.length !== 0) {\n editor.apply({ type: 'move_node', path, newPath })\n }\n\n if (\n toRef.current &&\n Path.isSibling(newPath, path) &&\n Path.isAfter(newPath, path)\n ) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current)\n }\n }\n\n toRef.unref()\n })\n },\n\n /**\n * Remove the nodes at a specific location in the document.\n */\n\n removeNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n const depths = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path) {\n const [node] = Editor.node(editor, path)\n editor.apply({ type: 'remove_node', path, node })\n }\n }\n })\n },\n\n /**\n * Set new properties on the nodes at a location.\n */\n\n setNodes<T extends Node>(\n editor: Editor,\n props: Partial<Node>,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection, compare, merge } = options\n const {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (split && Range.isRange(at)) {\n if (\n Range.isCollapsed(at) &&\n Editor.leaf(editor, at.anchor)[0].text.length > 0\n ) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return\n }\n const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n const [start, end] = Range.edges(at)\n const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode,\n })\n const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode,\n })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp\n }\n\n for (const [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids,\n })) {\n const properties: Partial<Node> = {}\n const newProperties: Partial<Node> = {}\n\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue\n }\n\n let hasChanges = false\n\n for (const k in props) {\n if (k === 'children' || k === 'text') {\n continue\n }\n\n if (compare(props[k], node[k])) {\n hasChanges = true\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k]\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k])\n } else {\n if (props[k] != null) newProperties[k] = props[k]\n }\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties,\n })\n }\n }\n })\n },\n\n /**\n * Split the nodes at a specific location.\n */\n\n splitNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection, height = 0, always = false } = options\n\n if (match == null) {\n match = n => Editor.isBlock(editor, n)\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at)\n }\n\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n const path = at\n const point = Editor.point(editor, path)\n const [parent] = Editor.parent(editor, path)\n match = n => n === parent\n height = point.path.length - path.length + 1\n at = point\n always = true\n }\n\n if (!at) {\n return\n }\n\n const beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward',\n })\n let afterRef: PointRef | undefined\n try {\n const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n if (!highest) {\n return\n }\n\n const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n const nudge = 0\n\n if (!voids && voidMatch) {\n const [voidNode, voidPath] = voidMatch\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n let after = Editor.after(editor, voidPath)\n\n if (!after) {\n const text = { text: '' }\n const afterPath = Path.next(voidPath)\n Transforms.insertNodes(editor, text, { at: afterPath, voids })\n after = Editor.point(editor, afterPath)!\n }\n\n at = after\n always = true\n }\n\n const siblingHeight = at.path.length - voidPath.length\n height = siblingHeight + 1\n always = true\n }\n\n afterRef = Editor.pointRef(editor, at)\n const depth = at.path.length - height\n const [, highestPath] = highest\n const lowestPath = at.path.slice(0, depth)\n let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n for (const [node, path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids,\n })) {\n let split = false\n\n if (\n path.length < highestPath.length ||\n path.length === 0 ||\n (!voids && Editor.isVoid(editor, node))\n ) {\n break\n }\n\n const point = beforeRef.current!\n const isEnd = Editor.isEnd(editor, point, path)\n\n if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n split = true\n const properties = Node.extractProps(node)\n editor.apply({\n type: 'split_node',\n path,\n position,\n properties,\n })\n }\n\n position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n }\n\n if (options.at == null) {\n const point = afterRef.current || Editor.end(editor, [])\n Transforms.select(editor, point)\n }\n } finally {\n beforeRef.unref()\n afterRef?.unref()\n }\n })\n },\n\n /**\n * Unset properties on the nodes at a location.\n */\n\n unsetNodes<T extends Node>(\n editor: Editor,\n props: string | string[],\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n if (!Array.isArray(props)) {\n props = [props]\n }\n\n const obj = {}\n\n for (const key of props) {\n obj[key] = null\n }\n\n Transforms.setNodes(editor, obj, options)\n },\n\n /**\n * Unwrap the nodes at a location from a parent node, splitting the parent if\n * necessary to ensure that only the content in the range is unwrapped.\n */\n\n unwrapNodes<T extends Node>(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n const rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(\n matches,\n ([, p]) => Editor.pathRef(editor, p)\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse()\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const [node] = Editor.node(editor, path)\n let range = Editor.range(editor, path)\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current!, range)!\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids,\n })\n }\n\n if (rangeRef) {\n rangeRef.unref()\n }\n })\n },\n\n /**\n * Wrap the nodes at a location in a new container node, splitting the edges\n * of the range first to ensure that only the content in the range is wrapped.\n */\n\n wrapNodes<T extends Node>(\n editor: Editor,\n element: Element,\n options: {\n at?: Location\n match?: NodeMatch<T>\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at)\n } else if (editor.isInline(element)) {\n match = n => Editor.isInline(editor, n) || Text.isText(n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n if (split && Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n const rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward',\n })\n Transforms.splitNodes(editor, { at: end, match, voids })\n Transforms.splitNodes(editor, { at: start, match, voids })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at,\n match: editor.isInline(element)\n ? n => Editor.isBlock(editor, n)\n : n => Editor.isEditor(n),\n mode: 'lowest',\n voids,\n })\n )\n\n for (const [, rootPath] of roots) {\n const a = Range.isRange(at)\n ? Range.intersection(at, Editor.range(editor, rootPath))\n : at\n\n if (!a) {\n continue\n }\n\n const matches = Array.from(\n Editor.nodes(editor, { at: a, match, mode, voids })\n )\n\n if (matches.length > 0) {\n const [first] = matches\n const last = matches[matches.length - 1]\n const [, firstPath] = first\n const [, lastPath] = last\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n continue\n }\n\n const commonPath = Path.equals(firstPath, lastPath)\n ? Path.parent(firstPath)\n : Path.common(firstPath, lastPath)\n\n const range = Editor.range(editor, firstPath, lastPath)\n const commonNodeEntry = Editor.node(editor, commonPath)\n const [commonNode] = commonNodeEntry\n const depth = commonPath.length + 1\n const wrapperPath = Path.next(lastPath.slice(0, depth))\n const wrapper = { ...element, children: [] }\n Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n Transforms.moveNodes(editor, {\n at: range,\n match: n =>\n Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids,\n })\n }\n }\n })\n },\n}\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n if (Element.isElement(node)) {\n const element = node as Element\n if (Editor.isVoid(editor, node)) {\n return true\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0])\n } else {\n return false\n }\n } else if (Editor.isEditor(node)) {\n return false\n } else {\n return true\n }\n}\n\n/**\n * Convert a range into a point by deleting it's content.\n */\n\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n if (Range.isCollapsed(range)) {\n return range.anchor\n } else {\n const [, end] = Range.edges(range)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at: range })\n return pointRef.unref()\n }\n}\n\nconst matchPath = (editor: Editor, path: Path): ((node: Node) => boolean) => {\n const [node] = Editor.node(editor, path)\n return n => n === node\n}\n","import { Editor, Location, Point, Range, Scrubber, Transforms } from '..'\nimport { SelectionEdge, MoveUnit } from '../interfaces/types'\n\nexport interface SelectionCollapseOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n distance?: number\n unit?: MoveUnit\n reverse?: boolean\n edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n deselect: (editor: Editor) => void\n move: (editor: Editor, options?: SelectionMoveOptions) => void\n select: (editor: Editor, target: Location) => void\n setPoint: (\n editor: Editor,\n props: Partial<Point>,\n options?: SelectionSetPointOptions\n ) => void\n setSelection: (editor: Editor, props: Partial<Range>) => void\n}\n\nexport const SelectionTransforms: SelectionTransforms = {\n /**\n * Collapse the selection.\n */\n\n collapse(editor: Editor, options: SelectionCollapseOptions = {}): void {\n const { edge = 'anchor' } = options\n const { selection } = editor\n\n if (!selection) {\n return\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor)\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus)\n } else if (edge === 'start') {\n const [start] = Range.edges(selection)\n Transforms.select(editor, start)\n } else if (edge === 'end') {\n const [, end] = Range.edges(selection)\n Transforms.select(editor, end)\n }\n },\n\n /**\n * Unset the selection.\n */\n\n deselect(editor: Editor): void {\n const { selection } = editor\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null,\n })\n }\n },\n\n /**\n * Move the selection's point forward or backward.\n */\n\n move(editor: Editor, options: SelectionMoveOptions = {}): void {\n const { selection } = editor\n const { distance = 1, unit = 'character', reverse = false } = options\n let { edge = null } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const opts = { distance, unit }\n const props: Partial<Range> = {}\n\n if (edge == null || edge === 'anchor') {\n const point = reverse\n ? Editor.before(editor, anchor, opts)\n : Editor.after(editor, anchor, opts)\n\n if (point) {\n props.anchor = point\n }\n }\n\n if (edge == null || edge === 'focus') {\n const point = reverse\n ? Editor.before(editor, focus, opts)\n : Editor.after(editor, focus, opts)\n\n if (point) {\n props.focus = point\n }\n }\n\n Transforms.setSelection(editor, props)\n },\n\n /**\n * Set the selection to a new value.\n */\n\n select(editor: Editor, target: Location): void {\n const { selection } = editor\n target = Editor.range(editor, target)\n\n if (selection) {\n Transforms.setSelection(editor, target)\n return\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\n `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n target\n )}`\n )\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target,\n })\n },\n\n /**\n * Set new properties on one of the selection's points.\n */\n\n setPoint(\n editor: Editor,\n props: Partial<Point>,\n options: SelectionSetPointOptions = {}\n ): void {\n const { selection } = editor\n let { edge = 'both' } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const point = edge === 'anchor' ? anchor : focus\n\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n })\n },\n\n /**\n * Set new properties on the selection.\n */\n\n setSelection(editor: Editor, props: Partial<Range>): void {\n const { selection } = editor\n const oldProps: Partial<Range> | null = {}\n const newProps: Partial<Range> = {}\n\n if (!selection) {\n return\n }\n\n for (const k in props) {\n if (\n (k === 'anchor' &&\n props.anchor != null &&\n !Point.equals(props.anchor, selection.anchor)) ||\n (k === 'focus' &&\n props.focus != null &&\n !Point.equals(props.focus, selection.focus)) ||\n (k !== 'anchor' && k !== 'focus' && props[k] !== selection[k])\n ) {\n oldProps[k] = selection[k]\n newProps[k] = props[k]\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps,\n })\n }\n },\n}\n","import {\n Editor,\n Element,\n Location,\n Node,\n NodeEntry,\n Path,\n Text,\n Point,\n Range,\n Transforms,\n} from '..'\nimport { TextUnit } from '../interfaces/types'\n\nexport interface TextDeleteOptions {\n at?: Location\n distance?: number\n unit?: TextUnit\n reverse?: boolean\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n at?: Location\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertTextOptions {\n at?: Location\n voids?: boolean\n}\n\nexport interface TextTransforms {\n delete: (editor: Editor, options?: TextDeleteOptions) => void\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n}\n\nexport const TextTransforms: TextTransforms = {\n /**\n * Delete content in the editor.\n */\n\n delete(editor: Editor, options: TextDeleteOptions = {}): void {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false,\n } = options\n let { at = editor.selection, hanging = false } = options\n\n if (!at) {\n return\n }\n\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor\n }\n\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid\n at = voidPath\n } else {\n const opts = { unit, distance }\n const target = reverse\n ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n : Editor.after(editor, at, opts) || Editor.end(editor, [])\n at = { anchor: at, focus: target }\n hanging = true\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, { at, voids })\n return\n }\n\n if (Range.isCollapsed(at)) {\n return\n }\n\n if (!hanging) {\n const [, end] = Range.edges(at)\n const endOfDoc = Editor.end(editor, [])\n\n if (!Point.equals(end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n }\n\n let [start, end] = Range.edges(at)\n const startBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: start,\n voids,\n })\n const endBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: end,\n voids,\n })\n const isAcrossBlocks =\n startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n const isSingleText = Path.equals(start.path, end.path)\n const startVoid = voids\n ? null\n : Editor.void(editor, { at: start, mode: 'highest' })\n const endVoid = voids\n ? null\n : Editor.void(editor, { at: end, mode: 'highest' })\n\n // If the start or end points are inside an inline void, nudge them out.\n if (startVoid) {\n const before = Editor.before(editor, start)\n\n if (\n before &&\n startBlock &&\n Path.isAncestor(startBlock[1], before.path)\n ) {\n start = before\n }\n }\n\n if (endVoid) {\n const after = Editor.after(editor, end)\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after\n }\n }\n\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n const matches: NodeEntry[] = []\n let lastPath: Path | undefined\n\n for (const entry of Editor.nodes(editor, { at, voids })) {\n const [node, path] = entry\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue\n }\n\n if (\n (!voids && Editor.isVoid(editor, node)) ||\n (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n ) {\n matches.push(entry)\n lastPath = path\n }\n }\n\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n\n if (!isSingleText && !startVoid) {\n const point = startRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const { offset } = start\n const text = node.text.slice(offset)\n if (text.length > 0)\n editor.apply({ type: 'remove_text', path, offset, text })\n }\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n Transforms.removeNodes(editor, { at: path, voids })\n }\n\n if (!endVoid) {\n const point = endRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const offset = isSingleText ? start.offset : 0\n const text = node.text.slice(offset, end.offset)\n if (text.length > 0)\n editor.apply({ type: 'remove_text', path, offset, text })\n }\n\n if (\n !isSingleText &&\n isAcrossBlocks &&\n endRef.current &&\n startRef.current\n ) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids,\n })\n }\n\n const startUnref = startRef.unref()\n const endUnref = endRef.unref()\n const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n if (options.at == null && point) {\n Transforms.select(editor, point)\n }\n })\n },\n\n /**\n * Insert a fragment at a specific location in the editor.\n */\n\n insertFragment(\n editor: Editor,\n fragment: Node[],\n options: TextInsertFragmentOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false } = options\n let { at = editor.selection } = options\n\n if (!fragment.length) {\n return\n }\n\n if (!at) {\n return\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at)\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n const inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (inlineElementMatch) {\n const [, inlinePath] = inlineElementMatch\n\n if (Editor.isEnd(editor, at, inlinePath)) {\n const after = Editor.after(editor, inlinePath)!\n at = after\n } else if (Editor.isStart(editor, at, inlinePath)) {\n const before = Editor.before(editor, inlinePath)!\n at = before\n }\n }\n\n const blockMatch = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at,\n voids,\n })!\n const [, blockPath] = blockMatch\n const isBlockStart = Editor.isStart(editor, at, blockPath)\n const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n const isBlockEmpty = isBlockStart && isBlockEnd\n const mergeStart = !isBlockStart || (isBlockStart && isBlockEnd)\n const mergeEnd = !isBlockEnd\n const [, firstPath] = Node.first({ children: fragment }, [])\n const [, lastPath] = Node.last({ children: fragment }, [])\n\n const matches: NodeEntry[] = []\n const matcher = ([n, p]: NodeEntry) => {\n const isRoot = p.length === 0\n if (isRoot) {\n return false\n }\n\n if (isBlockEmpty) {\n return true\n }\n\n if (\n mergeStart &&\n Path.isAncestor(p, firstPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n if (\n mergeEnd &&\n Path.isAncestor(p, lastPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n return true\n }\n\n for (const entry of Node.nodes(\n { children: fragment },\n { pass: matcher }\n )) {\n if (matcher(entry)) {\n matches.push(entry)\n }\n }\n\n const starts = []\n const middles = []\n const ends = []\n let starting = true\n let hasBlocks = false\n\n for (const [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false\n hasBlocks = true\n middles.push(node)\n } else if (starting) {\n starts.push(node)\n } else {\n ends.push(node)\n }\n }\n\n const [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })!\n\n const [, inlinePath] = inlineMatch\n const isInlineStart = Editor.isStart(editor, at, inlinePath)\n const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n const middleRef = Editor.pathRef(\n editor,\n isBlockEnd ? Path.next(blockPath) : blockPath\n )\n\n const endRef = Editor.pathRef(\n editor,\n isInlineEnd ? Path.next(inlinePath) : inlinePath\n )\n\n const blockPathRef = Editor.pathRef(editor, blockPath)\n\n Transforms.splitNodes(editor, {\n at,\n match: n =>\n hasBlocks\n ? Editor.isBlock(editor, n)\n : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n voids,\n })\n\n const startRef = Editor.pathRef(\n editor,\n !isInlineStart || (isInlineStart && isInlineEnd)\n ? Path.next(inlinePath)\n : inlinePath\n )\n\n Transforms.insertNodes(editor, starts, {\n at: startRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (isBlockEmpty && middles.length) {\n Transforms.delete(editor, { at: blockPathRef.unref()!, voids })\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current!,\n match: n => Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n })\n\n Transforms.insertNodes(editor, ends, {\n at: endRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (!options.at) {\n let path\n\n if (ends.length > 0) {\n path = Path.previous(endRef.current!)\n } else if (middles.length > 0) {\n path = Path.previous(middleRef.current!)\n } else {\n path = Path.previous(startRef.current!)\n }\n\n const end = Editor.end(editor, path)\n Transforms.select(editor, end)\n }\n\n startRef.unref()\n middleRef.unref()\n endRef.unref()\n })\n },\n\n /**\n * Insert a string of text in the Editor.\n */\n\n insertText(\n editor: Editor,\n text: string,\n options: TextInsertTextOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { voids = false } = options\n let { at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const end = Range.end(at)\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n const start = Range.start(at)\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at, voids })\n const startPoint = startRef.unref()\n const endPoint = endRef.unref()\n\n at = startPoint || endPoint!\n Transforms.setSelection(editor, { anchor: at, focus: at })\n }\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n const { path, offset } = at\n if (text.length > 0)\n editor.apply({ type: 'insert_text', path, offset, text })\n })\n },\n}\n","import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n NodeTransforms &\n SelectionTransforms &\n TextTransforms = {\n ...GeneralTransforms,\n ...NodeTransforms,\n ...SelectionTransforms,\n ...TextTransforms,\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\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 event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport PropTypes from 'prop-types'\n\nconst textProps = {\n fill: PropTypes.string,\n fontSize: PropTypes.number,\n fontFamily: PropTypes.string,\n}\n\nexport const axisThemePropType = PropTypes.shape({\n domain: PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string,\n }).isRequired,\n }).isRequired,\n ticks: PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string,\n }).isRequired,\n text: PropTypes.shape({ ...textProps }).isRequired,\n }).isRequired,\n legend: PropTypes.shape({\n text: PropTypes.shape({ ...textProps }).isRequired,\n }).isRequired,\n})\n\nexport const gridThemePropType = PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string,\n }).isRequired,\n})\n\nexport const legendsThemePropType = PropTypes.shape({\n hidden: PropTypes.shape({\n symbol: PropTypes.shape({\n fill: PropTypes.string.isRequired,\n opacity: PropTypes.number,\n }).isRequired,\n text: PropTypes.shape({ ...textProps, opacity: PropTypes.number }).isRequired,\n }).isRequired,\n text: PropTypes.shape({ ...textProps }).isRequired,\n})\n\nexport const labelsThemePropType = PropTypes.shape({\n text: PropTypes.shape({ ...textProps }).isRequired,\n})\n\nexport const dotsThemePropType = PropTypes.shape({\n text: PropTypes.shape({ ...textProps }).isRequired,\n})\n\nexport const markersThemePropType = PropTypes.shape({\n text: PropTypes.shape({ ...textProps }).isRequired,\n})\n\nexport const crosshairPropType = PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string,\n }).isRequired,\n})\n\nexport const annotationsPropType = PropTypes.shape({\n text: PropTypes.shape({\n ...textProps,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired,\n }).isRequired,\n link: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired,\n }).isRequired,\n outline: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired,\n }).isRequired,\n symbol: PropTypes.shape({\n fill: PropTypes.string.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired,\n }).isRequired,\n})\n\nexport const themePropType = PropTypes.shape({\n background: PropTypes.string.isRequired,\n fontFamily: PropTypes.string.isRequired,\n fontSize: PropTypes.number.isRequired,\n textColor: PropTypes.string.isRequired,\n axis: axisThemePropType.isRequired,\n grid: gridThemePropType.isRequired,\n legends: legendsThemePropType.isRequired,\n labels: labelsThemePropType.isRequired,\n dots: dotsThemePropType.isRequired,\n markers: markersThemePropType,\n crosshair: crosshairPropType.isRequired,\n annotations: annotationsPropType.isRequired,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nexport const defaultTheme = {\n background: 'transparent',\n fontFamily: 'sans-serif',\n fontSize: 11,\n textColor: '#333333',\n axis: {\n domain: {\n line: {\n stroke: 'transparent',\n strokeWidth: 1,\n },\n },\n ticks: {\n line: {\n stroke: '#777777',\n strokeWidth: 1,\n },\n text: {},\n },\n legend: {\n text: {\n fontSize: 12,\n },\n },\n },\n grid: {\n line: {\n stroke: '#dddddd',\n strokeWidth: 1,\n },\n },\n legends: {\n hidden: {\n symbol: {\n fill: '#333333',\n opacity: 0.6,\n },\n text: {\n fill: '#333333',\n opacity: 0.6,\n },\n },\n text: {},\n },\n labels: {\n text: {},\n },\n markers: {\n lineColor: '#000000',\n lineStrokeWidth: 1,\n text: {},\n },\n dots: {\n text: {},\n },\n tooltip: {\n container: {\n background: 'white',\n color: 'inherit',\n fontSize: 'inherit',\n borderRadius: '2px',\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.25)',\n padding: '5px 9px',\n },\n basic: {\n whiteSpace: 'pre',\n display: 'flex',\n alignItems: 'center',\n },\n chip: {\n marginRight: 7,\n },\n table: {},\n tableCell: {\n padding: '3px 5px',\n },\n tableCellValue: {\n fontWeight: 'bold',\n },\n },\n crosshair: {\n line: {\n stroke: '#000000',\n strokeWidth: 1,\n strokeOpacity: 0.75,\n strokeDasharray: '6 6',\n },\n },\n annotations: {\n text: {\n fontSize: 13,\n outlineWidth: 2,\n outlineColor: '#ffffff',\n },\n link: {\n stroke: '#000000',\n strokeWidth: 1,\n outlineWidth: 2,\n outlineColor: '#ffffff',\n },\n outline: {\n fill: 'none',\n stroke: '#000000',\n strokeWidth: 2,\n outlineWidth: 2,\n outlineColor: '#ffffff',\n },\n symbol: {\n fill: '#000000',\n outlineWidth: 2,\n outlineColor: '#ffffff',\n },\n },\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport merge from 'lodash/merge'\nimport get from 'lodash/get'\nimport set from 'lodash/set'\n\nconst fontProps = [\n 'axis.ticks.text',\n 'axis.legend.text',\n 'legends.text',\n 'labels.text',\n 'dots.text',\n 'markers.text',\n 'annotations.text',\n]\n\nexport const extendDefaultTheme = (defaultTheme, customTheme) => {\n const theme = merge({}, defaultTheme, customTheme)\n\n fontProps.forEach(prop => {\n if (get(theme, `${prop}.fontFamily`) === undefined) {\n set(theme, `${prop}.fontFamily`, theme.fontFamily)\n }\n if (get(theme, `${prop}.fontSize`) === undefined) {\n set(theme, `${prop}.fontSize`, theme.fontSize)\n }\n if (get(theme, `${prop}.fill`) === undefined) {\n set(theme, `${prop}.fill`, theme.textColor)\n }\n })\n\n return theme\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { createContext, useMemo } from 'react'\nimport { isString } from 'lodash'\nimport PropTypes from 'prop-types'\nimport { config as presets } from '@react-spring/web'\n\nexport const motionConfigContext = createContext()\n\n/**\n * For now we're supporting both react-motion and react-spring,\n * however, react-motion will be gradually replaced by react-spring.\n */\nexport const MotionConfigProvider = ({ children, animate, stiffness, damping, config }) => {\n const value = useMemo(() => {\n const reactSpringConfig = isString(config) ? presets[config] : config\n\n return {\n animate,\n springConfig: { stiffness, damping },\n config: reactSpringConfig,\n }\n }, [animate, stiffness, damping, config])\n\n return <motionConfigContext.Provider value={value}>{children}</motionConfigContext.Provider>\n}\n\nexport const motionPropTypes = {\n animate: PropTypes.bool,\n motionStiffness: PropTypes.number,\n motionDamping: PropTypes.number,\n motionConfig: PropTypes.oneOfType([\n PropTypes.oneOf(Object.keys(presets)),\n PropTypes.shape({\n mass: PropTypes.number,\n tension: PropTypes.number,\n friction: PropTypes.number,\n clamp: PropTypes.bool,\n precision: PropTypes.number,\n velocity: PropTypes.number,\n duration: PropTypes.number,\n easing: PropTypes.func,\n }),\n ]),\n}\n\nMotionConfigProvider.propTypes = {\n children: PropTypes.node.isRequired,\n animate: motionPropTypes.animate,\n stiffness: motionPropTypes.motionStiffness,\n damping: motionPropTypes.motionDamping,\n config: motionPropTypes.motionConfig,\n}\n\nexport const motionDefaultProps = {\n animate: true,\n stiffness: 90,\n damping: 15,\n config: 'default',\n}\n\nMotionConfigProvider.defaultProps = motionDefaultProps\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { useContext } from 'react'\nimport { motionConfigContext } from './context'\n\nexport const useMotionConfig = () => useContext(motionConfigContext)\n","import { interpolateString } from 'd3-interpolate'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useSpring, to } from '@react-spring/web'\nimport { useMotionConfig } from '../motion'\n\nconst usePrevious = value => {\n const ref = useRef()\n\n useEffect(() => {\n ref.current = value\n }, [value])\n\n return ref.current\n}\n\nexport const useAnimatedPath = path => {\n const { animate, config: springConfig } = useMotionConfig()\n\n const previousPath = usePrevious(path)\n const interpolator = useMemo(() => interpolateString(previousPath, path), [previousPath, path])\n\n const { value } = useSpring({\n from: { value: 0 },\n to: { value: 1 },\n reset: true,\n config: springConfig,\n immediate: !animate,\n })\n\n return to(value, interpolator)\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport last from 'lodash/last'\nimport isArray from 'lodash/isArray'\nimport isFunction from 'lodash/isFunction'\nimport { scaleQuantize } from 'd3-scale'\nimport {\n // Diverging\n schemeBrBG,\n schemePRGn,\n schemePiYG,\n schemePuOr,\n schemeRdBu,\n schemeRdGy,\n schemeRdYlBu,\n schemeRdYlGn,\n schemeSpectral,\n\n // Sequential (Single Hue)\n schemeBlues,\n schemeGreens,\n schemeGreys,\n schemeOranges,\n schemePurples,\n schemeReds,\n\n // Sequential (Multi-Hue)\n schemeBuGn,\n schemeBuPu,\n schemeGnBu,\n schemeOrRd,\n schemePuBuGn,\n schemePuBu,\n schemePuRd,\n schemeRdPu,\n schemeYlGnBu,\n schemeYlGn,\n schemeYlOrBr,\n schemeYlOrRd,\n} from 'd3-scale-chromatic'\n\nexport const quantizeColorScales = {\n nivo: ['#d76445', '#f47560', '#e8c1a0', '#97e3d5', '#61cdbb', '#00b0a7'],\n\n // Diverging\n BrBG: last(schemeBrBG),\n PRGn: last(schemePRGn),\n PiYG: last(schemePiYG),\n PuOr: last(schemePuOr),\n RdBu: last(schemeRdBu),\n RdGy: last(schemeRdGy),\n RdYlBu: last(schemeRdYlBu),\n RdYlGn: last(schemeRdYlGn),\n spectral: last(schemeSpectral),\n\n // Sequential (Single Hue)\n blues: last(schemeBlues),\n greens: last(schemeGreens),\n greys: last(schemeGreys),\n oranges: last(schemeOranges),\n purples: last(schemePurples),\n reds: last(schemeReds),\n\n // Sequential (Multi-Hue)\n BuGn: last(schemeBuGn),\n BuPu: last(schemeBuPu),\n GnBu: last(schemeGnBu),\n OrRd: last(schemeOrRd),\n PuBuGn: last(schemePuBuGn),\n PuBu: last(schemePuBu),\n PuRd: last(schemePuRd),\n RdPu: last(schemeRdPu),\n YlGnBu: last(schemeYlGnBu),\n YlGn: last(schemeYlGn),\n YlOrBr: last(schemeYlOrBr),\n YlOrRd: last(schemeYlOrRd),\n}\n\nexport const quantizeColorScalesKeys = Object.keys(quantizeColorScales)\n\nexport const guessQuantizeColorScale = colors => {\n // colors is already a valid scale\n if (isFunction(colors)) {\n if (!isFunction(colors.domain)) {\n throw new Error(\n `Provided colors should be a valid quantize scale providing a 'domain()' function`\n )\n }\n\n return colors\n }\n\n if (quantizeColorScales[colors]) {\n // use predefined d3 quantize color scale\n return scaleQuantize().range(quantizeColorScales[colors])\n }\n\n // user defined colors\n if (isArray(colors)) return scaleQuantize().range(colors)\n\n throw new Error(\n `Unable to guess quantize color scale from '${colors}',\\nmust be a function or one of:\\n'${quantizeColorScalesKeys.join(\n `', '`\n )}'`\n )\n}\n","import PropTypes from 'prop-types'\nimport without from 'lodash/without'\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBundle,\n curveCardinal,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCatmullRom,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n} from 'd3-shape'\n\nexport const curvePropMapping = {\n basis: curveBasis,\n basisClosed: curveBasisClosed,\n basisOpen: curveBasisOpen,\n bundle: curveBundle,\n cardinal: curveCardinal,\n cardinalClosed: curveCardinalClosed,\n cardinalOpen: curveCardinalOpen,\n catmullRom: curveCatmullRom,\n catmullRomClosed: curveCatmullRomClosed,\n catmullRomOpen: curveCatmullRomOpen,\n linear: curveLinear,\n linearClosed: curveLinearClosed,\n monotoneX: curveMonotoneX,\n monotoneY: curveMonotoneY,\n natural: curveNatural,\n step: curveStep,\n stepAfter: curveStepAfter,\n stepBefore: curveStepBefore,\n}\n\nexport const curvePropKeys = Object.keys(curvePropMapping)\n\nexport const curvePropType = PropTypes.oneOf(curvePropKeys)\n\nexport const closedCurvePropKeys = curvePropKeys.filter(c => c.endsWith('Closed'))\n\n// Safe curves to be used with d3 area shape generator\nexport const areaCurvePropKeys = without(\n curvePropKeys,\n 'bundle',\n 'basisClosed',\n 'basisOpen',\n 'cardinalClosed',\n 'cardinalOpen',\n 'catmullRomClosed',\n 'catmullRomOpen',\n 'linearClosed'\n)\n\n// Safe curves to be used with d3 line shape generator\nexport const lineCurvePropKeys = without(\n curvePropKeys,\n 'bundle',\n 'basisClosed',\n 'basisOpen',\n 'cardinalClosed',\n 'cardinalOpen',\n 'catmullRomClosed',\n 'catmullRomOpen',\n 'linearClosed'\n)\n\nexport const lineCurvePropType = PropTypes.oneOf(lineCurvePropKeys)\n\n/**\n * Returns curve interpolator from given identifier.\n *\n * @param {string} id - Curve interpolator identifier\n * @return {Function}\n */\nexport const curveFromProp = id => {\n const curveInterpolator = curvePropMapping[id]\n if (!curveInterpolator) {\n throw new TypeError(`'${id}', is not a valid curve interpolator identifier.`)\n }\n\n return curvePropMapping[id]\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport last from 'lodash/last'\nimport isArray from 'lodash/isArray'\nimport isString from 'lodash/isString'\nimport { scaleOrdinal, scaleSequential } from 'd3-scale'\nimport {\n // categorical\n schemeCategory10,\n schemeAccent,\n schemeDark2,\n schemePaired,\n schemePastel1,\n schemePastel2,\n schemeSet1,\n schemeSet2,\n schemeSet3,\n // diverging\n interpolateBrBG,\n schemeBrBG,\n interpolatePRGn,\n schemePRGn,\n interpolatePiYG,\n schemePiYG,\n interpolatePuOr,\n schemePuOr,\n interpolateRdBu,\n schemeRdBu,\n interpolateRdGy,\n schemeRdGy,\n interpolateRdYlBu,\n schemeRdYlBu,\n interpolateRdYlGn,\n schemeRdYlGn,\n interpolateSpectral,\n schemeSpectral,\n // sequential single hue\n interpolateBlues,\n schemeBlues,\n interpolateGreens,\n schemeGreens,\n interpolateGreys,\n schemeGreys,\n interpolateOranges,\n schemeOranges,\n interpolatePurples,\n schemePurples,\n interpolateReds,\n schemeReds,\n // sequential multi hue\n interpolateViridis,\n interpolateInferno,\n interpolateMagma,\n interpolatePlasma,\n interpolateWarm,\n interpolateCool,\n interpolateCubehelixDefault,\n interpolateBuGn,\n schemeBuGn,\n interpolateBuPu,\n schemeBuPu,\n interpolateGnBu,\n schemeGnBu,\n interpolateOrRd,\n schemeOrRd,\n interpolatePuBuGn,\n schemePuBuGn,\n interpolatePuBu,\n schemePuBu,\n interpolatePuRd,\n schemePuRd,\n interpolateRdPu,\n schemeRdPu,\n interpolateYlGnBu,\n schemeYlGnBu,\n interpolateYlGn,\n schemeYlGn,\n interpolateYlOrBr,\n schemeYlOrBr,\n interpolateYlOrRd,\n schemeYlOrRd,\n // cyclical\n interpolateRainbow,\n interpolateSinebow,\n} from 'd3-scale-chromatic'\n\n// used for ordinal color scales\nconst colorSchemes = {\n nivo: ['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'],\n // categorical\n category10: schemeCategory10,\n accent: schemeAccent,\n dark2: schemeDark2,\n paired: schemePaired,\n pastel1: schemePastel1,\n pastel2: schemePastel2,\n set1: schemeSet1,\n set2: schemeSet2,\n set3: schemeSet3,\n // diverging\n brown_blueGreen: last(schemeBrBG),\n purpleRed_green: last(schemePRGn),\n pink_yellowGreen: last(schemePiYG),\n purple_orange: last(schemePuOr),\n red_blue: last(schemeRdBu),\n red_grey: last(schemeRdGy),\n red_yellow_blue: last(schemeRdYlBu),\n red_yellow_green: last(schemeRdYlGn),\n spectral: last(schemeSpectral),\n // sequential single hue\n blues: last(schemeBlues),\n greens: last(schemeGreens),\n greys: last(schemeGreys),\n oranges: last(schemeOranges),\n purples: last(schemePurples),\n reds: last(schemeReds),\n // sequential multi hue\n blue_green: last(schemeBuGn),\n blue_purple: last(schemeBuPu),\n green_blue: last(schemeGnBu),\n orange_red: last(schemeOrRd),\n purple_blue_green: last(schemePuBuGn),\n purple_blue: last(schemePuBu),\n purple_red: last(schemePuRd),\n red_purple: last(schemeRdPu),\n yellow_green_blue: last(schemeYlGnBu),\n yellow_green: last(schemeYlGn),\n yellow_orange_brown: last(schemeYlOrBr),\n yellow_orange_red: last(schemeYlOrRd),\n}\n\nexport const colorSchemeIds = [\n 'nivo',\n // categorical\n 'category10',\n 'accent',\n 'dark2',\n 'paired',\n 'pastel1',\n 'pastel2',\n 'set1',\n 'set2',\n 'set3',\n // diverging\n 'brown_blueGreen',\n 'purpleRed_green',\n 'pink_yellowGreen',\n 'purple_orange',\n 'red_blue',\n 'red_grey',\n 'red_yellow_blue',\n 'red_yellow_green',\n 'spectral',\n // sequential single hue\n 'blues',\n 'greens',\n 'greys',\n 'oranges',\n 'purples',\n 'reds',\n // sequential multi hue\n 'blue_green',\n 'blue_purple',\n 'green_blue',\n 'orange_red',\n 'purple_blue_green',\n 'purple_blue',\n 'purple_red',\n 'red_purple',\n 'yellow_green_blue',\n 'yellow_green',\n 'yellow_orange_brown',\n 'yellow_orange_red',\n]\n\n// used for sequential color scales\nexport const colorInterpolators = {\n // diverging\n brown_blueGreen: interpolateBrBG,\n purpleRed_green: interpolatePRGn,\n pink_yellowGreen: interpolatePiYG,\n purple_orange: interpolatePuOr,\n red_blue: interpolateRdBu,\n red_grey: interpolateRdGy,\n red_yellow_blue: interpolateRdYlBu,\n red_yellow_green: interpolateRdYlGn,\n spectral: interpolateSpectral,\n // sequential single hue\n blues: interpolateBlues,\n greens: interpolateGreens,\n greys: interpolateGreys,\n oranges: interpolateOranges,\n purples: interpolatePurples,\n reds: interpolateReds,\n // sequential multi hue\n viridis: interpolateViridis,\n inferno: interpolateInferno,\n magma: interpolateMagma,\n plasma: interpolatePlasma,\n warm: interpolateWarm,\n cool: interpolateCool,\n cubehelixDefault: interpolateCubehelixDefault,\n blue_green: interpolateBuGn,\n blue_purple: interpolateBuPu,\n green_blue: interpolateGnBu,\n orange_red: interpolateOrRd,\n purple_blue_green: interpolatePuBuGn,\n purple_blue: interpolatePuBu,\n purple_red: interpolatePuRd,\n red_purple: interpolateRdPu,\n yellow_green_blue: interpolateYlGnBu,\n yellow_green: interpolateYlGn,\n yellow_orange_brown: interpolateYlOrBr,\n yellow_orange_red: interpolateYlOrRd,\n // cyclical\n rainbow: interpolateRainbow,\n sinebow: interpolateSinebow,\n}\n\nexport const colorInterpolatorIds = [\n // diverging\n 'brown_blueGreen',\n 'purpleRed_green',\n 'pink_yellowGreen',\n 'purple_orange',\n 'red_blue',\n 'red_grey',\n 'red_yellow_blue',\n 'red_yellow_green',\n 'spectral',\n // sequential single hue\n 'blues',\n 'greens',\n 'greys',\n 'oranges',\n 'purples',\n 'reds',\n // sequential multi hue\n 'viridis',\n 'inferno',\n 'magma',\n 'plasma',\n 'warm',\n 'cool',\n 'cubehelixDefault',\n 'blue_green',\n 'blue_purple',\n 'green_blue',\n 'orange_red',\n 'purple_blue_green',\n 'purple_blue',\n 'purple_red',\n 'red_purple',\n 'yellow_green_blue',\n 'yellow_green',\n 'yellow_orange_brown',\n 'yellow_orange_red',\n // cyclical\n 'rainbow',\n 'sinebow',\n]\n\nexport const nivoCategoricalColors = () =>\n scaleOrdinal(['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'])\n\nexport const getColorScale = (colors, dataScale) => {\n if (isString(colors)) {\n const scheme = colorSchemes[colors]\n if (scheme !== undefined) {\n const scale = scaleOrdinal(scheme)\n scale.type = 'ordinal'\n\n return scale\n }\n\n if (dataScale !== undefined && colors.indexOf('seq:') === 0) {\n const interpolator = colorInterpolators[colors.slice(4)]\n if (interpolator !== undefined) {\n const scale = scaleSequential(interpolator).domain(dataScale.domain())\n scale.type = 'sequential'\n\n return scale\n }\n }\n }\n\n if (isArray(colors)) {\n const scale = scaleOrdinal(colors)\n scale.type = 'ordinal'\n\n return scale\n }\n\n // just use provided value,\n // all elements will have identical color\n return () => colors\n}\n\nexport * from './quantize'\n","import PropTypes from 'prop-types'\nimport { quantizeColorScalesKeys } from '../lib/colors'\n\nexport const quantizeColorScalePropType = PropTypes.oneOfType([\n PropTypes.oneOf(quantizeColorScalesKeys),\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.string),\n])\n","import PropTypes from 'prop-types'\nimport {\n // order\n stackOrderAscending,\n stackOrderDescending,\n stackOrderInsideOut,\n stackOrderNone,\n stackOrderReverse,\n // offset\n stackOffsetExpand,\n stackOffsetDiverging,\n stackOffsetNone,\n stackOffsetSilhouette,\n stackOffsetWiggle,\n} from 'd3-shape'\n\nexport const stackOrderPropMapping = {\n ascending: stackOrderAscending,\n descending: stackOrderDescending,\n insideOut: stackOrderInsideOut,\n none: stackOrderNone,\n reverse: stackOrderReverse,\n}\n\nexport const stackOrderPropKeys = Object.keys(stackOrderPropMapping)\n\nexport const stackOrderPropType = PropTypes.oneOf(stackOrderPropKeys)\n\nexport const stackOrderFromProp = prop => stackOrderPropMapping[prop]\n\nexport const stackOffsetPropMapping = {\n expand: stackOffsetExpand,\n diverging: stackOffsetDiverging,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle,\n}\n\nexport const stackOffsetPropKeys = Object.keys(stackOffsetPropMapping)\n\nexport const stackOffsetPropType = PropTypes.oneOf(stackOffsetPropKeys)\n\nexport const stackOffsetFromProp = prop => stackOffsetPropMapping[prop]\n","import PropTypes from 'prop-types'\n\nexport const defsPropTypes = {\n defs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n })\n ).isRequired,\n fill: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n match: PropTypes.oneOfType([PropTypes.oneOf(['*']), PropTypes.object, PropTypes.func])\n .isRequired,\n })\n ).isRequired,\n}\n","import PropTypes from 'prop-types'\nimport {\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify,\n} from 'd3-hierarchy'\n\nexport const treeMapTilePropMapping = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n sliceDice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify,\n}\n\nexport const treeMapTilePropKeys = Object.keys(treeMapTilePropMapping)\n\nexport const treeMapTilePropType = PropTypes.oneOf(treeMapTilePropKeys)\n\nexport const treeMapTileFromProp = prop => treeMapTilePropMapping[prop]\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { scaleOrdinal } from 'd3-scale'\nimport { schemeSet3 } from 'd3-scale-chromatic'\nimport { nivoCategoricalColors } from '../lib/colors'\n\n// motion\nexport const defaultAnimate = true\nexport const defaultMotionStiffness = 90\nexport const defaultMotionDamping = 15\n\n// colors\nexport const defaultCategoricalColors = nivoCategoricalColors\nexport const defaultColorRange = scaleOrdinal(schemeSet3)\n\n// margin\nexport const defaultMargin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n}\n","import PropTypes from 'prop-types'\n\nexport const marginPropType = PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number,\n}).isRequired\n\nexport const blendModes = [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n]\n\nexport const blendModePropType = PropTypes.oneOf(blendModes)\n\nexport * from './colors'\nexport * from './curve'\nexport * from './defs'\nexport * from './stack'\nexport * from './treeMap'\n","import { useMemo } from 'react'\nimport { defaultMargin } from '../defaults'\n\nexport const useDimensions = (width, height, partialMargin = {}) =>\n useMemo(() => {\n const margin = {\n ...defaultMargin,\n ...partialMargin,\n }\n\n return {\n margin,\n innerWidth: width - margin.left - margin.right,\n innerHeight: height - margin.top - margin.bottom,\n outerWidth: width,\n outerHeight: height,\n }\n }, [\n width,\n height,\n partialMargin.top,\n partialMargin.right,\n partialMargin.bottom,\n partialMargin.left,\n ])\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\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 \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\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 if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\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}","/**\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","import { useRef, useState, useEffect } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\n\nexport const useMeasure = () => {\n const measureRef = useRef(null)\n const [bounds, setBounds] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n })\n const [observer] = useState(() => new ResizeObserver(([entry]) => setBounds(entry.contentRect)))\n\n useEffect(() => {\n if (measureRef.current) {\n observer.observe(measureRef.current)\n }\n\n return () => observer.disconnect()\n }, [])\n\n return [measureRef, bounds]\n}\n","import { useMemo } from 'react'\nimport { format as d3Format } from 'd3-format'\nimport { timeFormat as d3TimeFormat } from 'd3-time-format'\n\nexport const getValueFormatter = format => {\n // user defined function\n if (typeof format === 'function') return format\n\n if (typeof format === 'string') {\n // time format specifier\n if (format.indexOf('time:') === 0) {\n return d3TimeFormat(format.slice('5'))\n }\n\n // standard format specifier\n return d3Format(format)\n }\n\n // no formatting\n return value => `${value}`\n}\n\nexport const useValueFormatter = format => useMemo(() => getValueFormatter(format), [format])\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { createContext, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { usePartialTheme } from '../hooks'\n\nexport const themeContext = createContext()\n\n// required to preserve equality\nconst defaultPartialTheme = {}\n\nexport const ThemeProvider = ({ theme: partialTheme = defaultPartialTheme, children }) => {\n const theme = usePartialTheme(partialTheme)\n\n return <themeContext.Provider value={theme}>{children}</themeContext.Provider>\n}\n\nThemeProvider.propTypes = {\n children: PropTypes.node.isRequired,\n theme: PropTypes.object,\n}\n\nexport const useTheme = () => useContext(themeContext)\n","import { useMemo } from 'react'\nimport { defaultTheme, extendDefaultTheme } from '../theming'\n\nexport const usePartialTheme = partialTheme =>\n useMemo(() => extendDefaultTheme(defaultTheme, partialTheme), [partialTheme])\n","import { cloneElement } from 'react'\nimport PropTypes from 'prop-types'\n\n// type ConditionalWrapperProps = {\n// children: JSX.Element\n// condition: boolean\n// wrapper: (children: JSX.Element) => JSX.Element\n// }\n\nexport const ConditionalWrapper = ({ children, condition, wrapper }) => {\n if (!condition) return children\n\n return cloneElement(wrapper, {}, children)\n}\n\nConditionalWrapper.propTypes = {\n children: PropTypes.node.isRequired,\n condition: PropTypes.bool.isRequired,\n wrapper: PropTypes.element.isRequired,\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { TooltipProvider, Tooltip } from '@nivo/tooltip'\nimport { ThemeProvider } from '../theming'\nimport { MotionConfigProvider } from '../motion'\nimport { ConditionalWrapper } from './ConditionalWrapper'\n\nconst containerStyle = {\n position: 'relative',\n}\n\nexport const Container = ({\n children,\n theme,\n renderWrapper = true,\n isInteractive = true,\n animate,\n motionStiffness,\n motionDamping,\n motionConfig,\n}) => {\n const container = useRef(null)\n\n return (\n <ThemeProvider theme={theme}>\n <MotionConfigProvider\n animate={animate}\n stiffness={motionStiffness}\n damping={motionDamping}\n config={motionConfig}\n >\n <TooltipProvider container={container}>\n {/* we should not render the div element if using the HTTP API */}\n <ConditionalWrapper\n condition={renderWrapper}\n wrapper={<div style={containerStyle} ref={container} />}\n >\n {children}\n {isInteractive && <Tooltip />}\n </ConditionalWrapper>\n </TooltipProvider>\n </MotionConfigProvider>\n </ThemeProvider>\n )\n}\n\nContainer.propTypes = {\n children: PropTypes.element.isRequired,\n isInteractive: PropTypes.bool,\n renderWrapper: PropTypes.bool,\n theme: PropTypes.object,\n animate: PropTypes.bool,\n motionStiffness: PropTypes.number,\n motionDamping: PropTypes.number,\n motionConfig: PropTypes.string,\n}\n\nexport default Container\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport PropTypes from 'prop-types'\nimport { useMeasure } from '../hooks'\n\nconst ResponsiveWrapper = ({ children }) => {\n const [measureRef, bounds] = useMeasure()\n const shouldRender = bounds.width > 0 && bounds.height > 0\n\n return (\n <div ref={measureRef} style={{ width: '100%', height: '100%' }}>\n {shouldRender && children({ width: bounds.width, height: bounds.height })}\n </div>\n )\n}\n\nResponsiveWrapper.propTypes = {\n children: PropTypes.func.isRequired,\n}\n\nexport default ResponsiveWrapper\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { LinearGradient } from './LinearGradient'\n\nexport const gradientTypes = {\n linearGradient: LinearGradient,\n}\n\nexport * from './LinearGradient'\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport PropTypes from 'prop-types'\n\nexport const LinearGradient = ({ id, colors }) => (\n <linearGradient id={id} x1={0} x2={0} y1={0} y2={1}>\n {colors.map(({ offset, color, opacity }) => (\n <stop\n key={offset}\n offset={`${offset}%`}\n stopColor={color}\n stopOpacity={opacity !== undefined ? opacity : 1}\n />\n ))}\n </linearGradient>\n)\n\nLinearGradient.propTypes = {\n id: PropTypes.string.isRequired,\n colors: PropTypes.arrayOf(\n PropTypes.shape({\n offset: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n opacity: PropTypes.number,\n })\n ).isRequired,\n}\n\nexport const linearGradientDef = (id, colors, options = {}) => ({\n id,\n type: 'linearGradient',\n colors,\n ...options,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { memo } from 'react'\nimport PropTypes from 'prop-types'\n\nexport const PatternDots = memo(({ id, background, color, size, padding, stagger }) => {\n let fullSize = size + padding\n const radius = size / 2\n const halfPadding = padding / 2\n if (stagger === true) {\n fullSize = size * 2 + padding * 2\n }\n\n return (\n <pattern id={id} width={fullSize} height={fullSize} patternUnits=\"userSpaceOnUse\">\n <rect width={fullSize} height={fullSize} fill={background} />\n <circle cx={halfPadding + radius} cy={halfPadding + radius} r={radius} fill={color} />\n {stagger && (\n <circle\n cx={padding * 1.5 + size + radius}\n cy={padding * 1.5 + size + radius}\n r={radius}\n fill={color}\n />\n )}\n </pattern>\n )\n})\n\nPatternDots.displayName = 'PatternDots'\nPatternDots.propTypes = {\n id: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n background: PropTypes.string.isRequired,\n size: PropTypes.number.isRequired,\n padding: PropTypes.number.isRequired,\n stagger: PropTypes.bool.isRequired,\n}\n\nPatternDots.defaultProps = {\n color: '#000000',\n background: '#ffffff',\n size: 4,\n padding: 4,\n stagger: false,\n}\n\nexport const patternDotsDef = (id, options = {}) => ({\n id,\n type: 'patternDots',\n ...options,\n})\n","export const TWO_PI = Math.PI * 2\n\nexport const degreesToRadians = degrees => (degrees * Math.PI) / 180\n\nexport const radiansToDegrees = radians => (180 * radians) / Math.PI\n\nexport const midAngle = arc => arc.startAngle + (arc.endAngle - arc.startAngle) / 2\n\nexport const positionFromAngle = (angle, distance) => ({\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n})\n\n/**\n * Normalize given angle (degrees) in the 0~360 range.\n *\n * @param {number} angle\n *\n * @return {number}\n */\nexport const absoluteAngleDegrees = angle => {\n let absAngle = angle % 360\n if (absAngle < 0) {\n absAngle += 360\n }\n\n return absAngle\n}\n\nexport const absoluteAngleRadians = angle => angle - TWO_PI * Math.floor((angle + Math.PI) / TWO_PI)\n\n/**\n * Ensure angle is always between 0~360.\n *\n * @param {number} rawAngle - in degrees\n *\n * @returns {number}\n */\nexport const normalizeAngle = rawAngle => {\n if (rawAngle < 0) {\n return 360 - (-rawAngle % 360)\n }\n\n return rawAngle % 360\n}\n\n/**\n * Ensure the absolute difference between start and end angles\n * is at most given length.\n *\n * @param startAngle - in degrees\n * @param endAngle - in degrees\n * @param length - in degrees\n *\n * @returns {[number, number]}\n */\nexport const clampArc = (startAngle, endAngle, length = 360) => {\n let clampedEndAngle = endAngle\n if (Math.abs(endAngle - startAngle) > length) {\n clampedEndAngle = startAngle + (endAngle > startAngle ? length : -length)\n }\n\n return [startAngle, clampedEndAngle]\n}\n","export const textPropsByEngine = {\n svg: {\n align: {\n left: 'start',\n center: 'middle',\n right: 'end',\n start: 'start',\n middle: 'middle',\n end: 'end',\n },\n baseline: {\n top: 'text-before-edge',\n center: 'central',\n bottom: 'alphabetic',\n },\n },\n canvas: {\n align: {\n left: 'left',\n center: 'center',\n right: 'right',\n start: 'left',\n middle: 'center',\n end: 'right',\n },\n baseline: {\n top: 'top',\n center: 'middle',\n bottom: 'bottom',\n },\n },\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { memo } from 'react'\nimport PropTypes from 'prop-types'\nimport { degreesToRadians } from '../../../lib/polar'\n\nexport const PatternLines = memo(\n ({ id, spacing: _spacing, rotation: _rotation, background, color, lineWidth }) => {\n let rotation = Math.round(_rotation) % 360\n const spacing = Math.abs(_spacing)\n\n if (rotation > 180) rotation = rotation - 360\n else if (rotation > 90) rotation = rotation - 180\n else if (rotation < -180) rotation = rotation + 360\n else if (rotation < -90) rotation = rotation + 180\n\n let width = spacing\n let height = spacing\n let path\n\n if (rotation === 0) {\n path = `\n M 0 0 L ${width} 0\n M 0 ${height} L ${width} ${height}\n `\n } else if (rotation === 90) {\n path = `\n M 0 0 L 0 ${height}\n M ${width} 0 L ${width} ${height}\n `\n } else {\n width = Math.abs(spacing / Math.sin(degreesToRadians(rotation)))\n height = spacing / Math.sin(degreesToRadians(90 - rotation))\n\n if (rotation > 0) {\n path = `\n M 0 ${-height} L ${width * 2} ${height}\n M ${-width} ${-height} L ${width} ${height}\n M ${-width} 0 L ${width} ${height * 2}\n `\n } else {\n path = `\n M ${-width} ${height} L ${width} ${-height}\n M ${-width} ${height * 2} L ${width * 2} ${-height}\n M 0 ${height * 2} L ${width * 2} 0\n `\n }\n }\n\n return (\n <pattern id={id} width={width} height={height} patternUnits=\"userSpaceOnUse\">\n <rect\n width={width}\n height={height}\n fill={background}\n stroke=\"rgba(255, 0, 0, 0.1)\"\n strokeWidth={0}\n />\n <path d={path} strokeWidth={lineWidth} stroke={color} strokeLinecap=\"square\" />\n </pattern>\n )\n }\n)\n\nPatternLines.displayName = 'PatternLines'\nPatternLines.propTypes = {\n id: PropTypes.string.isRequired,\n spacing: PropTypes.number.isRequired,\n rotation: PropTypes.number.isRequired,\n background: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n lineWidth: PropTypes.number.isRequired,\n}\nPatternLines.defaultProps = {\n spacing: 5,\n rotation: 0,\n color: '#000000',\n background: '#ffffff',\n lineWidth: 2,\n}\n\nexport const patternLinesDef = (id, options = {}) => ({\n id,\n type: 'patternLines',\n ...options,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { memo } from 'react'\nimport PropTypes from 'prop-types'\n\nexport const PatternSquares = memo(({ id, background, color, size, padding, stagger }) => {\n let fullSize = size + padding\n const halfPadding = padding / 2\n if (stagger === true) {\n fullSize = size * 2 + padding * 2\n }\n\n return (\n <pattern id={id} width={fullSize} height={fullSize} patternUnits=\"userSpaceOnUse\">\n <rect width={fullSize} height={fullSize} fill={background} />\n <rect x={halfPadding} y={halfPadding} width={size} height={size} fill={color} />\n {stagger && (\n <rect\n x={padding * 1.5 + size}\n y={padding * 1.5 + size}\n width={size}\n height={size}\n fill={color}\n />\n )}\n </pattern>\n )\n})\n\nPatternSquares.displayName = 'PatternSquares'\nPatternSquares.propTypes = {\n id: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n background: PropTypes.string.isRequired,\n size: PropTypes.number.isRequired,\n padding: PropTypes.number.isRequired,\n stagger: PropTypes.bool.isRequired,\n}\nPatternSquares.defaultProps = {\n color: '#000000',\n background: '#ffffff',\n size: 4,\n padding: 4,\n stagger: false,\n}\n\nexport const patternSquaresDef = (id, options = {}) => ({\n id,\n type: 'patternSquares',\n ...options,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { PatternDots } from './PatternDots'\nimport { PatternLines } from './PatternLines'\nimport { PatternSquares } from './PatternSquares'\n\nexport const patternTypes = {\n patternDots: PatternDots,\n patternLines: PatternLines,\n patternSquares: PatternSquares,\n}\n\nexport * from './PatternDots'\nexport * from './PatternLines'\nexport * from './PatternSquares'\n","import objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { createElement, memo } from 'react'\nimport PropTypes from 'prop-types'\nimport { gradientTypes } from './gradients'\nimport { patternTypes } from './patterns'\n\nexport const defsMapping = {\n ...gradientTypes,\n ...patternTypes,\n}\n\nconst Defs = ({ defs: definitions }) => {\n if (!definitions || definitions.length < 1) return null\n\n return (\n <defs aria-hidden={true}>\n {definitions.map(({ type, ...def }) => {\n if (defsMapping[type])\n return createElement(defsMapping[type], { key: def.id, ...def })\n\n return null\n })}\n </defs>\n )\n}\n\nDefs.propTypes = {\n defs: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.oneOf(Object.keys(defsMapping)).isRequired,\n id: PropTypes.string.isRequired,\n })\n ),\n}\n\nexport default memo(Defs)\n","import PropTypes from 'prop-types'\nimport { Defs } from './defs'\nimport { useTheme } from '../theming'\n\nconst SvgWrapper = ({\n width,\n height,\n margin,\n defs,\n children,\n role,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n isFocusable,\n}) => {\n const theme = useTheme()\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n focusable={isFocusable}\n tabIndex={isFocusable ? 0 : undefined}\n >\n <Defs defs={defs} />\n <rect width={width} height={height} fill={theme.background} />\n <g transform={`translate(${margin.left},${margin.top})`}>{children}</g>\n </svg>\n )\n}\n\nSvgWrapper.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n margin: PropTypes.shape({\n top: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired,\n }).isRequired,\n defs: PropTypes.array,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n role: PropTypes.string,\n isFocusable: PropTypes.bool,\n ariaLabel: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n}\n\nexport default SvgWrapper\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { memo } from 'react'\nimport PropTypes from 'prop-types'\n\nconst DotsItemSymbol = ({ size, color, borderWidth, borderColor }) => (\n <circle\n r={size / 2}\n fill={color}\n stroke={borderColor}\n strokeWidth={borderWidth}\n style={{ pointerEvents: 'none' }}\n />\n)\n\nDotsItemSymbol.propTypes = {\n size: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.string.isRequired,\n}\n\nexport default memo(DotsItemSymbol)\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { memo } from 'react'\nimport PropTypes from 'prop-types'\nimport { useTheme } from '../../../theming'\n\n/**\n *\n * @param {string} axis\n * @param {number} width\n * @param {number} height\n * @param {string} position\n * @param {number} offsetX\n * @param {number} offsetY\n * @param {string} orientation\n * @return {{ x: number, y: number, textAnchor: string }}\n */\nconst computeLabel = ({ axis, width, height, position, offsetX, offsetY, orientation }) => {\n let x = 0\n let y = 0\n const rotation = orientation === 'vertical' ? -90 : 0\n let textAnchor = 'start'\n\n if (axis === 'x') {\n switch (position) {\n case 'top-left':\n x = -offsetX\n y = offsetY\n textAnchor = 'end'\n break\n case 'top':\n y = -offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'middle'\n } else {\n textAnchor = 'start'\n }\n break\n case 'top-right':\n x = offsetX\n y = offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'start'\n } else {\n textAnchor = 'end'\n }\n break\n case 'right':\n x = offsetX\n y = height / 2\n if (orientation === 'horizontal') {\n textAnchor = 'start'\n } else {\n textAnchor = 'middle'\n }\n break\n case 'bottom-right':\n x = offsetX\n y = height - offsetY\n textAnchor = 'start'\n break\n case 'bottom':\n y = height + offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'middle'\n } else {\n textAnchor = 'end'\n }\n break\n case 'bottom-left':\n y = height - offsetY\n x = -offsetX\n if (orientation === 'horizontal') {\n textAnchor = 'end'\n } else {\n textAnchor = 'start'\n }\n break\n case 'left':\n x = -offsetX\n y = height / 2\n if (orientation === 'horizontal') {\n textAnchor = 'end'\n } else {\n textAnchor = 'middle'\n }\n break\n }\n } else {\n switch (position) {\n case 'top-left':\n x = offsetX\n y = -offsetY\n textAnchor = 'start'\n break\n case 'top':\n x = width / 2\n y = -offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'middle'\n } else {\n textAnchor = 'start'\n }\n break\n case 'top-right':\n x = width - offsetX\n y = -offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'end'\n } else {\n textAnchor = 'start'\n }\n break\n case 'right':\n x = width + offsetX\n if (orientation === 'horizontal') {\n textAnchor = 'start'\n } else {\n textAnchor = 'middle'\n }\n break\n case 'bottom-right':\n x = width - offsetX\n y = offsetY\n textAnchor = 'end'\n break\n case 'bottom':\n x = width / 2\n y = offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'middle'\n } else {\n textAnchor = 'end'\n }\n break\n case 'bottom-left':\n x = offsetX\n y = offsetY\n if (orientation === 'horizontal') {\n textAnchor = 'start'\n } else {\n textAnchor = 'end'\n }\n break\n case 'left':\n x = -offsetX\n if (orientation === 'horizontal') {\n textAnchor = 'end'\n } else {\n textAnchor = 'middle'\n }\n break\n }\n }\n\n return { x, y, rotation, textAnchor }\n}\n\nconst CartesianMarkersItem = ({\n width,\n height,\n axis,\n scale,\n value,\n lineStyle,\n textStyle,\n legend,\n legendPosition,\n legendOffsetX,\n legendOffsetY,\n legendOrientation,\n}) => {\n const theme = useTheme()\n\n let x = 0\n let x2 = 0\n let y = 0\n let y2 = 0\n\n if (axis === 'y') {\n y = scale(value)\n x2 = width\n } else {\n x = scale(value)\n y2 = height\n }\n\n let legendNode = null\n if (legend) {\n const legendProps = computeLabel({\n axis,\n width,\n height,\n position: legendPosition,\n offsetX: legendOffsetX,\n offsetY: legendOffsetY,\n orientation: legendOrientation,\n })\n legendNode = (\n <text\n transform={`translate(${legendProps.x}, ${legendProps.y}) rotate(${legendProps.rotation})`}\n textAnchor={legendProps.textAnchor}\n dominantBaseline=\"central\"\n style={textStyle}\n >\n {legend}\n </text>\n )\n }\n\n return (\n <g transform={`translate(${x}, ${y})`}>\n <line\n x1={0}\n x2={x2}\n y1={0}\n y2={y2}\n stroke={theme.markers.lineColor}\n strokeWidth={theme.markers.lineStrokeWidth}\n style={lineStyle}\n />\n {legendNode}\n </g>\n )\n}\n\nCartesianMarkersItem.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n scale: PropTypes.func.isRequired,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)])\n .isRequired,\n lineStyle: PropTypes.object,\n textStyle: PropTypes.object,\n\n legend: PropTypes.string,\n legendPosition: PropTypes.oneOf([\n 'top-left',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n ]),\n legendOffsetX: PropTypes.number.isRequired,\n legendOffsetY: PropTypes.number.isRequired,\n legendOrientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n}\nCartesianMarkersItem.defaultProps = {\n legendPosition: 'top-right',\n legendOffsetX: 14,\n legendOffsetY: 14,\n legendOrientation: 'horizontal',\n}\n\nexport default memo(CartesianMarkersItem)\n","import { createElement, memo } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSpring, animated } from '@react-spring/web'\nimport { useTheme } from '../../theming'\nimport { useMotionConfig } from '../../motion'\nimport DotsItemSymbol from './DotsItemSymbol'\n\nconst DotsItem = ({\n x,\n y,\n symbol = DotsItemSymbol,\n size,\n datum,\n color,\n borderWidth,\n borderColor,\n label,\n labelTextAnchor = 'middle',\n labelYOffset = -12,\n}) => {\n const theme = useTheme()\n\n const { animate, config: springConfig } = useMotionConfig()\n const animatedProps = useSpring({\n transform: `translate(${x}, ${y})`,\n config: springConfig,\n immediate: !animate,\n })\n\n return (\n <animated.g transform={animatedProps.transform} style={{ pointerEvents: 'none' }}>\n {createElement(symbol, {\n size,\n color,\n datum,\n borderWidth,\n borderColor,\n })}\n {label && (\n <text textAnchor={labelTextAnchor} y={labelYOffset} style={theme.dots.text}>\n {label}\n </text>\n )}\n </animated.g>\n )\n}\n\nDotsItem.propTypes = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n datum: PropTypes.object.isRequired,\n\n size: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.string.isRequired,\n\n symbol: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n labelTextAnchor: PropTypes.oneOf(['start', 'middle', 'end']),\n labelYOffset: PropTypes.number.isRequired,\n}\n\nexport default memo(DotsItem)\n","import { memo } from 'react'\nimport PropTypes from 'prop-types'\nimport CartesianMarkersItem from './CartesianMarkersItem'\n\nconst CartesianMarkers = ({ markers, width, height, xScale, yScale }) => {\n if (!markers || markers.length === 0) return null\n\n return markers.map((marker, i) => (\n <CartesianMarkersItem\n key={i}\n {...marker}\n width={width}\n height={height}\n scale={marker.axis === 'y' ? yScale : xScale}\n />\n ))\n}\n\nCartesianMarkers.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n\n markers: PropTypes.arrayOf(\n PropTypes.shape({\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]).isRequired,\n lineStyle: PropTypes.object,\n textStyle: PropTypes.object,\n })\n ),\n}\n\nexport default memo(CartesianMarkers)\n","import isFunction from 'lodash/isFunction'\nimport get from 'lodash/get'\nimport { format } from 'd3-format'\nimport { useMemo } from 'react'\n\nexport const getLabelGenerator = (_label, labelFormat) => {\n const getRawLabel = isFunction(_label) ? _label : d => get(d, _label)\n let formatter\n if (labelFormat) {\n formatter = isFunction(labelFormat) ? labelFormat : format(labelFormat)\n }\n\n if (formatter) return d => formatter(getRawLabel(d))\n return getRawLabel\n}\n\nexport const getPropertyAccessor = accessor =>\n isFunction(accessor) ? accessor : d => get(d, accessor)\n\nexport const usePropertyAccessor = accessor =>\n useMemo(() => getPropertyAccessor(accessor), [accessor])\n","/**\n * Computes distance between two points.\n *\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {number}\n */\nexport const getDistance = (x1, y1, x2, y2) => {\n let deltaX = x2 - x1\n let deltaY = y2 - y1\n\n deltaX *= deltaX\n deltaY *= deltaY\n\n return Math.sqrt(deltaX + deltaY)\n}\n\n/**\n * Computes angle (radians) between two points.\n *\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {number}\n */\nexport const getAngle = (x1, y1, x2, y2) => {\n const angle = Math.atan2(y2 - y1, x2 - x1) - Math.PI / 2\n\n return angle > 0 ? angle : Math.PI * 2 + angle\n}\n\n/**\n * Check if cursor is in given rectangle.\n *\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number} cursorX\n * @param {number} cursorY\n * @return {boolean}\n */\nexport const isCursorInRect = (x, y, width, height, cursorX, cursorY) =>\n x <= cursorX && cursorX <= x + width && y <= cursorY && cursorY <= y + height\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport * from './detect'\n\nexport const getRelativeCursor = (el, event) => {\n const { clientX, clientY } = event\n const bounds = el.getBoundingClientRect()\n\n return [clientX - bounds.left, clientY - bounds.top]\n}\n","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) 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}","import isFunction from 'lodash/isFunction'\nimport isPlainObject from 'lodash/isPlainObject'\nimport pick from 'lodash/pick'\nimport isEqual from 'lodash/isEqual'\nimport get from 'lodash/get'\nimport set from 'lodash/set'\nimport { gradientTypes, patternTypes } from '../components/defs'\n\nconst gradientKeys = Object.keys(gradientTypes)\nconst patternKeys = Object.keys(patternTypes)\n\n/**\n * Check a node matches given def predicate.\n *\n * @param {string|Function|Object} predicate\n * @param {Object} node\n * @param {string} [dataKey] - Optional path to access node data\n * @returns {boolean}\n */\nexport const isMatchingDef = (predicate, node, dataKey) => {\n if (predicate === '*') {\n return true\n } else if (isFunction(predicate)) {\n return predicate(node)\n } else if (isPlainObject(predicate)) {\n const data = dataKey ? get(node, dataKey) : node\n return isEqual(pick(data, Object.keys(predicate)), predicate)\n }\n\n return false\n}\n\n/**\n * Compute SVG defs.\n *\n * @param {Array.<Object>} defs - Base SVG defs configs\n * @param {Array.<Object>} nodes - Data nodes to apply defs on\n * @param {Array.<Object>} rules - Rules used to conditionally apply defs on data nodes\n * @param {string} [dataKey] - Path to node data, used for rule object query based predicate\n * @param {string} [colorKey='color'] - Node color path, required when inheritance is involved\n * @param {string} [targetKey='fill'] - Node target property to apply def ID on\n * @returns {Array}\n */\nexport const bindDefs = (\n defs,\n nodes,\n rules,\n { dataKey, colorKey = 'color', targetKey = 'fill' } = {}\n) => {\n let boundDefs = []\n\n // will hold generated variation ids,\n // to avoid generating multiple identical defs\n const generatedIds = {}\n\n if (defs.length && nodes.length) {\n // first, add base defs\n boundDefs = [...defs]\n\n nodes.forEach(node => {\n for (let i = 0; i < rules.length; i++) {\n const { id, match } = rules[i]\n if (isMatchingDef(match, node, dataKey)) {\n const def = defs.find(({ id: defId }) => defId === id)\n if (def) {\n if (patternKeys.includes(def.type)) {\n if (def.background === 'inherit' || def.color === 'inherit') {\n const nodeColor = get(node, colorKey)\n let background = def.background\n let color = def.color\n\n let inheritedId = id\n if (def.background === 'inherit') {\n inheritedId = `${inheritedId}.bg.${nodeColor}`\n background = nodeColor\n }\n if (def.color === 'inherit') {\n inheritedId = `${inheritedId}.fg.${nodeColor}`\n color = nodeColor\n }\n\n set(node, targetKey, `url(#${inheritedId})`)\n if (!generatedIds[inheritedId]) {\n boundDefs.push({\n ...def,\n id: inheritedId,\n background,\n color,\n })\n generatedIds[inheritedId] = 1\n }\n } else {\n // do not generate new def as there's no inheritance involved\n set(node, targetKey, `url(#${id})`)\n }\n } else if (gradientKeys.includes(def.type)) {\n const allColors = def.colors.map(({ color }) => color)\n\n if (allColors.includes('inherit')) {\n const nodeColor = get(node, colorKey)\n\n let inheritedId = id\n const inheritedDef = {\n ...def,\n colors: def.colors.map((colorStop, i) => {\n if (colorStop.color !== 'inherit') return colorStop\n\n inheritedId = `${inheritedId}.${i}.${nodeColor}`\n\n return {\n ...colorStop,\n color:\n colorStop.color === 'inherit'\n ? nodeColor\n : colorStop.color,\n }\n }),\n }\n inheritedDef.id = inheritedId\n\n set(node, targetKey, `url(#${inheritedId})`)\n if (!generatedIds[inheritedId]) {\n boundDefs.push(inheritedDef)\n generatedIds[inheritedId] = 1\n }\n } else {\n // do not generate new def as there's no inheritance involved\n set(node, targetKey, `url(#${id})`)\n }\n }\n }\n\n // break loop on first match\n break\n }\n }\n })\n }\n\n return boundDefs\n}\n","import 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://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\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}","module.exports = require(\"regenerator-runtime\");\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\n}\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n emulateTransitionEnd,\n execute,\n getElement,\n getTransitionDurationFromElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.1'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n if (!isAnimated) {\n execute(callback)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n EventHandler.one(element, 'transitionend', () => execute(callback))\n\n emulateTransitionEnd(element, transitionDuration)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(element), element, isAnimated)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.get(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(ORDER_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(ORDER_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_RIGHT)\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_LEFT)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n const isPrev = order === ORDER_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrev && activeIndex === 0) || (isNext && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = isPrev ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.get(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n parent = getElement(parent)\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.get(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n isDisabled,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (isDisabled(this._element)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n if (isActive) {\n this.hide()\n return\n }\n\n this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem(event) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.get(toggles[i], DATA_KEY)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n getToggleButton().click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst getWidth = () => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n}\n\nconst hide = (width = getWidth()) => {\n _disableOverFlow()\n // give padding to element to balances the hidden scrollbar width\n _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth\n _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n}\n\nconst _disableOverFlow = () => {\n const actualValue = document.body.style.overflow\n if (actualValue) {\n Manipulator.setDataAttribute(document.body, 'overflow', actualValue)\n }\n\n document.body.style.overflow = 'hidden'\n}\n\nconst _setElementAttributes = (selector, styleProp, callback) => {\n const scrollbarWidth = getWidth()\n SelectorEngine.find(selector)\n .forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n })\n}\n\nconst reset = () => {\n _resetElementAttributes('body', 'overflow')\n _resetElementAttributes('body', 'paddingRight')\n _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n}\n\nconst _resetElementAttributes = (selector, styleProp) => {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n}\n\nconst isBodyOverflowing = () => {\n return getWidth() > 0\n}\n\nexport {\n getWidth,\n hide,\n isBodyOverflowing,\n reset\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { emulateTransitionEnd, execute, getTransitionDurationFromElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: document.body, // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: 'element',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n config.rootElement = config.rootElement || document.body\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._getElement().parentNode.removeChild(this._element)\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n if (!this._config.isAnimated) {\n execute(callback)\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement())\n EventHandler.one(this._getElement(), 'transitionend', () => execute(callback))\n emulateTransitionEnd(this._getElement(), backdropTransitionDuration)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport { getWidth as getScrollBarWidth, hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n scrollBarHide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n scrollBarReset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = getScrollBarWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {})\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const data = Modal.getInstance(target) || new Modal(target)\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport { hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n scrollBarHide()\n this._enforceFocusOnElement(this._element)\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n scrollBarReset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n super.dispose()\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? config : {})\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Data.get(target, DATA_KEY) || new Offcanvas(target)\n\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show())\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this._config.title === 'function' ?\n this._config.title.call(this._element) :\n this._config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this._config) {\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this._config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.set(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? config : {})\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Data.get(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","function _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, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\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 unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\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\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\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\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}","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 setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\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\n return possibleConstructorReturn(this, result);\n };\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","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\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","import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n\n const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n const _ref = props,\n {\n style,\n children,\n scrollTop,\n scrollLeft\n } = _ref,\n attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n if (children !== void 0) {\n instance.textContent = children;\n }\n\n for (let name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n}\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n constructor(_ref) {\n let {\n x,\n y,\n z\n } = _ref,\n style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const inputs = [];\n const transforms = [];\n\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n }\n\n eachProp(style, (value, key) => {\n if (key === 'transform') {\n inputs.push([value || '']);\n transforms.push(transform => [transform, transform === '']);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value)) return;\n const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n inputs.push(toArray(value));\n transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n }\n });\n\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n\n super(style);\n }\n\n}\n\nclass FluidTransform extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this._value = null;\n this.inputs = inputs;\n this.transforms = transforms;\n }\n\n get() {\n return this._value || (this._value = this._get());\n }\n\n _get() {\n let transform = '';\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n transform += ' ' + t;\n identity = identity && id;\n });\n return identity ? 'none' : transform;\n }\n\n observerAdded(count) {\n if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n }\n\n observerRemoved(count) {\n if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._value = null;\n }\n\n callFluidObservers(this, event);\n }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nconst host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: style => new AnimatedStyle(style),\n getComponentProps: _ref => {\n let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return props;\n }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\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 { EventMutation, Hit, EventDef, CalendarContext, EventDropArg } from '@fullcalendar/common'\n\nexport function massageEventDragMutation(eventMutation: EventMutation, hit0: Hit, hit1: Hit) {\n let resource0 = hit0.dateSpan.resourceId\n let resource1 = hit1.dateSpan.resourceId\n\n if (\n resource0 && resource1 &&\n resource0 !== resource1\n ) {\n eventMutation.resourceMutation = {\n matchResourceId: resource0,\n setResourceId: resource1,\n }\n }\n}\n\n/*\nTODO: all this would be much easier if we were using a hash!\n*/\nexport function applyEventDefMutation(eventDef: EventDef, mutation: EventMutation, context: CalendarContext) {\n let resourceMutation = mutation.resourceMutation\n\n if (resourceMutation && computeResourceEditable(eventDef, context)) {\n let index = eventDef.resourceIds.indexOf(resourceMutation.matchResourceId)\n\n if (index !== -1) {\n let resourceIds = eventDef.resourceIds.slice() // copy\n\n resourceIds.splice(index, 1) // remove\n\n if (resourceIds.indexOf(resourceMutation.setResourceId) === -1) { // not already in there\n resourceIds.push(resourceMutation.setResourceId) // add\n }\n\n eventDef.resourceIds = resourceIds\n }\n }\n}\n\n/*\nHACK\nTODO: use EventUi system instead of this\n*/\nexport function computeResourceEditable(eventDef: EventDef, context: CalendarContext): boolean {\n let { resourceEditable } = eventDef\n\n if (resourceEditable == null) {\n let source = eventDef.sourceId && context.getCurrentData().eventSources[eventDef.sourceId]\n\n if (source) {\n resourceEditable = source.extendedProps.resourceEditable // used the Source::extendedProps hack\n }\n\n if (resourceEditable == null) {\n resourceEditable = context.options.eventResourceEditable\n\n if (resourceEditable == null) {\n resourceEditable = context.options.editable // TODO: use defaults system instead\n }\n }\n }\n\n return resourceEditable\n}\n\nexport function transformEventDrop(mutation: EventMutation, context: CalendarContext): Partial<EventDropArg> {\n let { resourceMutation } = mutation\n\n if (resourceMutation) {\n let { calendarApi } = context\n\n return {\n oldResource: calendarApi.getResourceById(resourceMutation.matchResourceId),\n newResource: calendarApi.getResourceById(resourceMutation.setResourceId),\n }\n }\n\n return {\n oldResource: null,\n newResource: null,\n }\n}\n","import {\n rangesIntersect, EventInstanceHash, filterHash, ViewProps, ViewPropsTransformer, CalendarContentProps, memoize,\n EventUi, EventDefHash, EventDef, EventStore, DateRange, CalendarContext,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { ResourceHash } from './structs/resource'\nimport { ResourceEntityExpansions } from './reducers/resourceEntityExpansions'\nimport { computeResourceEditable } from './EventDragging'\n\n// for when resource views need resource data\n\nexport interface ResourceViewProps extends ViewProps {\n resourceStore: ResourceHash\n resourceEntityExpansions: ResourceEntityExpansions\n}\n\nexport class ResourceDataAdder implements ViewPropsTransformer {\n filterResources = memoize(filterResources)\n\n transform(viewProps: ViewProps, calendarProps: CalendarContentProps) {\n if (calendarProps.viewSpec.optionDefaults.needsResourceData) {\n return {\n resourceStore: this.filterResources(\n calendarProps.resourceStore,\n calendarProps.options.filterResourcesWithEvents,\n calendarProps.eventStore,\n calendarProps.dateProfile.activeRange,\n ),\n resourceEntityExpansions: calendarProps.resourceEntityExpansions,\n }\n }\n return null\n }\n}\n\nfunction filterResources(\n resourceStore: ResourceHash,\n doFilterResourcesWithEvents: boolean,\n eventStore: EventStore,\n activeRange: DateRange,\n): ResourceHash {\n if (doFilterResourcesWithEvents) {\n let instancesInRange = filterEventInstancesInRange(eventStore.instances, activeRange)\n let hasEvents = computeHasEvents(instancesInRange, eventStore.defs)\n\n __assign(hasEvents, computeAncestorHasEvents(hasEvents, resourceStore))\n\n return filterHash(resourceStore, (resource, resourceId) => hasEvents[resourceId])\n }\n\n return resourceStore\n}\n\nfunction filterEventInstancesInRange(eventInstances: EventInstanceHash, activeRange: DateRange) {\n return filterHash(eventInstances, (eventInstance) => rangesIntersect(eventInstance.range, activeRange))\n}\n\nfunction computeHasEvents(eventInstances: EventInstanceHash, eventDefs: EventDefHash) {\n let hasEvents = {}\n\n for (let instanceId in eventInstances) {\n let instance = eventInstances[instanceId]\n\n for (let resourceId of eventDefs[instance.defId].resourceIds) {\n hasEvents[resourceId] = true\n }\n }\n\n return hasEvents\n}\n\n/*\nmark resources as having events if any of their ancestors have them\nNOTE: resourceStore might not have all the resources that hasEvents{} has keyed\n*/\nfunction computeAncestorHasEvents(hasEvents: { [resourceId: string]: boolean }, resourceStore: ResourceHash) {\n let res = {}\n\n for (let resourceId in hasEvents) {\n let resource\n\n while ((resource = resourceStore[resourceId])) {\n resourceId = resource.parentId // now functioning as the parentId\n\n if (resourceId) {\n res[resourceId] = true\n } else {\n break\n }\n }\n }\n\n return res\n}\n\n/*\nfor making sure events that have editable resources are always draggable in resource views\n*/\nexport function transformIsDraggable(val: boolean, eventDef: EventDef, eventUi: EventUi, context: CalendarContext) {\n if (!val) {\n let state = context.getCurrentData()\n let viewSpec = state.viewSpecs[state.currentViewType]\n\n if (viewSpec.optionDefaults.needsResourceData) {\n if (computeResourceEditable(eventDef, context)) {\n return true\n }\n }\n }\n\n return val\n}\n","import {\n ViewProps, ViewPropsTransformer, CalendarContentProps, memoize, mapHash,\n EventUi, isPropsEqual, EventUiHash, EventDefHash, EventDef, combineEventUis,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { ResourceHash } from './structs/resource'\n\n// for when non-resource view should be given EventUi info (for event coloring/constraints based off of resource data)\n\nexport class ResourceEventConfigAdder implements ViewPropsTransformer {\n buildResourceEventUis = memoize(buildResourceEventUis, isPropsEqual)\n injectResourceEventUis = memoize(injectResourceEventUis)\n\n transform(viewProps: ViewProps, calendarProps: CalendarContentProps) {\n if (!calendarProps.viewSpec.optionDefaults.needsResourceData) {\n return {\n eventUiBases: this.injectResourceEventUis(\n viewProps.eventUiBases,\n viewProps.eventStore.defs,\n this.buildResourceEventUis(calendarProps.resourceStore),\n ),\n }\n }\n return null\n }\n}\n\nfunction buildResourceEventUis(resourceStore: ResourceHash) {\n return mapHash(resourceStore, (resource) => resource.ui)\n}\n\nfunction injectResourceEventUis(eventUiBases: EventUiHash, eventDefs: EventDefHash, resourceEventUis: EventUiHash) {\n return mapHash(eventUiBases, (eventUi, defId) => {\n if (defId) { // not the '' key\n return injectResourceEventUi(eventUi, eventDefs[defId], resourceEventUis)\n }\n return eventUi\n })\n}\n\nfunction injectResourceEventUi(origEventUi: EventUi, eventDef: EventDef, resourceEventUis: EventUiHash) {\n let parts = []\n\n // first resource takes precedence, which fights with the ordering of combineEventUis, thus the unshifts\n for (let resourceId of eventDef.resourceIds) {\n if (resourceEventUis[resourceId]) {\n parts.unshift(resourceEventUis[resourceId])\n }\n }\n\n parts.unshift(origEventUi)\n\n return combineEventUis(parts)\n}\n","import { ResourceFetcher } from './resource-source'\nimport { ResourceSourceRefined } from './resource-source-parse'\n\nexport interface ResourceSourceDef<ResourceSourceMeta> {\n ignoreRange?: boolean\n parseMeta: (refined: ResourceSourceRefined) => ResourceSourceMeta | null\n fetch: ResourceFetcher<ResourceSourceMeta>\n}\n\nlet defs: ResourceSourceDef<any>[] = [] // TODO: use plugin system\n\nexport function registerResourceSourceDef<ResourceSourceMeta>(def: ResourceSourceDef<ResourceSourceMeta>) {\n defs.push(def)\n}\n\nexport function getResourceSourceDef(id: number): ResourceSourceDef<any> {\n return defs[id]\n}\n\nexport function getResourceSourceDefs(): ResourceSourceDef<any>[] {\n return defs\n}\n","import { guid, identity, Identity, RefinedOptionsFromRefiners, refineProps, RawOptionsFromRefiners, Dictionary } from '@fullcalendar/common'\nimport { ResourceInput } from './resource'\nimport { ResourceFunc } from '../resource-sources/resource-func'\nimport { ResourceSource } from './resource-source'\nimport { getResourceSourceDefs } from './resource-source-def'\n\n// TODO: make this a plugin-able parser\n// TODO: success/failure\nexport const RESOURCE_SOURCE_REFINERS = {\n id: String,\n\n // for array. TODO: move to resource-array\n resources: identity as Identity<ResourceInput[] | ResourceFunc>,\n\n // for json feed. TODO: move to resource-json-feed\n url: String,\n method: String,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n extraParams: identity as Identity<Dictionary | (() => Dictionary)>,\n}\n\nexport type ResourceSourceInputObject = RawOptionsFromRefiners<typeof RESOURCE_SOURCE_REFINERS>\nexport type ResourceSourceRefined = RefinedOptionsFromRefiners<typeof RESOURCE_SOURCE_REFINERS>\n\nexport type ResourceSourceInput =\n ResourceSourceInputObject |\n ResourceInput[] |\n ResourceFunc |\n string // url\n\nexport function parseResourceSource(input: ResourceSourceInput): ResourceSource<any> {\n let inputObj: ResourceSourceInputObject\n\n if (typeof input === 'string') {\n inputObj = { url: input }\n } else if (typeof input === 'function' || Array.isArray(input)) {\n inputObj = { resources: input }\n } else if (typeof input === 'object' && input) { // non-null object\n inputObj = input\n }\n\n if (inputObj) {\n let { refined, extra } = refineProps(inputObj, RESOURCE_SOURCE_REFINERS)\n\n warnUnknownProps(extra)\n\n let metaRes = buildResourceSourceMeta(refined)\n\n if (metaRes) {\n return {\n _raw: input,\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n publicId: refined.id || '',\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n }\n }\n }\n\n return null\n}\n\nfunction buildResourceSourceMeta(refined: ResourceSourceRefined) {\n let defs = getResourceSourceDefs()\n\n for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n let def = defs[i]\n let meta = def.parseMeta(refined)\n\n if (meta) {\n return { meta, sourceDefId: i }\n }\n }\n\n return null\n}\n\nfunction warnUnknownProps(props) {\n for (let propName in props) {\n console.warn(`Unknown resource prop '${propName}'`)\n }\n}\n","import { DateProfile, rangesEqual, DateRange, guid, CalendarContext } from '@fullcalendar/common'\nimport { ResourceSource } from '../structs/resource-source'\nimport { parseResourceSource } from '../structs/resource-source-parse'\nimport { getResourceSourceDef } from '../structs/resource-source-def'\nimport { ResourceAction } from './resource-action'\n\nexport function reduceResourceSource(\n source: ResourceSource<any> | null,\n action: ResourceAction | null,\n context: CalendarContext & { dateProfile: DateProfile },\n): ResourceSource<any> {\n let { options, dateProfile } = context\n\n if (!source || !action) {\n return createSource(\n options.initialResources || options.resources,\n dateProfile.activeRange,\n options.refetchResourcesOnNavigate,\n context,\n )\n }\n\n switch (action.type) {\n case 'RESET_RESOURCE_SOURCE':\n return createSource(action.resourceSourceInput, dateProfile.activeRange, options.refetchResourcesOnNavigate, context)\n\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n return handleRangeChange(source, dateProfile.activeRange, options.refetchResourcesOnNavigate, context)\n\n case 'RECEIVE_RESOURCES':\n case 'RECEIVE_RESOURCE_ERROR':\n return receiveResponse(source, action.fetchId, action.fetchRange)\n\n case 'REFETCH_RESOURCES':\n return fetchSource(source, dateProfile.activeRange, context)\n\n default:\n return source\n }\n}\n\nfunction createSource(input, activeRange: DateRange, refetchResourcesOnNavigate, context: CalendarContext) {\n if (input) {\n let source = parseResourceSource(input)\n source = fetchSource(source, refetchResourcesOnNavigate ? activeRange : null, context)\n return source\n }\n\n return null\n}\n\nfunction handleRangeChange(\n source: ResourceSource<any>,\n activeRange: DateRange,\n refetchResourcesOnNavigate,\n context: CalendarContext,\n): ResourceSource<any> {\n if (\n refetchResourcesOnNavigate &&\n !doesSourceIgnoreRange(source) &&\n (!source.fetchRange || !rangesEqual(source.fetchRange, activeRange))\n ) {\n return fetchSource(source, activeRange, context)\n }\n return source\n}\n\nfunction doesSourceIgnoreRange(source: ResourceSource<any>) {\n return Boolean(getResourceSourceDef(source.sourceDefId).ignoreRange)\n}\n\nfunction fetchSource(source: ResourceSource<any>, fetchRange: DateRange | null, context: CalendarContext): ResourceSource<any> {\n let sourceDef = getResourceSourceDef(source.sourceDefId)\n let fetchId = guid()\n\n sourceDef.fetch(\n {\n resourceSource: source,\n range: fetchRange,\n context,\n },\n (res) => {\n context.dispatch({\n type: 'RECEIVE_RESOURCES',\n fetchId,\n fetchRange,\n rawResources: res.rawResources,\n })\n },\n (error) => {\n context.dispatch({\n type: 'RECEIVE_RESOURCE_ERROR',\n fetchId,\n fetchRange,\n error,\n })\n },\n )\n\n return {\n ...source,\n isFetching: true,\n latestFetchId: fetchId,\n }\n}\n\nfunction receiveResponse(source: ResourceSource<any>, fetchId: string, fetchRange: DateRange) {\n if (fetchId === source.latestFetchId) {\n return {\n ...source,\n isFetching: false,\n fetchRange,\n }\n }\n\n return source\n}\n","import {\n ConstraintInput, AllowFunc, EventStore, parseBusinessHours, CalendarContext, EventUi, BusinessHoursInput,\n guid, identity, Identity, RawOptionsFromRefiners, parseClassNames, refineProps, createEventUi, Dictionary,\n} from '@fullcalendar/common'\n\nconst PRIVATE_ID_PREFIX = '_fc:'\n\nconst RESOURCE_REFINERS = {\n id: String,\n parentId: String,\n children: identity as Identity<ResourceInput[]>,\n title: String,\n businessHours: identity as Identity<BusinessHoursInput>,\n extendedProps: identity as Identity<Dictionary>,\n\n // event-ui\n eventEditable: Boolean,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventConstraint: identity as Identity<ConstraintInput>,\n eventOverlap: Boolean, // can NOT be a func, different from OptionsInput\n eventAllow: identity as Identity<AllowFunc>,\n eventClassNames: parseClassNames,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n}\n\ntype BuiltInResourceRefiners = typeof RESOURCE_REFINERS\n\nexport interface ResourceRefiners extends BuiltInResourceRefiners {\n // for preventing circular definition. also, good for making ambient in the future\n}\n\nexport type ResourceInput =\n RawOptionsFromRefiners<Required<ResourceRefiners>> & // Required hack\n { [extendedProps: string]: any }\n\nexport interface Resource {\n id: string\n parentId: string\n title: string\n businessHours: EventStore | null // if null, will fall thru to non-resource business hours\n ui: EventUi\n extendedProps: { [extendedProp: string]: any }\n}\n\nexport type ResourceHash = { [resourceId: string]: Resource }\n\n/*\nneeds a full store so that it can populate children too\n*/\nexport function parseResource(raw: ResourceInput, parentId: string = '', store: ResourceHash, context: CalendarContext): Resource {\n let { refined, extra } = refineProps(raw, RESOURCE_REFINERS)\n\n let resource: Resource = {\n id: refined.id || (PRIVATE_ID_PREFIX + guid()),\n parentId: refined.parentId || parentId,\n title: refined.title || '',\n businessHours: refined.businessHours ? parseBusinessHours(refined.businessHours, context) : null,\n ui: createEventUi({\n editable: refined.eventEditable,\n startEditable: refined.eventStartEditable,\n durationEditable: refined.eventDurationEditable,\n constraint: refined.eventConstraint,\n overlap: refined.eventOverlap,\n allow: refined.eventAllow,\n classNames: refined.eventClassNames,\n backgroundColor: refined.eventBackgroundColor,\n borderColor: refined.eventBorderColor,\n textColor: refined.eventTextColor,\n color: refined.eventColor,\n }, context),\n extendedProps: {\n ...extra,\n ...refined.extendedProps,\n },\n }\n\n // help out ResourceApi from having user modify props\n Object.freeze(resource.ui.classNames)\n Object.freeze(resource.extendedProps)\n\n if (store[resource.id]) {\n // console.warn('duplicate resource ID')\n\n } else {\n store[resource.id] = resource\n\n if (refined.children) {\n for (let childInput of refined.children) {\n parseResource(childInput, resource.id, store, context)\n }\n }\n }\n\n return resource\n}\n\n/*\nTODO: use this in more places\n*/\nexport function getPublicId(id: string): string {\n if (id.indexOf(PRIVATE_ID_PREFIX) === 0) {\n return ''\n }\n\n return id\n}\n","import { CalendarContext } from '@fullcalendar/common'\nimport { ResourceAction } from './resource-action'\nimport { ResourceHash, ResourceInput, parseResource } from '../structs/resource'\nimport { ResourceSource } from '../structs/resource-source'\n\nexport function reduceResourceStore(\n store: ResourceHash | null,\n action: ResourceAction | null,\n source: ResourceSource<any>,\n context: CalendarContext,\n): ResourceHash {\n if (!store || !action) {\n return {}\n }\n\n switch (action.type) {\n case 'RECEIVE_RESOURCES':\n return receiveRawResources(store, action.rawResources, action.fetchId, source, context)\n\n case 'ADD_RESOURCE':\n return addResource(store, action.resourceHash)\n\n case 'REMOVE_RESOURCE':\n return removeResource(store, action.resourceId)\n\n case 'SET_RESOURCE_PROP':\n return setResourceProp(store, action.resourceId, action.propName, action.propValue)\n\n case 'SET_RESOURCE_EXTENDED_PROP':\n return setResourceExtendedProp(store, action.resourceId, action.propName, action.propValue)\n\n default:\n return store\n }\n}\n\nfunction receiveRawResources(\n existingStore: ResourceHash,\n inputs: ResourceInput[],\n fetchId: string,\n source: ResourceSource<any>,\n context: CalendarContext,\n): ResourceHash {\n if (source.latestFetchId === fetchId) {\n let nextStore: ResourceHash = {}\n\n for (let input of inputs) {\n parseResource(input, '', nextStore, context)\n }\n\n return nextStore\n }\n\n return existingStore\n}\n\nfunction addResource(existingStore: ResourceHash, additions: ResourceHash) {\n // TODO: warn about duplicate IDs\n\n return { ...existingStore, ...additions }\n}\n\nfunction removeResource(existingStore: ResourceHash, resourceId: string) {\n let newStore = { ...existingStore } as ResourceHash\n\n delete newStore[resourceId]\n\n // promote children\n for (let childResourceId in newStore) { // a child, *maybe* but probably not\n if (newStore[childResourceId].parentId === resourceId) {\n newStore[childResourceId] = {\n ...newStore[childResourceId],\n parentId: '',\n }\n }\n }\n\n return newStore\n}\n\nfunction setResourceProp(existingStore: ResourceHash, resourceId: string, name: string, value: any): ResourceHash {\n let existingResource = existingStore[resourceId]\n\n // TODO: sanitization\n\n if (existingResource) {\n return {\n ...existingStore,\n [resourceId]: {\n ...existingResource,\n [name]: value,\n },\n }\n }\n\n return existingStore\n}\n\nfunction setResourceExtendedProp(existingStore: ResourceHash, resourceId: string, name: string, value: any): ResourceHash {\n let existingResource = existingStore[resourceId]\n\n if (existingResource) {\n return {\n ...existingStore,\n [resourceId]: {\n ...existingResource,\n extendedProps: {\n ...existingResource.extendedProps,\n [name]: value,\n },\n },\n }\n }\n\n return existingStore\n}\n","import { CalendarContext, EventApi, Dictionary } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { Resource, getPublicId, ResourceHash } from '../structs/resource'\n\nexport class ResourceApi {\n constructor(\n private _context: CalendarContext,\n public _resource: Resource,\n ) {\n }\n\n setProp(name: string, value: any) {\n let oldResource = this._resource\n\n this._context.dispatch({\n type: 'SET_RESOURCE_PROP',\n resourceId: oldResource.id,\n propName: name,\n propValue: value,\n })\n\n this.sync(oldResource)\n }\n\n setExtendedProp(name: string, value: any) {\n let oldResource = this._resource\n\n this._context.dispatch({\n type: 'SET_RESOURCE_EXTENDED_PROP',\n resourceId: oldResource.id,\n propName: name,\n propValue: value,\n })\n\n this.sync(oldResource)\n }\n\n private sync(oldResource: Resource) {\n let context = this._context\n let resourceId = oldResource.id\n\n // TODO: what if dispatch didn't complete synchronously?\n this._resource = context.getCurrentData().resourceStore[resourceId]\n\n context.emitter.trigger('resourceChange', {\n oldResource: new ResourceApi(context, oldResource),\n resource: this,\n revert() {\n context.dispatch({\n type: 'ADD_RESOURCE', // function as a merge. TODO: rename\n resourceHash: {\n [resourceId]: oldResource,\n },\n })\n },\n })\n }\n\n remove() {\n let context = this._context\n let internalResource = this._resource\n let resourceId = internalResource.id\n\n context.dispatch({\n type: 'REMOVE_RESOURCE',\n resourceId,\n })\n\n context.emitter.trigger('resourceRemove', {\n resource: this,\n revert() {\n context.dispatch({\n type: 'ADD_RESOURCE', // function as a merge. TODO: rename\n resourceHash: {\n [resourceId]: internalResource,\n },\n })\n },\n })\n }\n\n getParent(): ResourceApi | null {\n let context = this._context\n let parentId = this._resource.parentId\n\n if (parentId) {\n return new ResourceApi(\n context,\n context.getCurrentData().resourceSource[parentId],\n )\n }\n\n return null\n }\n\n getChildren(): ResourceApi[] {\n let thisResourceId = this._resource.id\n let context = this._context\n let { resourceStore } = context.getCurrentData()\n let childApis: ResourceApi[] = []\n\n for (let resourceId in resourceStore) {\n if (resourceStore[resourceId].parentId === thisResourceId) {\n childApis.push(\n new ResourceApi(context, resourceStore[resourceId]),\n )\n }\n }\n\n return childApis\n }\n\n /*\n this is really inefficient!\n TODO: make EventApi::resourceIds a hash or keep an index in the Calendar's state\n */\n getEvents(): EventApi[] {\n let thisResourceId = this._resource.id\n let context = this._context\n let { defs, instances } = context.getCurrentData().eventStore\n let eventApis: EventApi[] = []\n\n for (let instanceId in instances) {\n let instance = instances[instanceId]\n let def = defs[instance.defId]\n\n if (def.resourceIds.indexOf(thisResourceId) !== -1) { // inefficient!!!\n eventApis.push(new EventApi(context, def, instance))\n }\n }\n\n return eventApis\n }\n\n get id() { return getPublicId(this._resource.id) }\n get title() { return this._resource.title }\n get eventConstraint() { return this._resource.ui.constraints[0] || null }\n get eventOverlap() { return this._resource.ui.overlap }\n get eventAllow() { return this._resource.ui.allows[0] || null }\n get eventBackgroundColor() { return this._resource.ui.backgroundColor }\n get eventBorderColor() { return this._resource.ui.borderColor }\n get eventTextColor() { return this._resource.ui.textColor }\n\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get eventClassNames() { return this._resource.ui.classNames }\n get extendedProps() { return this._resource.extendedProps }\n\n toPlainObject(settings: { collapseExtendedProps?: boolean, collapseEventColor?: boolean } = {}) {\n let internal = this._resource\n let { ui } = internal\n let publicId = this.id\n let res: Dictionary = {}\n\n if (publicId) {\n res.id = publicId\n }\n\n if (internal.title) {\n res.title = internal.title\n }\n\n if (settings.collapseEventColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.eventColor = ui.backgroundColor\n } else {\n if (ui.backgroundColor) {\n res.eventBackgroundColor = ui.backgroundColor\n }\n if (ui.borderColor) {\n res.eventBorderColor = ui.borderColor\n }\n }\n\n if (ui.textColor) {\n res.eventTextColor = ui.textColor\n }\n\n if (ui.classNames.length) {\n res.eventClassNames = ui.classNames\n }\n\n if (Object.keys(internal.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, internal.extendedProps)\n } else {\n res.extendedProps = internal.extendedProps\n }\n }\n\n return res\n }\n\n toJSON() {\n return this.toPlainObject()\n }\n}\n\nexport function buildResourceApis(resourceStore: ResourceHash, context: CalendarContext) {\n let resourceApis: ResourceApi[] = []\n\n for (let resourceId in resourceStore) {\n resourceApis.push(new ResourceApi(context, resourceStore[resourceId]))\n }\n\n return resourceApis\n}\n","import { DateSpan, CalendarApi, CalendarContext } from '@fullcalendar/common'\nimport { ResourceApi } from './ResourceApi'\nimport { ResourceInput, parseResource, ResourceHash, Resource } from '../structs/resource'\n\nCalendarApi.prototype.addResource = function ( // eslint-disable-line func-names\n this: CalendarApi,\n input: ResourceInput | ResourceApi,\n scrollTo = true,\n) {\n let currentState = this.getCurrentData()\n let resourceHash: ResourceHash\n let resource: Resource\n\n if (input instanceof ResourceApi) {\n resource = input._resource\n resourceHash = { [resource.id]: resource }\n } else {\n resourceHash = {}\n resource = parseResource(input, '', resourceHash, currentState)\n }\n\n this.dispatch({\n type: 'ADD_RESOURCE',\n resourceHash,\n })\n\n if (scrollTo) {\n // TODO: wait til dispatch completes somehow\n this.trigger('_scrollRequest', { resourceId: resource.id })\n }\n\n let resourceApi = new ResourceApi(currentState, resource)\n\n currentState.emitter.trigger('resourceAdd', {\n resource: resourceApi,\n revert: () => {\n this.dispatch({\n type: 'REMOVE_RESOURCE',\n resourceId: resource.id,\n })\n },\n })\n\n return resourceApi\n}\n\nCalendarApi.prototype.getResourceById = function (this: CalendarApi, id: string) { // eslint-disable-line func-names\n id = String(id)\n let currentState = this.getCurrentData() // eslint-disable-line react/no-this-in-sfc\n\n if (currentState.resourceStore) { // guard against calendar with no resource functionality\n let rawResource = currentState.resourceStore[id]\n\n if (rawResource) {\n return new ResourceApi(currentState, rawResource)\n }\n }\n\n return null\n}\n\nCalendarApi.prototype.getResources = function (this: CalendarApi): ResourceApi[] { // eslint-disable-line func-names\n let currentState = this.getCurrentData()\n let { resourceStore } = currentState\n let resourceApis: ResourceApi[] = []\n\n if (resourceStore) { // guard against calendar with no resource functionality\n for (let resourceId in resourceStore) {\n resourceApis.push(\n new ResourceApi(currentState, resourceStore[resourceId]),\n )\n }\n }\n\n return resourceApis\n}\n\nCalendarApi.prototype.getTopLevelResources = function (this: CalendarApi): ResourceApi[] { // eslint-disable-line func-names\n let currentState = this.getCurrentData()\n let { resourceStore } = currentState\n let resourceApis: ResourceApi[] = []\n\n if (resourceStore) { // guard against calendar with no resource functionality\n for (let resourceId in resourceStore) {\n if (!resourceStore[resourceId].parentId) {\n resourceApis.push(\n new ResourceApi(currentState, resourceStore[resourceId]),\n )\n }\n }\n }\n\n return resourceApis\n}\n\nCalendarApi.prototype.refetchResources = function (this: CalendarApi) { // eslint-disable-line func-names\n this.dispatch({\n type: 'REFETCH_RESOURCES',\n })\n}\n\nexport function transformDatePoint(dateSpan: DateSpan, context: CalendarContext) {\n return dateSpan.resourceId ?\n { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n {}\n}\n\nexport function transformDateSpan(dateSpan: DateSpan, context: CalendarContext) {\n return dateSpan.resourceId ?\n { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n {}\n}\n","import { Splitter, SplittableProps, DateSpan, EventDef } from '@fullcalendar/common'\nimport { ResourceHash } from '../structs/resource'\n\nexport interface SplittableResourceProps extends SplittableProps {\n resourceStore: ResourceHash\n}\n\n/*\nsplits things BASED OFF OF which resources they are associated with.\ncreates a '' entry which is when something has NO resource.\n*/\nexport class ResourceSplitter extends Splitter<SplittableResourceProps> {\n getKeyInfo(props: SplittableResourceProps) {\n return {\n '': {}, // needed for non-resource\n ...props.resourceStore, // already has `ui` and `businessHours` keys!\n }\n }\n\n getKeysForDateSpan(dateSpan: DateSpan): string[] {\n return [dateSpan.resourceId || '']\n }\n\n getKeysForEventDef(eventDef: EventDef): string[] {\n let resourceIds = eventDef.resourceIds\n\n if (!resourceIds.length) {\n return ['']\n }\n\n return resourceIds\n }\n}\n","import { EventApi } from '@fullcalendar/common'\nimport { ResourceApi } from './ResourceApi'\n\nEventApi.prototype.getResources = function (this: EventApi): ResourceApi[] { // eslint-disable-line func-names\n let { calendarApi } = this._context\n\n return this._def.resourceIds.map((resourceId) => calendarApi.getResourceById(resourceId))\n}\n\nEventApi.prototype.setResources = function ( // eslint-disable-line func-names\n this: EventApi,\n resources: (string | ResourceApi)[],\n) {\n let resourceIds = []\n\n // massage resources -> resourceIds\n for (let resource of resources) {\n let resourceId = null\n\n if (typeof resource === 'string') {\n resourceId = resource\n } else if (typeof resource === 'number') {\n resourceId = String(resource)\n } else if (resource instanceof ResourceApi) {\n resourceId = resource.id // guaranteed to always have an ID. hmmm\n } else {\n console.warn('unknown resource type: ' + resource)\n }\n\n if (resourceId) {\n resourceIds.push(resourceId)\n }\n }\n\n this.mutate({\n standardProps: {\n resourceIds,\n },\n })\n}\n","import { CalendarData, parseFieldSpecs } from '@fullcalendar/common'\nimport { buildResourceApis, ResourceApi } from './api/ResourceApi'\nimport { ResourceHash } from './structs/resource'\n\nexport const DEFAULT_RESOURCE_ORDER = parseFieldSpecs('id,title')\n\nexport interface ResourceAddArg {\n resource: ResourceApi\n revert: () => void\n}\n\nexport interface ResourceChangeArg {\n oldResource: ResourceApi\n resource: ResourceApi\n revert: () => void\n}\n\nexport interface ResourceRemoveArg {\n resource: ResourceApi\n revert: () => void\n}\n\nexport function handleResourceStore(resourceStore: ResourceHash, calendarData: CalendarData) {\n let { emitter } = calendarData\n\n if (emitter.hasHandlers('resourcesSet')) {\n emitter.trigger('resourcesSet', buildResourceApis(resourceStore, calendarData))\n }\n}\n","import {\n createElement, Ref, ComponentChildren, ViewContextType, ViewContext, RenderHook,\n ViewApi, formatDayString, Dictionary, MountArg,\n} from '@fullcalendar/common'\nimport { Resource } from '../structs/resource'\nimport { ResourceApi } from '../api/ResourceApi'\n\nexport interface ResourceLabelRootProps {\n resource: Resource\n date?: Date\n children: (\n rootElRef: Ref<HTMLElement>,\n classNames: string[],\n dataAttrs: Dictionary,\n innerElRef: Ref<HTMLElement>,\n innerContent: ComponentChildren\n ) => ComponentChildren\n}\n\nexport interface ResourceLabelContentArg {\n resource: ResourceApi\n date?: Date\n view: ViewApi\n}\n\nexport type ResourceLabelMountArg = MountArg<ResourceLabelContentArg>\n\n// TODO: not used for Spreadsheet. START USING. difficult because of col-specific rendering props\n\nexport function ResourceLabelRoot(props: ResourceLabelRootProps) {\n return (\n <ViewContextType.Consumer>\n {(context: ViewContext) => {\n let { options } = context\n let hookProps: ResourceLabelContentArg = {\n resource: new ResourceApi(context, props.resource),\n date: props.date ? context.dateEnv.toDate(props.date) : null,\n view: context.viewApi,\n }\n\n let dataAttrs = {\n 'data-resource-id': props.resource.id, // TODO: only do public-facing one?\n 'data-date': props.date ? formatDayString(props.date) : undefined,\n }\n\n return (\n <RenderHook<ResourceLabelContentArg>\n hookProps={hookProps}\n classNames={options.resourceLabelClassNames}\n content={options.resourceLabelContent}\n defaultContent={renderInnerContent}\n didMount={options.resourceLabelDidMount}\n willUnmount={options.resourceLabelWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => props.children(\n rootElRef,\n classNames, // TODO: pass in 'fc-resource' ?\n dataAttrs,\n innerElRef,\n innerContent,\n )}\n </RenderHook>\n )\n }}\n </ViewContextType.Consumer>\n )\n}\n\nfunction renderInnerContent(props: ResourceLabelContentArg) {\n return props.resource.title || props.resource.id\n}\n","import { registerResourceSourceDef } from '../structs/resource-source-def'\nimport { ResourceInput } from '../structs/resource'\nimport { ResourceSourceRefined } from '../structs/resource-source-parse'\n\nregisterResourceSourceDef<ResourceInput[]>({\n\n ignoreRange: true,\n\n parseMeta(refined: ResourceSourceRefined) {\n if (Array.isArray(refined.resources)) {\n return refined.resources\n }\n return null\n },\n\n fetch(arg, successCallback) {\n successCallback({\n rawResources: arg.resourceSource.meta,\n })\n },\n\n})\n","import { unpromisify } from '@fullcalendar/common'\nimport { ResourceSourceError } from '../structs/resource-source'\nimport { registerResourceSourceDef } from '../structs/resource-source-def'\nimport { ResourceInput } from '../structs/resource'\nimport { ResourceSourceRefined } from '../structs/resource-source-parse'\n\nexport interface ResourceFuncArg {\n start?: Date\n end?: Date\n startStr?: string\n endStr?: string\n timeZone?: string\n}\n\nexport type ResourceFunc = (\n arg: ResourceFuncArg,\n successCallback: (events: ResourceInput[]) => void,\n failureCallback: (errorObj: ResourceSourceError) => void\n) => any // TODO: promise-like object or nothing\n\nregisterResourceSourceDef<ResourceFunc>({\n\n parseMeta(refined: ResourceSourceRefined) {\n if (typeof refined.resources === 'function') {\n return refined.resources\n }\n return null\n },\n\n fetch(arg, success, failure) {\n let dateEnv = arg.context.dateEnv\n let func = arg.resourceSource.meta\n\n let publicArg: ResourceFuncArg = arg.range ? {\n start: dateEnv.toDate(arg.range.start),\n end: dateEnv.toDate(arg.range.end),\n startStr: dateEnv.formatIso(arg.range.start),\n endStr: dateEnv.formatIso(arg.range.end),\n timeZone: dateEnv.timeZone,\n } : {}\n\n // TODO: make more dry with EventSourceFunc\n // TODO: accept a response?\n unpromisify(\n func.bind(null, publicArg),\n (rawResources) => { // success\n success({ rawResources }) // needs an object response\n },\n failure, // send errorObj directly to failure callback\n )\n },\n\n})\n","import { DateRange, CalendarContext, requestJson, Dictionary } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { registerResourceSourceDef } from '../structs/resource-source-def'\nimport { ResourceSourceRefined } from '../structs/resource-source-parse'\n\ninterface JsonFeedMeta {\n url: string\n method: string\n startParam?: string\n endParam?: string\n timeZoneParam?: string\n extraParams?: Dictionary | (() => Dictionary)\n}\n\nregisterResourceSourceDef<JsonFeedMeta>({\n\n parseMeta(refined: ResourceSourceRefined) {\n if (refined.url) {\n return {\n url: refined.url,\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n }\n }\n return null\n },\n\n fetch(arg, successCallback, failureCallback) {\n let meta = arg.resourceSource.meta\n let requestParams = buildRequestParams(meta, arg.range, arg.context)\n\n requestJson(meta.method, meta.url, requestParams, (rawResources, xhr) => {\n successCallback({ rawResources, xhr })\n }, (message, xhr) => {\n failureCallback({ message, xhr })\n })\n },\n\n})\n\n// TODO: somehow consolidate with event json feed\nfunction buildRequestParams(meta: JsonFeedMeta, range: DateRange | null, context: CalendarContext) {\n let { dateEnv, options } = context\n let startParam\n let endParam\n let timeZoneParam\n let customRequestParams\n let params = {}\n\n if (range) {\n startParam = meta.startParam\n if (startParam == null) {\n startParam = options.startParam\n }\n\n endParam = meta.endParam\n if (endParam == null) {\n endParam = options.endParam\n }\n\n timeZoneParam = meta.timeZoneParam\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam\n }\n\n params[startParam] = dateEnv.formatIso(range.start)\n params[endParam] = dateEnv.formatIso(range.end)\n\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone\n }\n }\n\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams()\n } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {}\n }\n\n __assign(params, customRequestParams)\n\n return params\n}\n","import { createElement, BaseComponent, DateMarker, Ref, ComponentChildren } from '@fullcalendar/common'\nimport { Resource } from '../structs/resource'\nimport { ResourceLabelRoot } from './ResourceLabelRoot'\n\nexport interface ResourceCellProps {\n resource: Resource\n colSpan: number\n date?: DateMarker\n isSticky?: boolean\n}\n\nexport class ResourceCell extends BaseComponent<ResourceCellProps> {\n render() {\n let { props } = this\n\n return (\n <ResourceLabelRoot resource={props.resource} date={props.date}>\n {(elRef: Ref<HTMLTableCellElement>, customClassNames: string[], dataAttrs, innerElRef, innerContent: ComponentChildren) => (\n <th\n ref={elRef}\n role=\"columnheader\"\n className={['fc-col-header-cell', 'fc-resource'].concat(customClassNames).join(' ')}\n colSpan={props.colSpan}\n {...dataAttrs}\n >\n <div className=\"fc-scrollgrid-sync-inner\">\n <span\n className={[\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ')}\n ref={innerElRef}\n >\n {innerContent}\n </span>\n </div>\n </th>\n )}\n </ResourceLabelRoot>\n )\n }\n}\n","import {\n VNode, createElement, TableDowCell, memoize, BaseComponent,\n DateMarker, DateFormatter, computeFallbackHeaderFormat, TableDateCell, Fragment,\n DateRange, NowTimer, DateProfile,\n} from '@fullcalendar/common'\nimport { Resource } from '../structs/resource'\nimport { ResourceApi } from '../api/ResourceApi'\nimport { ResourceCell } from './ResourceCell'\n\nexport interface ResourceDayHeaderProps {\n dates: DateMarker[]\n dateProfile: DateProfile\n datesRepDistinctDays: boolean\n resources: Resource[] // flattened\n renderIntro?: (rowKey: string) => VNode\n}\n\nexport class ResourceDayHeader extends BaseComponent<ResourceDayHeaderProps> { // TODO: rename to ResourceDayHeaderTrs?\n private buildDateFormat = memoize(buildDateFormat)\n\n render() {\n let { props, context } = this\n let dateFormat = this.buildDateFormat(\n context.options.dayHeaderFormat,\n props.datesRepDistinctDays,\n props.dates.length,\n )\n\n return (\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => {\n if (props.dates.length === 1) {\n return this.renderResourceRow(props.resources, props.dates[0])\n }\n if (context.options.datesAboveResources) {\n return this.renderDayAndResourceRows(props.dates, dateFormat, todayRange, props.resources)\n }\n return this.renderResourceAndDayRows(props.resources, props.dates, dateFormat, todayRange)\n }}\n </NowTimer>\n )\n }\n\n renderResourceRow(resources: Resource[], date: DateMarker) {\n let resourceCells = resources.map((resource) => (\n <ResourceCell\n key={resource.id}\n resource={resource}\n colSpan={1}\n date={date}\n />\n ))\n return this.buildTr(resourceCells, 'resources')\n }\n\n renderDayAndResourceRows(dates: DateMarker[], dateFormat: DateFormatter, todayRange: DateRange, resources: Resource[]) {\n let dateCells: VNode[] = []\n let resourceCells: VNode[] = []\n\n for (let date of dates) {\n dateCells.push(\n this.renderDateCell(date, dateFormat, todayRange, resources.length, null, true),\n )\n\n for (let resource of resources) {\n resourceCells.push(\n <ResourceCell\n key={resource.id + ':' + date.toISOString()}\n resource={resource}\n colSpan={1}\n date={date}\n />,\n )\n }\n }\n\n return (\n <Fragment>\n {this.buildTr(dateCells, 'day')}\n {this.buildTr(resourceCells, 'resources')}\n </Fragment>\n )\n }\n\n renderResourceAndDayRows(resources: Resource[], dates: DateMarker[], dateFormat: DateFormatter, todayRange: DateRange) {\n let resourceCells: VNode[] = []\n let dateCells: VNode[] = []\n\n for (let resource of resources) {\n resourceCells.push(\n <ResourceCell\n key={resource.id}\n resource={resource}\n colSpan={dates.length}\n isSticky\n />,\n )\n\n for (let date of dates) {\n dateCells.push(\n this.renderDateCell(date, dateFormat, todayRange, 1, resource),\n )\n }\n }\n\n return (\n <Fragment>\n {this.buildTr(resourceCells, 'resources')}\n {this.buildTr(dateCells, 'day')}\n </Fragment>\n )\n }\n\n // a cell with date text. might have a resource associated with it\n renderDateCell(\n date: DateMarker,\n dateFormat: DateFormatter,\n todayRange: DateRange,\n colSpan: number,\n resource?: Resource,\n isSticky?: boolean,\n ) {\n let { props } = this\n let keyPostfix = resource ? `:${resource.id}` : ''\n let extraHookProps = resource ? { resource: new ResourceApi(this.context, resource) } : {}\n let extraDataAttrs = resource ? { 'data-resource-id': resource.id } : {}\n\n return props.datesRepDistinctDays ? (\n <TableDateCell\n key={date.toISOString() + keyPostfix}\n date={date}\n dateProfile={props.dateProfile}\n todayRange={todayRange}\n colCnt={props.dates.length * props.resources.length}\n dayHeaderFormat={dateFormat}\n colSpan={colSpan}\n isSticky={isSticky}\n extraHookProps={extraHookProps}\n extraDataAttrs={extraDataAttrs}\n />\n ) : (\n <TableDowCell // we can't leverage the pure-componentness becausae the extra* props are new every time :(\n key={date.getUTCDay() + keyPostfix}\n dow={date.getUTCDay()}\n dayHeaderFormat={dateFormat}\n colSpan={colSpan}\n isSticky={isSticky}\n extraHookProps={extraHookProps}\n extraDataAttrs={extraDataAttrs}\n />\n )\n }\n\n buildTr(cells: VNode[], key: string) {\n let { renderIntro } = this.props\n\n if (!cells.length) {\n cells = [<td key={0}> </td>]\n }\n\n return (\n <tr key={key} role=\"row\">\n {renderIntro && renderIntro(key)}\n {cells}\n </tr>\n )\n }\n}\n\nfunction buildDateFormat(dayHeaderFormat: DateFormatter, datesRepDistinctDays, dayCnt) {\n return dayHeaderFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt)\n}\n","import { Resource } from '../structs/resource'\n\nexport class ResourceIndex {\n indicesById: { [resourceId: string]: number }\n ids: string[]\n length: number\n\n constructor(resources: Resource[]) {\n let indicesById = {}\n let ids = []\n\n for (let i = 0; i < resources.length; i += 1) {\n let id = resources[i].id\n\n ids.push(id)\n indicesById[id] = i\n }\n\n this.ids = ids\n this.indicesById = indicesById\n this.length = resources.length\n }\n}\n","import { CalendarContext, DayTableModel, DayTableCell } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { Resource } from '../structs/resource'\nimport { ResourceApi } from '../api/ResourceApi'\nimport { ResourceIndex } from './ResourceIndex'\n\nexport abstract class AbstractResourceDayTableModel {\n cells: DayTableCell[][]\n rowCnt: number\n colCnt: number\n resourceIndex: ResourceIndex\n\n constructor(\n public dayTableModel: DayTableModel,\n public resources: Resource[],\n private context: CalendarContext,\n ) {\n this.resourceIndex = new ResourceIndex(resources)\n this.rowCnt = dayTableModel.rowCnt\n this.colCnt = dayTableModel.colCnt * resources.length\n this.cells = this.buildCells()\n }\n\n abstract computeCol(dateI, resourceI): number\n abstract computeColRanges(dateStartI, dateEndI, resourceI): {\n firstCol: number,\n lastCol: number,\n isStart: boolean,\n isEnd: boolean\n }[]\n\n buildCells(): DayTableCell[][] {\n let { rowCnt, dayTableModel, resources } = this\n let rows: DayTableCell[][] = []\n\n for (let row = 0; row < rowCnt; row += 1) {\n let rowCells: DayTableCell[] = []\n\n for (let dateCol = 0; dateCol < dayTableModel.colCnt; dateCol += 1) {\n for (let resourceCol = 0; resourceCol < resources.length; resourceCol += 1) {\n let resource = resources[resourceCol]\n let extraHookProps = { resource: new ResourceApi(this.context, resource) }\n let extraDataAttrs = { 'data-resource-id': resource.id }\n let extraClassNames = ['fc-resource']\n let extraDateSpan = { resourceId: resource.id }\n let date = dayTableModel.cells[row][dateCol].date\n\n rowCells[\n this.computeCol(dateCol, resourceCol)\n ] = {\n key: resource.id + ':' + date.toISOString(),\n date,\n extraHookProps,\n extraDataAttrs,\n extraClassNames,\n extraDateSpan,\n }\n }\n }\n\n rows.push(rowCells)\n }\n\n return rows\n }\n}\n","import { __assign } from 'tslib'\nimport { AbstractResourceDayTableModel } from './AbstractResourceDayTableModel'\n\n/*\nresources over dates\n*/\nexport class ResourceDayTableModel extends AbstractResourceDayTableModel {\n computeCol(dateI, resourceI) {\n return resourceI * this.dayTableModel.colCnt + dateI\n }\n\n /*\n all date ranges are intact\n */\n computeColRanges(dateStartI, dateEndI, resourceI) {\n return [\n {\n firstCol: this.computeCol(dateStartI, resourceI),\n lastCol: this.computeCol(dateEndI, resourceI),\n isStart: true,\n isEnd: true,\n },\n ]\n }\n}\n","import { __assign } from 'tslib'\nimport { AbstractResourceDayTableModel } from './AbstractResourceDayTableModel'\n\n/*\ndates over resources\n*/\nexport class DayResourceTableModel extends AbstractResourceDayTableModel {\n computeCol(dateI, resourceI) {\n return dateI * this.resources.length + resourceI\n }\n\n /*\n every single day is broken up\n */\n computeColRanges(dateStartI, dateEndI, resourceI) {\n let segs = []\n\n for (let i = dateStartI; i <= dateEndI; i += 1) {\n let col = this.computeCol(i, resourceI)\n\n segs.push({\n firstCol: col,\n lastCol: col,\n isStart: i === dateStartI,\n isEnd: i === dateEndI,\n })\n }\n\n return segs\n }\n}\n","import { SlicedProps, Seg, memoize, EventSegUiInteractionState } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { AbstractResourceDayTableModel } from './AbstractResourceDayTableModel'\n\nconst NO_SEGS = [] // for memoizing\n\nexport abstract class VResourceJoiner<SegType extends Seg> {\n private joinDateSelection = memoize(this.joinSegs)\n private joinBusinessHours = memoize(this.joinSegs)\n private joinFgEvents = memoize(this.joinSegs)\n private joinBgEvents = memoize(this.joinSegs)\n private joinEventDrags = memoize(this.joinInteractions)\n private joinEventResizes = memoize(this.joinInteractions)\n\n /*\n propSets also has a '' key for things with no resource\n */\n joinProps(\n propSets: { [resourceId: string]: SlicedProps<SegType> },\n resourceDayTable: AbstractResourceDayTableModel,\n ): SlicedProps<SegType> {\n let dateSelectionSets = []\n let businessHoursSets = []\n let fgEventSets = []\n let bgEventSets = []\n let eventDrags = []\n let eventResizes = []\n let eventSelection = ''\n let keys = resourceDayTable.resourceIndex.ids.concat(['']) // add in the all-resource key\n\n for (let key of keys) {\n let props = propSets[key]\n\n dateSelectionSets.push(props.dateSelectionSegs)\n businessHoursSets.push(key ? props.businessHourSegs : NO_SEGS) // don't include redundant all-resource businesshours\n fgEventSets.push(key ? props.fgEventSegs : NO_SEGS) // don't include fg all-resource segs\n bgEventSets.push(props.bgEventSegs)\n eventDrags.push(props.eventDrag)\n eventResizes.push(props.eventResize)\n eventSelection = eventSelection || props.eventSelection\n }\n\n return {\n dateSelectionSegs: this.joinDateSelection(resourceDayTable, ...dateSelectionSets),\n businessHourSegs: this.joinBusinessHours(resourceDayTable, ...businessHoursSets),\n fgEventSegs: this.joinFgEvents(resourceDayTable, ...fgEventSets),\n bgEventSegs: this.joinBgEvents(resourceDayTable, ...bgEventSets),\n eventDrag: this.joinEventDrags(resourceDayTable, ...eventDrags),\n eventResize: this.joinEventResizes(resourceDayTable, ...eventResizes),\n eventSelection,\n }\n }\n\n joinSegs(resourceDayTable: AbstractResourceDayTableModel, ...segGroups: SegType[][]): SegType[] {\n let resourceCnt = resourceDayTable.resources.length\n let transformedSegs = []\n\n for (let i = 0; i < resourceCnt; i += 1) {\n for (let seg of segGroups[i]) {\n transformedSegs.push(\n ...this.transformSeg(seg, resourceDayTable, i),\n )\n }\n\n for (let seg of segGroups[resourceCnt]) { // one beyond. the all-resource\n transformedSegs.push(\n ...this.transformSeg(seg, resourceDayTable, i),\n )\n }\n }\n\n return transformedSegs\n }\n\n /*\n for expanding non-resource segs to all resources.\n only for public use.\n no memoizing.\n */\n expandSegs(resourceDayTable: AbstractResourceDayTableModel, segs: SegType[]) {\n let resourceCnt = resourceDayTable.resources.length\n let transformedSegs = []\n\n for (let i = 0; i < resourceCnt; i += 1) {\n for (let seg of segs) {\n transformedSegs.push(\n ...this.transformSeg(seg, resourceDayTable, i),\n )\n }\n }\n\n return transformedSegs\n }\n\n joinInteractions(\n resourceDayTable: AbstractResourceDayTableModel,\n ...interactions: EventSegUiInteractionState[]\n ): EventSegUiInteractionState | null {\n let resourceCnt = resourceDayTable.resources.length\n let affectedInstances = {}\n let transformedSegs = []\n let anyInteractions = false\n let isEvent = false\n\n for (let i = 0; i < resourceCnt; i += 1) {\n let interaction = interactions[i]\n\n if (interaction) {\n anyInteractions = true\n\n for (let seg of interaction.segs) {\n transformedSegs.push(\n ...this.transformSeg(seg as SegType, resourceDayTable, i), // TODO: templateify Interaction::segs\n )\n }\n\n __assign(affectedInstances, interaction.affectedInstances)\n isEvent = isEvent || interaction.isEvent\n }\n\n if (interactions[resourceCnt]) { // one beyond. the all-resource\n for (let seg of interactions[resourceCnt].segs) {\n transformedSegs.push(\n ...this.transformSeg(seg as SegType, resourceDayTable, i), // TODO: templateify Interaction::segs\n )\n }\n }\n }\n\n if (anyInteractions) {\n return {\n affectedInstances,\n segs: transformedSegs,\n isEvent,\n }\n }\n\n return null\n }\n\n // needs to generate NEW seg obj!!! because of .el\n abstract transformSeg(seg: SegType, resourceDayTable: AbstractResourceDayTableModel, resourceI: number): SegType[]\n}\n","import { EventDef, mapHash, Splitter, SplittableProps, DateSpan } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { AbstractResourceDayTableModel } from './AbstractResourceDayTableModel'\n\n// splitter\n\nexport interface VResourceProps extends SplittableProps {\n resourceDayTableModel: AbstractResourceDayTableModel\n}\n\n/*\nTODO: just use ResourceHash somehow? could then use the generic ResourceSplitter\n*/\nexport class VResourceSplitter extends Splitter<VResourceProps> {\n getKeyInfo(props: VResourceProps) {\n let { resourceDayTableModel } = props\n\n let hash = mapHash(\n resourceDayTableModel.resourceIndex.indicesById,\n (i) => resourceDayTableModel.resources[i], // has `ui` AND `businessHours` keys!\n ) as any // :(\n\n hash[''] = {}\n\n return hash\n }\n\n getKeysForDateSpan(dateSpan: DateSpan): string[] {\n return [dateSpan.resourceId || '']\n }\n\n getKeysForEventDef(eventDef: EventDef): string[] {\n let resourceIds = eventDef.resourceIds\n\n if (!resourceIds.length) {\n return ['']\n }\n\n return resourceIds\n }\n}\n","import { flexibleCompare, compareByFieldSpecs, OrderSpec } from '@fullcalendar/common'\nimport { ResourceHash, Resource } from '../structs/resource'\nimport { ResourceEntityExpansions } from '../reducers/resourceEntityExpansions'\nimport { GroupSpec } from './resource-spec'\nimport { ResourceApi } from '../api/ResourceApi'\n\ninterface ParentNode {\n children: ParentNode[]\n}\n\ninterface ResourceParentNode extends ParentNode {\n resource: Resource\n resourceFields: any\n}\n\ntype ResourceNodeHash = { [resourceId: string]: ResourceParentNode }\n\ninterface GroupParentNode extends ParentNode {\n group: Group\n}\n\nexport interface Group {\n value: any\n spec: GroupSpec\n}\n\nexport interface GroupNode {\n id: string // 'field:value'\n isExpanded: boolean\n group: Group\n}\n\nexport interface ResourceNode {\n id: string // 'resourceId' (won't collide with group ID's because has colon)\n rowSpans: number[]\n depth: number\n isExpanded: boolean\n hasChildren: boolean\n resource: Resource\n resourceFields: any\n}\n\n/*\ndoesn't accept grouping\n*/\nexport function flattenResources(resourceStore: ResourceHash, orderSpecs: OrderSpec<ResourceApi>[]): Resource[] {\n return buildRowNodes(resourceStore, [], orderSpecs, false, {}, true)\n .map((node) => (node as ResourceNode).resource)\n}\n\nexport function buildRowNodes(\n resourceStore: ResourceHash,\n groupSpecs: GroupSpec[],\n orderSpecs: OrderSpec<ResourceApi>[],\n isVGrouping: boolean,\n expansions: ResourceEntityExpansions,\n expansionDefault: boolean,\n): (GroupNode | ResourceNode)[] {\n let complexNodes = buildHierarchy(resourceStore, isVGrouping ? -1 : 1, groupSpecs, orderSpecs)\n let flatNodes = []\n\n flattenNodes(complexNodes, flatNodes, isVGrouping, [], 0, expansions, expansionDefault)\n\n return flatNodes\n}\n\nfunction flattenNodes(\n complexNodes: ParentNode[],\n res, isVGrouping, rowSpans, depth,\n expansions: ResourceEntityExpansions,\n expansionDefault: boolean,\n) {\n for (let i = 0; i < complexNodes.length; i += 1) {\n let complexNode = complexNodes[i]\n let group = (complexNode as GroupParentNode).group\n\n if (group) {\n if (isVGrouping) {\n let firstRowIndex = res.length\n let rowSpanIndex = rowSpans.length\n\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans.concat(0), depth, expansions, expansionDefault)\n\n if (firstRowIndex < res.length) {\n let firstRow = res[firstRowIndex]\n let firstRowSpans = firstRow.rowSpans = firstRow.rowSpans.slice()\n\n firstRowSpans[rowSpanIndex] = res.length - firstRowIndex\n }\n } else {\n let id = group.spec.field + ':' + group.value\n let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault\n\n res.push({ id, group, isExpanded })\n\n if (isExpanded) {\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault)\n }\n }\n } else if ((complexNode as ResourceParentNode).resource) {\n let id = (complexNode as ResourceParentNode).resource.id\n let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault\n\n res.push({\n id,\n rowSpans,\n depth,\n isExpanded,\n hasChildren: Boolean(complexNode.children.length),\n resource: (complexNode as ResourceParentNode).resource,\n resourceFields: (complexNode as ResourceParentNode).resourceFields,\n })\n\n if (isExpanded) {\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault)\n }\n }\n }\n}\n\nfunction buildHierarchy(\n resourceStore: ResourceHash,\n maxDepth: number,\n groupSpecs: GroupSpec[],\n orderSpecs: OrderSpec<ResourceApi>[],\n): ParentNode[] {\n let resourceNodes = buildResourceNodes(resourceStore, orderSpecs)\n let builtNodes: ParentNode[] = []\n\n for (let resourceId in resourceNodes) {\n let resourceNode = resourceNodes[resourceId]\n\n if (!resourceNode.resource.parentId) {\n insertResourceNode(resourceNode, builtNodes, groupSpecs, 0, maxDepth, orderSpecs)\n }\n }\n\n return builtNodes\n}\n\nfunction buildResourceNodes(resourceStore: ResourceHash, orderSpecs: OrderSpec<ResourceApi>[]): ResourceNodeHash {\n let nodeHash: ResourceNodeHash = {}\n\n for (let resourceId in resourceStore) {\n let resource = resourceStore[resourceId]\n\n nodeHash[resourceId] = {\n resource,\n resourceFields: buildResourceFields(resource),\n children: [],\n }\n }\n\n for (let resourceId in resourceStore) {\n let resource = resourceStore[resourceId]\n\n if (resource.parentId) {\n let parentNode = nodeHash[resource.parentId]\n\n if (parentNode) {\n insertResourceNodeInSiblings(nodeHash[resourceId], parentNode.children, orderSpecs)\n }\n }\n }\n\n return nodeHash\n}\n\nfunction insertResourceNode(\n resourceNode: ResourceParentNode,\n nodes: ParentNode[],\n groupSpecs: GroupSpec[],\n depth: number,\n maxDepth: number,\n orderSpecs: OrderSpec<ResourceApi>[],\n) {\n if (groupSpecs.length && (maxDepth === -1 || depth <= maxDepth)) {\n let groupNode = ensureGroupNodes(resourceNode, nodes, groupSpecs[0])\n\n insertResourceNode(resourceNode, groupNode.children, groupSpecs.slice(1), depth + 1, maxDepth, orderSpecs)\n } else {\n insertResourceNodeInSiblings(resourceNode, nodes, orderSpecs)\n }\n}\n\nfunction ensureGroupNodes(resourceNode: ResourceParentNode, nodes: ParentNode[], groupSpec: GroupSpec): GroupParentNode {\n let groupValue = resourceNode.resourceFields[groupSpec.field]\n let groupNode\n let newGroupIndex\n\n // find an existing group that matches, or determine the position for a new group\n if (groupSpec.order) {\n for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n let node = nodes[newGroupIndex]\n\n if ((node as GroupParentNode).group) {\n let cmp = flexibleCompare(groupValue, (node as GroupParentNode).group.value) * groupSpec.order\n\n if (cmp === 0) {\n groupNode = node\n break\n } else if (cmp < 0) {\n break\n }\n }\n }\n } else { // the groups are unordered\n for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n let node = nodes[newGroupIndex]\n\n if ((node as GroupParentNode).group && groupValue === (node as GroupParentNode).group.value) {\n groupNode = node\n break\n }\n }\n }\n\n if (!groupNode) {\n groupNode = {\n group: {\n value: groupValue,\n spec: groupSpec,\n },\n children: [],\n }\n\n nodes.splice(newGroupIndex, 0, groupNode)\n }\n\n return groupNode\n}\n\nfunction insertResourceNodeInSiblings(resourceNode, siblings, orderSpecs: OrderSpec<ResourceApi>[]) {\n let i\n\n for (i = 0; i < siblings.length; i += 1) {\n let cmp = compareByFieldSpecs(siblings[i].resourceFields, resourceNode.resourceFields, orderSpecs) // TODO: pass in ResourceApi?\n\n if (cmp > 0) { // went 1 past. insert at i\n break\n }\n }\n\n siblings.splice(i, 0, resourceNode)\n}\n\nexport function buildResourceFields(resource: Resource) {\n let obj = { ...resource.extendedProps, ...resource.ui, ...resource }\n\n delete obj.ui\n delete obj.extendedProps\n\n return obj\n}\n\nexport function isGroupsEqual(group0: Group, group1: Group) {\n return group0.spec === group1.spec && group0.value === group1.value\n}\n","import { createPlugin } from '@fullcalendar/common'\n\nimport premiumCommonPlugin from '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n// ensure ambient declarations\nimport '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n\nimport resourceCommonPlugin from '@fullcalendar/resource-common'\nimport timeGridPlugin from '@fullcalendar/timegrid'\nimport { ResourceDayTimeColsView } from './ResourceDayTimeColsView'\n\nexport { ResourceDayTimeColsView }\nexport { ResourceDayTimeCols } from './ResourceDayTimeCols'\n\nexport default createPlugin({\n deps: [\n premiumCommonPlugin,\n resourceCommonPlugin,\n timeGridPlugin,\n ],\n initialView: 'resourceTimeGridDay',\n views: {\n\n resourceTimeGrid: {\n type: 'timeGrid', // will inherit this configuration\n component: ResourceDayTimeColsView,\n needsResourceData: true,\n },\n\n resourceTimeGridDay: {\n type: 'resourceTimeGrid',\n duration: { days: 1 },\n },\n\n resourceTimeGridWeek: {\n type: 'resourceTimeGrid',\n duration: { weeks: 1 },\n },\n\n },\n})\n","import { CalendarContext, DateProfile } from '@fullcalendar/common'\nimport { ResourceSource } from '../structs/resource-source'\nimport { ResourceHash } from '../structs/resource'\nimport { reduceResourceSource } from './resourceSource'\nimport { reduceResourceStore } from './resourceStore'\nimport { reduceResourceEntityExpansions, ResourceEntityExpansions } from './resourceEntityExpansions'\nimport { ResourceAction } from './resource-action'\n\nexport interface ResourceState {\n resourceSource: ResourceSource<any>\n resourceStore: ResourceHash\n resourceEntityExpansions: ResourceEntityExpansions\n}\n\nexport function reduceResources(\n state: ResourceState | null,\n action: ResourceAction | null,\n context: CalendarContext & { dateProfile: DateProfile },\n) {\n let resourceSource = reduceResourceSource(state && state.resourceSource, action, context)\n let resourceStore = reduceResourceStore(state && state.resourceStore, action, resourceSource, context)\n let resourceEntityExpansions = reduceResourceEntityExpansions(state && state.resourceEntityExpansions, action)\n\n return {\n resourceSource,\n resourceStore,\n resourceEntityExpansions,\n }\n}\n","import { ResourceAction } from './resource-action'\n\nexport type ResourceEntityExpansions = { [id: string]: boolean }\n\nexport function reduceResourceEntityExpansions(\n expansions: ResourceEntityExpansions | null,\n action: ResourceAction | null,\n): ResourceEntityExpansions {\n if (!expansions || !action) {\n return {}\n }\n\n switch (action.type) {\n case 'SET_RESOURCE_ENTITY_EXPANDED':\n return {\n ...expansions,\n [action.id]: action.isExpanded,\n }\n\n default:\n return expansions\n }\n}\n","import { Hit } from '@fullcalendar/common'\n\nexport function transformDateSelectionJoin(hit0: Hit, hit1: Hit) {\n let resourceId0 = hit0.dateSpan.resourceId\n let resourceId1 = hit1.dateSpan.resourceId\n\n if (resourceId0 && resourceId1) {\n return { resourceId: resourceId0 }\n }\n\n return null\n}\n","import { DateSpan } from '@fullcalendar/common'\n\nexport function transformExternalDef(dateSpan: DateSpan) {\n return dateSpan.resourceId ?\n { resourceId: dateSpan.resourceId } :\n {}\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","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar l0 = {\n code: \"af\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Vorige\",\n next: \"Volgende\",\n today: \"Vandag\",\n year: \"Jaar\",\n month: \"Maand\",\n week: \"Week\",\n day: \"Dag\",\n list: \"Agenda\"\n },\n allDayText: \"Heeldag\",\n moreLinkText: \"Addisionele\",\n noEventsText: \"Daar is geen gebeurtenisse nie\"\n};\n\nvar l1 = {\n code: \"ar-dz\",\n week: {\n dow: 0,\n doy: 4\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l2 = {\n code: \"ar-kw\",\n week: {\n dow: 0,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l3 = {\n code: \"ar-ly\",\n week: {\n dow: 6,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l4 = {\n code: \"ar-ma\",\n week: {\n dow: 6,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l5 = {\n code: \"ar-sa\",\n week: {\n dow: 0,\n doy: 6\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l6 = {\n code: \"ar-tn\",\n week: {\n dow: 1,\n doy: 4\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l7 = {\n code: \"ar\",\n week: {\n dow: 6,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n next: \"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\",\n today: \"\\u0627\\u0644\\u064A\\u0648\\u0645\",\n month: \"\\u0634\\u0647\\u0631\",\n week: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n day: \"\\u064A\\u0648\\u0645\",\n list: \"\\u0623\\u062C\\u0646\\u062F\\u0629\"\n },\n weekText: \"\\u0623\\u0633\\u0628\\u0648\\u0639\",\n allDayText: \"\\u0627\\u0644\\u064A\\u0648\\u0645 \\u0643\\u0644\\u0647\",\n moreLinkText: \"\\u0623\\u062E\\u0631\\u0649\",\n noEventsText: \"\\u0623\\u064A \\u0623\\u062D\\u062F\\u0627\\u062B \\u0644\\u0639\\u0631\\u0636\"\n};\n\nvar l8 = {\n code: \"az\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u018Fvv\\u0259l\",\n next: \"Sonra\",\n today: \"Bu G\\xFCn\",\n month: \"Ay\",\n week: \"H\\u0259ft\\u0259\",\n day: \"G\\xFCn\",\n list: \"G\\xFCnd\\u0259m\"\n },\n weekText: \"H\\u0259ft\\u0259\",\n allDayText: \"B\\xFCt\\xFCn G\\xFCn\",\n moreLinkText: function(n) {\n return \"+ daha \\xE7ox \" + n;\n },\n noEventsText: \"G\\xF6st\\u0259rm\\u0259k \\xFC\\xE7\\xFCn hadis\\u0259 yoxdur\"\n};\n\nvar l9 = {\n code: \"bg\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"\\u043D\\u0430\\u0437\\u0430\\u0434\",\n next: \"\\u043D\\u0430\\u043F\\u0440\\u0435\\u0434\",\n today: \"\\u0434\\u043D\\u0435\\u0441\",\n month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n week: \"\\u0421\\u0435\\u0434\\u043C\\u0438\\u0446\\u0430\",\n day: \"\\u0414\\u0435\\u043D\",\n list: \"\\u0413\\u0440\\u0430\\u0444\\u0438\\u043A\"\n },\n allDayText: \"\\u0426\\u044F\\u043B \\u0434\\u0435\\u043D\",\n moreLinkText: function(n) {\n return \"+\\u043E\\u0449\\u0435 \" + n;\n },\n noEventsText: \"\\u041D\\u044F\\u043C\\u0430 \\u0441\\u044A\\u0431\\u0438\\u0442\\u0438\\u044F \\u0437\\u0430 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0432\\u0430\\u043D\\u0435\"\n};\n\nvar l10 = {\n code: \"bn\",\n week: {\n dow: 0,\n doy: 6\n },\n buttonText: {\n prev: \"\\u09AA\\u09C7\\u099B\\u09A8\\u09C7\",\n next: \"\\u09B8\\u09BE\\u09AE\\u09A8\\u09C7\",\n today: \"\\u0986\\u099C\",\n month: \"\\u09AE\\u09BE\\u09B8\",\n week: \"\\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9\",\n day: \"\\u09A6\\u09BF\\u09A8\",\n list: \"\\u09A4\\u09BE\\u09B2\\u09BF\\u0995\\u09BE\"\n },\n weekText: \"\\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9\",\n allDayText: \"\\u09B8\\u09BE\\u09B0\\u09BE\\u09A6\\u09BF\\u09A8\",\n moreLinkText: function(n) {\n return \"+\\u0985\\u09A8\\u09CD\\u09AF\\u09BE\\u09A8\\u09CD\\u09AF \" + n;\n },\n noEventsText: \"\\u0995\\u09CB\\u09A8\\u09CB \\u0987\\u09AD\\u09C7\\u09A8\\u09CD\\u099F \\u09A8\\u09C7\\u0987\"\n};\n\nvar l11 = {\n code: \"bs\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Pro\\u0161li\",\n next: \"Sljede\\u0107i\",\n today: \"Danas\",\n month: \"Mjesec\",\n week: \"Sedmica\",\n day: \"Dan\",\n list: \"Raspored\"\n },\n weekText: \"Sed\",\n allDayText: \"Cijeli dan\",\n moreLinkText: function(n) {\n return \"+ jo\\u0161 \" + n;\n },\n noEventsText: \"Nema doga\\u0111aja za prikazivanje\"\n};\n\nvar l12 = {\n code: \"ca\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Anterior\",\n next: \"Seg\\xFCent\",\n today: \"Avui\",\n month: \"Mes\",\n week: \"Setmana\",\n day: \"Dia\",\n list: \"Agenda\"\n },\n weekText: \"Set\",\n allDayText: \"Tot el dia\",\n moreLinkText: \"m\\xE9s\",\n noEventsText: \"No hi ha esdeveniments per mostrar\"\n};\n\nvar l13 = {\n code: \"cs\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"D\\u0159\\xEDve\",\n next: \"Pozd\\u011Bji\",\n today: \"Nyn\\xED\",\n month: \"M\\u011Bs\\xEDc\",\n week: \"T\\xFDden\",\n day: \"Den\",\n list: \"Agenda\"\n },\n weekText: \"T\\xFDd\",\n allDayText: \"Cel\\xFD den\",\n moreLinkText: function(n) {\n return \"+dal\\u0161\\xED: \" + n;\n },\n noEventsText: \"\\u017D\\xE1dn\\xE9 akce k zobrazen\\xED\"\n};\n\nvar l14 = {\n code: \"cy\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Blaenorol\",\n next: \"Nesaf\",\n today: \"Heddiw\",\n year: \"Blwyddyn\",\n month: \"Mis\",\n week: \"Wythnos\",\n day: \"Dydd\",\n list: \"Rhestr\"\n },\n weekText: \"Wythnos\",\n allDayText: \"Trwy'r dydd\",\n moreLinkText: \"Mwy\",\n noEventsText: \"Dim digwyddiadau\"\n};\n\nvar l15 = {\n code: \"da\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Forrige\",\n next: \"N\\xE6ste\",\n today: \"I dag\",\n month: \"M\\xE5ned\",\n week: \"Uge\",\n day: \"Dag\",\n list: \"Agenda\"\n },\n weekText: \"Uge\",\n allDayText: \"Hele dagen\",\n moreLinkText: \"flere\",\n noEventsText: \"Ingen arrangementer at vise\"\n};\n\nfunction affix$1(buttonText) {\n return buttonText === \"Tag\" || buttonText === \"Monat\" ? \"r\" : buttonText === \"Jahr\" ? \"s\" : \"\";\n}\nvar l16 = {\n code: \"de-at\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Zur\\xFCck\",\n next: \"Vor\",\n today: \"Heute\",\n year: \"Jahr\",\n month: \"Monat\",\n week: \"Woche\",\n day: \"Tag\",\n list: \"Termin\\xFCbersicht\"\n },\n weekText: \"KW\",\n weekTextLong: \"Woche\",\n allDayText: \"Ganzt\\xE4gig\",\n moreLinkText: function(n) {\n return \"+ weitere \" + n;\n },\n noEventsText: \"Keine Ereignisse anzuzeigen\",\n buttonHints: {\n prev: function(buttonText) {\n return \"Vorherige\".concat(affix$1(buttonText), \" \").concat(buttonText);\n },\n next: function(buttonText) {\n return \"N\\xE4chste\".concat(affix$1(buttonText), \" \").concat(buttonText);\n },\n today: function(buttonText) {\n if (buttonText === \"Tag\") {\n return \"Heute\";\n }\n return \"Diese\".concat(affix$1(buttonText), \" \").concat(buttonText);\n }\n },\n viewHint: function(buttonText) {\n var glue = buttonText === \"Woche\" ? \"n\" : buttonText === \"Monat\" ? \"s\" : \"es\";\n return buttonText + glue + \"ansicht\";\n },\n navLinkHint: \"Gehe zu $0\",\n moreLinkHint: function(eventCnt) {\n return \"Zeige \" + (eventCnt === 1 ? \"ein weiteres Ereignis\" : eventCnt + \" weitere Ereignisse\");\n },\n closeHint: \"Schlie\\xDFen\",\n timeHint: \"Uhrzeit\",\n eventHint: \"Ereignis\"\n};\n\nfunction affix(buttonText) {\n return buttonText === \"Tag\" || buttonText === \"Monat\" ? \"r\" : buttonText === \"Jahr\" ? \"s\" : \"\";\n}\nvar l17 = {\n code: \"de\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Zur\\xFCck\",\n next: \"Vor\",\n today: \"Heute\",\n year: \"Jahr\",\n month: \"Monat\",\n week: \"Woche\",\n day: \"Tag\",\n list: \"Termin\\xFCbersicht\"\n },\n weekText: \"KW\",\n weekTextLong: \"Woche\",\n allDayText: \"Ganzt\\xE4gig\",\n moreLinkText: function(n) {\n return \"+ weitere \" + n;\n },\n noEventsText: \"Keine Ereignisse anzuzeigen\",\n buttonHints: {\n prev: function(buttonText) {\n return \"Vorherige\".concat(affix(buttonText), \" \").concat(buttonText);\n },\n next: function(buttonText) {\n return \"N\\xE4chste\".concat(affix(buttonText), \" \").concat(buttonText);\n },\n today: function(buttonText) {\n if (buttonText === \"Tag\") {\n return \"Heute\";\n }\n return \"Diese\".concat(affix(buttonText), \" \").concat(buttonText);\n }\n },\n viewHint: function(buttonText) {\n var glue = buttonText === \"Woche\" ? \"n\" : buttonText === \"Monat\" ? \"s\" : \"es\";\n return buttonText + glue + \"ansicht\";\n },\n navLinkHint: \"Gehe zu $0\",\n moreLinkHint: function(eventCnt) {\n return \"Zeige \" + (eventCnt === 1 ? \"ein weiteres Ereignis\" : eventCnt + \" weitere Ereignisse\");\n },\n closeHint: \"Schlie\\xDFen\",\n timeHint: \"Uhrzeit\",\n eventHint: \"Ereignis\"\n};\n\nvar l18 = {\n code: \"el\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u03A0\\u03C1\\u03BF\\u03B7\\u03B3\\u03BF\\u03CD\\u03BC\\u03B5\\u03BD\\u03BF\\u03C2\",\n next: \"\\u0395\\u03C0\\u03CC\\u03BC\\u03B5\\u03BD\\u03BF\\u03C2\",\n today: \"\\u03A3\\u03AE\\u03BC\\u03B5\\u03C1\\u03B1\",\n month: \"\\u039C\\u03AE\\u03BD\\u03B1\\u03C2\",\n week: \"\\u0395\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1\",\n day: \"\\u0397\\u03BC\\u03AD\\u03C1\\u03B1\",\n list: \"\\u0391\\u03C4\\u03B6\\u03AD\\u03BD\\u03C4\\u03B1\"\n },\n weekText: \"\\u0395\\u03B2\\u03B4\",\n allDayText: \"\\u039F\\u03BB\\u03BF\\u03AE\\u03BC\\u03B5\\u03C1\\u03BF\",\n moreLinkText: \"\\u03C0\\u03B5\\u03C1\\u03B9\\u03C3\\u03C3\\u03CC\\u03C4\\u03B5\\u03C1\\u03B1\",\n noEventsText: \"\\u0394\\u03B5\\u03BD \\u03C5\\u03C0\\u03AC\\u03C1\\u03C7\\u03BF\\u03C5\\u03BD \\u03B3\\u03B5\\u03B3\\u03BF\\u03BD\\u03CC\\u03C4\\u03B1 \\u03C0\\u03C1\\u03BF\\u03C2 \\u03B5\\u03BC\\u03C6\\u03AC\\u03BD\\u03B9\\u03C3\\u03B7\"\n};\n\nvar l19 = {\n code: \"en-au\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonHints: {\n prev: \"Previous $0\",\n next: \"Next $0\",\n today: \"This $0\"\n },\n viewHint: \"$0 view\",\n navLinkHint: \"Go to $0\",\n moreLinkHint: function(eventCnt) {\n return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n }\n};\n\nvar l20 = {\n code: \"en-gb\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonHints: {\n prev: \"Previous $0\",\n next: \"Next $0\",\n today: \"This $0\"\n },\n viewHint: \"$0 view\",\n navLinkHint: \"Go to $0\",\n moreLinkHint: function(eventCnt) {\n return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n }\n};\n\nvar l21 = {\n code: \"en-nz\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonHints: {\n prev: \"Previous $0\",\n next: \"Next $0\",\n today: \"This $0\"\n },\n viewHint: \"$0 view\",\n navLinkHint: \"Go to $0\",\n moreLinkHint: function(eventCnt) {\n return \"Show \".concat(eventCnt, \" more event\").concat(eventCnt === 1 ? \"\" : \"s\");\n }\n};\n\nvar l22 = {\n code: \"eo\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Anta\\u016Da\",\n next: \"Sekva\",\n today: \"Hodia\\u016D\",\n month: \"Monato\",\n week: \"Semajno\",\n day: \"Tago\",\n list: \"Tagordo\"\n },\n weekText: \"Sm\",\n allDayText: \"Tuta tago\",\n moreLinkText: \"pli\",\n noEventsText: \"Neniuj eventoj por montri\"\n};\n\nvar l23 = {\n code: \"es\",\n week: {\n dow: 0,\n doy: 6\n },\n buttonText: {\n prev: \"Ant\",\n next: \"Sig\",\n today: \"Hoy\",\n month: \"Mes\",\n week: \"Semana\",\n day: \"D\\xEDa\",\n list: \"Agenda\"\n },\n weekText: \"Sm\",\n allDayText: \"Todo el d\\xEDa\",\n moreLinkText: \"m\\xE1s\",\n noEventsText: \"No hay eventos para mostrar\"\n};\n\nvar l24 = {\n code: \"es\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Ant\",\n next: \"Sig\",\n today: \"Hoy\",\n month: \"Mes\",\n week: \"Semana\",\n day: \"D\\xEDa\",\n list: \"Agenda\"\n },\n buttonHints: {\n prev: \"$0 antes\",\n next: \"$0 siguiente\",\n today: function(buttonText) {\n return buttonText === \"D\\xEDa\" ? \"Hoy\" : (buttonText === \"Semana\" ? \"Esta\" : \"Este\") + \" \" + buttonText.toLocaleLowerCase();\n }\n },\n viewHint: function(buttonText) {\n return \"Vista \" + (buttonText === \"Semana\" ? \"de la\" : \"del\") + \" \" + buttonText.toLocaleLowerCase();\n },\n weekText: \"Sm\",\n weekTextLong: \"Semana\",\n allDayText: \"Todo el d\\xEDa\",\n moreLinkText: \"m\\xE1s\",\n moreLinkHint: function(eventCnt) {\n return \"Mostrar \".concat(eventCnt, \" eventos m\\xE1s\");\n },\n noEventsText: \"No hay eventos para mostrar\",\n navLinkHint: \"Ir al $0\",\n closeHint: \"Cerrar\",\n timeHint: \"La hora\",\n eventHint: \"Evento\"\n};\n\nvar l25 = {\n code: \"et\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Eelnev\",\n next: \"J\\xE4rgnev\",\n today: \"T\\xE4na\",\n month: \"Kuu\",\n week: \"N\\xE4dal\",\n day: \"P\\xE4ev\",\n list: \"P\\xE4evakord\"\n },\n weekText: \"n\\xE4d\",\n allDayText: \"Kogu p\\xE4ev\",\n moreLinkText: function(n) {\n return \"+ veel \" + n;\n },\n noEventsText: \"Kuvamiseks puuduvad s\\xFCndmused\"\n};\n\nvar l26 = {\n code: \"eu\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Aur\",\n next: \"Hur\",\n today: \"Gaur\",\n month: \"Hilabetea\",\n week: \"Astea\",\n day: \"Eguna\",\n list: \"Agenda\"\n },\n weekText: \"As\",\n allDayText: \"Egun osoa\",\n moreLinkText: \"gehiago\",\n noEventsText: \"Ez dago ekitaldirik erakusteko\"\n};\n\nvar l27 = {\n code: \"fa\",\n week: {\n dow: 6,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u0642\\u0628\\u0644\\u06CC\",\n next: \"\\u0628\\u0639\\u062F\\u06CC\",\n today: \"\\u0627\\u0645\\u0631\\u0648\\u0632\",\n month: \"\\u0645\\u0627\\u0647\",\n week: \"\\u0647\\u0641\\u062A\\u0647\",\n day: \"\\u0631\\u0648\\u0632\",\n list: \"\\u0628\\u0631\\u0646\\u0627\\u0645\\u0647\"\n },\n weekText: \"\\u0647\\u0641\",\n allDayText: \"\\u062A\\u0645\\u0627\\u0645 \\u0631\\u0648\\u0632\",\n moreLinkText: function(n) {\n return \"\\u0628\\u06CC\\u0634 \\u0627\\u0632 \" + n;\n },\n noEventsText: \"\\u0647\\u06CC\\u0686 \\u0631\\u0648\\u06CC\\u062F\\u0627\\u062F\\u06CC \\u0628\\u0647 \\u0646\\u0645\\u0627\\u06CC\\u0634\"\n};\n\nvar l28 = {\n code: \"fi\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Edellinen\",\n next: \"Seuraava\",\n today: \"T\\xE4n\\xE4\\xE4n\",\n month: \"Kuukausi\",\n week: \"Viikko\",\n day: \"P\\xE4iv\\xE4\",\n list: \"Tapahtumat\"\n },\n weekText: \"Vk\",\n allDayText: \"Koko p\\xE4iv\\xE4\",\n moreLinkText: \"lis\\xE4\\xE4\",\n noEventsText: \"Ei n\\xE4ytett\\xE4vi\\xE4 tapahtumia\"\n};\n\nvar l29 = {\n code: \"fr\",\n buttonText: {\n prev: \"Pr\\xE9c\\xE9dent\",\n next: \"Suivant\",\n today: \"Aujourd'hui\",\n year: \"Ann\\xE9e\",\n month: \"Mois\",\n week: \"Semaine\",\n day: \"Jour\",\n list: \"Mon planning\"\n },\n weekText: \"Sem.\",\n allDayText: \"Toute la journ\\xE9e\",\n moreLinkText: \"en plus\",\n noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l30 = {\n code: \"fr-ch\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Pr\\xE9c\\xE9dent\",\n next: \"Suivant\",\n today: \"Courant\",\n year: \"Ann\\xE9e\",\n month: \"Mois\",\n week: \"Semaine\",\n day: \"Jour\",\n list: \"Mon planning\"\n },\n weekText: \"Sm\",\n allDayText: \"Toute la journ\\xE9e\",\n moreLinkText: \"en plus\",\n noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l31 = {\n code: \"fr\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Pr\\xE9c\\xE9dent\",\n next: \"Suivant\",\n today: \"Aujourd'hui\",\n year: \"Ann\\xE9e\",\n month: \"Mois\",\n week: \"Semaine\",\n day: \"Jour\",\n list: \"Planning\"\n },\n weekText: \"Sem.\",\n allDayText: \"Toute la journ\\xE9e\",\n moreLinkText: \"en plus\",\n noEventsText: \"Aucun \\xE9v\\xE9nement \\xE0 afficher\"\n};\n\nvar l32 = {\n code: \"gl\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Ant\",\n next: \"Seg\",\n today: \"Hoxe\",\n month: \"Mes\",\n week: \"Semana\",\n day: \"D\\xEDa\",\n list: \"Axenda\"\n },\n weekText: \"Sm\",\n allDayText: \"Todo o d\\xEDa\",\n moreLinkText: \"m\\xE1is\",\n noEventsText: \"Non hai eventos para amosar\"\n};\n\nvar l33 = {\n code: \"he\",\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u05D4\\u05E7\\u05D5\\u05D3\\u05DD\",\n next: \"\\u05D4\\u05D1\\u05D0\",\n today: \"\\u05D4\\u05D9\\u05D5\\u05DD\",\n month: \"\\u05D7\\u05D5\\u05D3\\u05E9\",\n week: \"\\u05E9\\u05D1\\u05D5\\u05E2\",\n day: \"\\u05D9\\u05D5\\u05DD\",\n list: \"\\u05E1\\u05D3\\u05E8 \\u05D9\\u05D5\\u05DD\"\n },\n allDayText: \"\\u05DB\\u05DC \\u05D4\\u05D9\\u05D5\\u05DD\",\n moreLinkText: \"\\u05D0\\u05D7\\u05E8\",\n noEventsText: \"\\u05D0\\u05D9\\u05DF \\u05D0\\u05D9\\u05E8\\u05D5\\u05E2\\u05D9\\u05DD \\u05DC\\u05D4\\u05E6\\u05D2\\u05D4\",\n weekText: \"\\u05E9\\u05D1\\u05D5\\u05E2\"\n};\n\nvar l34 = {\n code: \"hi\",\n week: {\n dow: 0,\n doy: 6\n },\n buttonText: {\n prev: \"\\u092A\\u093F\\u091B\\u0932\\u093E\",\n next: \"\\u0905\\u0917\\u0932\\u093E\",\n today: \"\\u0906\\u091C\",\n month: \"\\u092E\\u0939\\u0940\\u0928\\u093E\",\n week: \"\\u0938\\u092A\\u094D\\u0924\\u093E\\u0939\",\n day: \"\\u0926\\u093F\\u0928\",\n list: \"\\u0915\\u093E\\u0930\\u094D\\u092F\\u0938\\u0942\\u091A\\u0940\"\n },\n weekText: \"\\u0939\\u092B\\u094D\\u0924\\u093E\",\n allDayText: \"\\u0938\\u092D\\u0940 \\u0926\\u093F\\u0928\",\n moreLinkText: function(n) {\n return \"+\\u0905\\u0927\\u093F\\u0915 \" + n;\n },\n noEventsText: \"\\u0915\\u094B\\u0908 \\u0918\\u091F\\u0928\\u093E\\u0913\\u0902 \\u0915\\u094B \\u092A\\u094D\\u0930\\u0926\\u0930\\u094D\\u0936\\u093F\\u0924 \\u0915\\u0930\\u0928\\u0947 \\u0915\\u0947 \\u0932\\u093F\\u090F\"\n};\n\nvar l35 = {\n code: \"hr\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Prija\\u0161nji\",\n next: \"Sljede\\u0107i\",\n today: \"Danas\",\n month: \"Mjesec\",\n week: \"Tjedan\",\n day: \"Dan\",\n list: \"Raspored\"\n },\n weekText: \"Tje\",\n allDayText: \"Cijeli dan\",\n moreLinkText: function(n) {\n return \"+ jo\\u0161 \" + n;\n },\n noEventsText: \"Nema doga\\u0111aja za prikaz\"\n};\n\nvar l36 = {\n code: \"hu\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"vissza\",\n next: \"el\\u0151re\",\n today: \"ma\",\n month: \"H\\xF3nap\",\n week: \"H\\xE9t\",\n day: \"Nap\",\n list: \"Lista\"\n },\n weekText: \"H\\xE9t\",\n allDayText: \"Eg\\xE9sz nap\",\n moreLinkText: \"tov\\xE1bbi\",\n noEventsText: \"Nincs megjelen\\xEDthet\\u0151 esem\\xE9ny\"\n};\n\nvar l37 = {\n code: \"hy-am\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u0546\\u0561\\u056D\\u0578\\u0580\\u0564\",\n next: \"\\u0540\\u0561\\u057B\\u0578\\u0580\\u0564\",\n today: \"\\u0531\\u0575\\u057D\\u0585\\u0580\",\n month: \"\\u0531\\u0574\\u056B\\u057D\",\n week: \"\\u0547\\u0561\\u0562\\u0561\\u0569\",\n day: \"\\u0555\\u0580\",\n list: \"\\u0555\\u0580\\u057E\\u0561 \\u0581\\u0578\\u0582\\u0581\\u0561\\u056F\"\n },\n weekText: \"\\u0547\\u0561\\u0562\",\n allDayText: \"\\u0531\\u0574\\u0562\\u0578\\u0572\\u057B \\u0585\\u0580\",\n moreLinkText: function(n) {\n return \"+ \\u0587\\u057D \" + n;\n },\n noEventsText: \"\\u0532\\u0561\\u0581\\u0561\\u056F\\u0561\\u0575\\u0578\\u0582\\u0574 \\u0567 \\u056B\\u0580\\u0561\\u0564\\u0561\\u0580\\u0571\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568 \\u0581\\u0578\\u0582\\u0581\\u0561\\u0564\\u0580\\u0565\\u056C\\u0578\\u0582\"\n};\n\nvar l38 = {\n code: \"id\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"mundur\",\n next: \"maju\",\n today: \"hari ini\",\n month: \"Bulan\",\n week: \"Minggu\",\n day: \"Hari\",\n list: \"Agenda\"\n },\n weekText: \"Mg\",\n allDayText: \"Sehari penuh\",\n moreLinkText: \"lebih\",\n noEventsText: \"Tidak ada acara untuk ditampilkan\"\n};\n\nvar l39 = {\n code: \"is\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Fyrri\",\n next: \"N\\xE6sti\",\n today: \"\\xCD dag\",\n month: \"M\\xE1nu\\xF0ur\",\n week: \"Vika\",\n day: \"Dagur\",\n list: \"Dagskr\\xE1\"\n },\n weekText: \"Vika\",\n allDayText: \"Allan daginn\",\n moreLinkText: \"meira\",\n noEventsText: \"Engir vi\\xF0bur\\xF0ir til a\\xF0 s\\xFDna\"\n};\n\nvar l40 = {\n code: \"it\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Prec\",\n next: \"Succ\",\n today: \"Oggi\",\n month: \"Mese\",\n week: \"Settimana\",\n day: \"Giorno\",\n list: \"Agenda\"\n },\n weekText: \"Sm\",\n allDayText: \"Tutto il giorno\",\n moreLinkText: function(n) {\n return \"+altri \" + n;\n },\n noEventsText: \"Non ci sono eventi da visualizzare\"\n};\n\nvar l41 = {\n code: \"ja\",\n buttonText: {\n prev: \"\\u524D\",\n next: \"\\u6B21\",\n today: \"\\u4ECA\\u65E5\",\n month: \"\\u6708\",\n week: \"\\u9031\",\n day: \"\\u65E5\",\n list: \"\\u4E88\\u5B9A\\u30EA\\u30B9\\u30C8\"\n },\n weekText: \"\\u9031\",\n allDayText: \"\\u7D42\\u65E5\",\n moreLinkText: function(n) {\n return \"\\u4ED6 \" + n + \" \\u4EF6\";\n },\n noEventsText: \"\\u8868\\u793A\\u3059\\u308B\\u4E88\\u5B9A\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\"\n};\n\nvar l42 = {\n code: \"ka\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"\\u10EC\\u10D8\\u10DC\\u10D0\",\n next: \"\\u10E8\\u10D4\\u10DB\\u10D3\\u10D4\\u10D2\\u10D8\",\n today: \"\\u10D3\\u10E6\\u10D4\\u10E1\",\n month: \"\\u10D7\\u10D5\\u10D4\",\n week: \"\\u10D9\\u10D5\\u10D8\\u10E0\\u10D0\",\n day: \"\\u10D3\\u10E6\\u10D4\",\n list: \"\\u10D3\\u10E6\\u10D8\\u10E1 \\u10EC\\u10D4\\u10E1\\u10E0\\u10D8\\u10D2\\u10D8\"\n },\n weekText: \"\\u10D9\\u10D5\",\n allDayText: \"\\u10DB\\u10D7\\u10D4\\u10DA\\u10D8 \\u10D3\\u10E6\\u10D4\",\n moreLinkText: function(n) {\n return \"+ \\u10D9\\u10D8\\u10D3\\u10D4\\u10D5 \" + n;\n },\n noEventsText: \"\\u10E6\\u10DD\\u10DC\\u10D8\\u10E1\\u10EB\\u10D8\\u10D4\\u10D1\\u10D4\\u10D1\\u10D8 \\u10D0\\u10E0 \\u10D0\\u10E0\\u10D8\\u10E1\"\n};\n\nvar l43 = {\n code: \"kk\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"\\u0410\\u043B\\u0434\\u044B\\u04A3\\u0493\\u044B\",\n next: \"\\u041A\\u0435\\u043B\\u0435\\u0441\\u0456\",\n today: \"\\u0411\\u04AF\\u0433\\u0456\\u043D\",\n month: \"\\u0410\\u0439\",\n week: \"\\u0410\\u043F\\u0442\\u0430\",\n day: \"\\u041A\\u04AF\\u043D\",\n list: \"\\u041A\\u04AF\\u043D \\u0442\\u04D9\\u0440\\u0442\\u0456\\u0431\\u0456\"\n },\n weekText: \"\\u041D\\u0435\",\n allDayText: \"\\u041A\\u04AF\\u043D\\u0456 \\u0431\\u043E\\u0439\\u044B\",\n moreLinkText: function(n) {\n return \"+ \\u0442\\u0430\\u0493\\u044B \" + n;\n },\n noEventsText: \"\\u041A\\u04E9\\u0440\\u0441\\u0435\\u0442\\u0443 \\u04AF\\u0448\\u0456\\u043D \\u043E\\u049B\\u0438\\u0493\\u0430\\u043B\\u0430\\u0440 \\u0436\\u043E\\u049B\"\n};\n\nvar l44 = {\n code: \"km\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u1798\\u17BB\\u1793\",\n next: \"\\u1794\\u1793\\u17D2\\u1791\\u17B6\\u1794\\u17CB\",\n today: \"\\u1790\\u17D2\\u1784\\u17C3\\u1793\\u17C1\\u17C7\",\n year: \"\\u1786\\u17D2\\u1793\\u17B6\\u17C6\",\n month: \"\\u1781\\u17C2\",\n week: \"\\u179F\\u1794\\u17D2\\u178F\\u17B6\\u17A0\\u17CD\",\n day: \"\\u1790\\u17D2\\u1784\\u17C3\",\n list: \"\\u1794\\u1789\\u17D2\\u1787\\u17B8\"\n },\n weekText: \"\\u179F\\u1794\\u17D2\\u178F\\u17B6\\u17A0\\u17CD\",\n allDayText: \"\\u1796\\u17C1\\u1789\\u1798\\u17BD\\u1799\\u1790\\u17D2\\u1784\\u17C3\",\n moreLinkText: \"\\u1785\\u17D2\\u179A\\u17BE\\u1793\\u1791\\u17C0\\u178F\",\n noEventsText: \"\\u1782\\u17D2\\u1798\\u17B6\\u1793\\u1796\\u17D2\\u179A\\u17B9\\u178F\\u17D2\\u178F\\u17B7\\u1780\\u17B6\\u179A\\u178E\\u17CD\\u178F\\u17D2\\u179A\\u17BC\\u179C\\u1794\\u1784\\u17D2\\u17A0\\u17B6\\u1789\"\n};\n\nvar l45 = {\n code: \"ko\",\n buttonText: {\n prev: \"\\uC774\\uC804\\uB2EC\",\n next: \"\\uB2E4\\uC74C\\uB2EC\",\n today: \"\\uC624\\uB298\",\n month: \"\\uC6D4\",\n week: \"\\uC8FC\",\n day: \"\\uC77C\",\n list: \"\\uC77C\\uC815\\uBAA9\\uB85D\"\n },\n weekText: \"\\uC8FC\",\n allDayText: \"\\uC885\\uC77C\",\n moreLinkText: \"\\uAC1C\",\n noEventsText: \"\\uC77C\\uC815\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4\"\n};\n\nvar l46 = {\n code: \"ku\",\n week: {\n dow: 6,\n doy: 12\n },\n direction: \"rtl\",\n buttonText: {\n prev: \"\\u067E\\u06CE\\u0634\\u062A\\u0631\",\n next: \"\\u062F\\u0648\\u0627\\u062A\\u0631\",\n today: \"\\u0626\\u06D5\\u0645\\u0695\\u0648\",\n month: \"\\u0645\\u0627\\u0646\\u06AF\",\n week: \"\\u0647\\u06D5\\u0641\\u062A\\u06D5\",\n day: \"\\u0695\\u06C6\\u0698\",\n list: \"\\u0628\\u06D5\\u0631\\u0646\\u0627\\u0645\\u06D5\"\n },\n weekText: \"\\u0647\\u06D5\\u0641\\u062A\\u06D5\",\n allDayText: \"\\u0647\\u06D5\\u0645\\u0648\\u0648 \\u0695\\u06C6\\u0698\\u06D5\\u06A9\\u06D5\",\n moreLinkText: \"\\u0632\\u06CC\\u0627\\u062A\\u0631\",\n noEventsText: \"\\u0647\\u06CC\\u0686 \\u0695\\u0648\\u0648\\u062F\\u0627\\u0648\\u06CE\\u0643 \\u0646\\u06CC\\u06D5\"\n};\n\nvar l47 = {\n code: \"lb\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Zr\\xE9ck\",\n next: \"Weider\",\n today: \"Haut\",\n month: \"Mount\",\n week: \"Woch\",\n day: \"Dag\",\n list: \"Terminiwwersiicht\"\n },\n weekText: \"W\",\n allDayText: \"Ganzen Dag\",\n moreLinkText: \"m\\xE9i\",\n noEventsText: \"Nee Evenementer ze affich\\xE9ieren\"\n};\n\nvar l48 = {\n code: \"lt\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Atgal\",\n next: \"Pirmyn\",\n today: \"\\u0160iandien\",\n month: \"M\\u0117nuo\",\n week: \"Savait\\u0117\",\n day: \"Diena\",\n list: \"Darbotvark\\u0117\"\n },\n weekText: \"SAV\",\n allDayText: \"Vis\\u0105 dien\\u0105\",\n moreLinkText: \"daugiau\",\n noEventsText: \"N\\u0117ra \\u012Fvyki\\u0173 rodyti\"\n};\n\nvar l49 = {\n code: \"lv\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Iepr.\",\n next: \"N\\u0101k.\",\n today: \"\\u0160odien\",\n month: \"M\\u0113nesis\",\n week: \"Ned\\u0113\\u013Ca\",\n day: \"Diena\",\n list: \"Dienas k\\u0101rt\\u012Bba\"\n },\n weekText: \"Ned.\",\n allDayText: \"Visu dienu\",\n moreLinkText: function(n) {\n return \"+v\\u0113l \" + n;\n },\n noEventsText: \"Nav notikumu\"\n};\n\nvar l50 = {\n code: \"mk\",\n buttonText: {\n prev: \"\\u043F\\u0440\\u0435\\u0442\\u0445\\u043E\\u0434\\u043D\\u043E\",\n next: \"\\u0441\\u043B\\u0435\\u0434\\u043D\\u043E\",\n today: \"\\u0414\\u0435\\u043D\\u0435\\u0441\",\n month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n week: \"\\u041D\\u0435\\u0434\\u0435\\u043B\\u0430\",\n day: \"\\u0414\\u0435\\u043D\",\n list: \"\\u0413\\u0440\\u0430\\u0444\\u0438\\u043A\"\n },\n weekText: \"\\u0421\\u0435\\u0434\",\n allDayText: \"\\u0426\\u0435\\u043B \\u0434\\u0435\\u043D\",\n moreLinkText: function(n) {\n return \"+\\u043F\\u043E\\u0432\\u0435\\u045C\\u0435 \" + n;\n },\n noEventsText: \"\\u041D\\u0435\\u043C\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0430\\u043D\\u0438 \\u0437\\u0430 \\u043F\\u0440\\u0438\\u043A\\u0430\\u0436\\u0443\\u0432\\u0430\\u045A\\u0435\"\n};\n\nvar l51 = {\n code: \"ms\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Sebelum\",\n next: \"Selepas\",\n today: \"hari ini\",\n month: \"Bulan\",\n week: \"Minggu\",\n day: \"Hari\",\n list: \"Agenda\"\n },\n weekText: \"Mg\",\n allDayText: \"Sepanjang hari\",\n moreLinkText: function(n) {\n return \"masih ada \" + n + \" acara\";\n },\n noEventsText: \"Tiada peristiwa untuk dipaparkan\"\n};\n\nvar l52 = {\n code: \"nb\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Forrige\",\n next: \"Neste\",\n today: \"I dag\",\n month: \"M\\xE5ned\",\n week: \"Uke\",\n day: \"Dag\",\n list: \"Agenda\"\n },\n weekText: \"Uke\",\n weekTextLong: \"Uke\",\n allDayText: \"Hele dagen\",\n moreLinkText: \"til\",\n noEventsText: \"Ingen hendelser \\xE5 vise\",\n buttonHints: {\n prev: \"Forrige $0\",\n next: \"Neste $0\",\n today: \"N\\xE5v\\xE6rende $0\"\n },\n viewHint: \"$0 visning\",\n navLinkHint: \"G\\xE5 til $0\",\n moreLinkHint: function(eventCnt) {\n return \"Vis \".concat(eventCnt, \" flere hendelse\").concat(eventCnt === 1 ? \"\" : \"r\");\n }\n};\n\nvar l53 = {\n code: \"ne\",\n week: {\n dow: 7,\n doy: 1\n },\n buttonText: {\n prev: \"\\u0905\\u0918\\u093F\\u0932\\u094D\\u0932\\u094B\",\n next: \"\\u0905\\u0930\\u094D\\u0915\\u094B\",\n today: \"\\u0906\\u091C\",\n month: \"\\u092E\\u0939\\u093F\\u0928\\u093E\",\n week: \"\\u0939\\u092A\\u094D\\u0924\\u093E\",\n day: \"\\u0926\\u093F\\u0928\",\n list: \"\\u0938\\u0942\\u091A\\u0940\"\n },\n weekText: \"\\u0939\\u092A\\u094D\\u0924\\u093E\",\n allDayText: \"\\u0926\\u093F\\u0928\\u092D\\u0930\\u093F\",\n moreLinkText: \"\\u0925\\u092A \\u0932\\u093F\\u0902\\u0915\",\n noEventsText: \"\\u0926\\u0947\\u0916\\u093E\\u0909\\u0928\\u0915\\u094B \\u0932\\u093E\\u0917\\u093F \\u0915\\u0941\\u0928\\u0948 \\u0918\\u091F\\u0928\\u093E\\u0939\\u0930\\u0942 \\u091B\\u0948\\u0928\\u0928\\u094D\"\n};\n\nvar l54 = {\n code: \"nl\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Vorige\",\n next: \"Volgende\",\n today: \"Vandaag\",\n year: \"Jaar\",\n month: \"Maand\",\n week: \"Week\",\n day: \"Dag\",\n list: \"Agenda\"\n },\n allDayText: \"Hele dag\",\n moreLinkText: \"extra\",\n noEventsText: \"Geen evenementen om te laten zien\"\n};\n\nvar l55 = {\n code: \"nn\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"F\\xF8rre\",\n next: \"Neste\",\n today: \"I dag\",\n month: \"M\\xE5nad\",\n week: \"Veke\",\n day: \"Dag\",\n list: \"Agenda\"\n },\n weekText: \"Veke\",\n allDayText: \"Heile dagen\",\n moreLinkText: \"til\",\n noEventsText: \"Ingen hendelser \\xE5 vise\"\n};\n\nvar l56 = {\n code: \"pl\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Poprzedni\",\n next: \"Nast\\u0119pny\",\n today: \"Dzi\\u015B\",\n month: \"Miesi\\u0105c\",\n week: \"Tydzie\\u0144\",\n day: \"Dzie\\u0144\",\n list: \"Plan dnia\"\n },\n weekText: \"Tydz\",\n allDayText: \"Ca\\u0142y dzie\\u0144\",\n moreLinkText: \"wi\\u0119cej\",\n noEventsText: \"Brak wydarze\\u0144 do wy\\u015Bwietlenia\"\n};\n\nvar l57 = {\n code: \"pt-br\",\n buttonText: {\n prev: \"Anterior\",\n next: \"Pr\\xF3ximo\",\n today: \"Hoje\",\n month: \"M\\xEAs\",\n week: \"Semana\",\n day: \"Dia\",\n list: \"Lista\"\n },\n weekText: \"Sm\",\n allDayText: \"dia inteiro\",\n moreLinkText: function(n) {\n return \"mais +\" + n;\n },\n noEventsText: \"N\\xE3o h\\xE1 eventos para mostrar\"\n};\n\nvar l58 = {\n code: \"pt\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Anterior\",\n next: \"Seguinte\",\n today: \"Hoje\",\n month: \"M\\xEAs\",\n week: \"Semana\",\n day: \"Dia\",\n list: \"Agenda\"\n },\n weekText: \"Sem\",\n allDayText: \"Todo o dia\",\n moreLinkText: \"mais\",\n noEventsText: \"N\\xE3o h\\xE1 eventos para mostrar\"\n};\n\nvar l59 = {\n code: \"ro\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"precedent\\u0103\",\n next: \"urm\\u0103toare\",\n today: \"Azi\",\n month: \"Lun\\u0103\",\n week: \"S\\u0103pt\\u0103m\\xE2n\\u0103\",\n day: \"Zi\",\n list: \"Agend\\u0103\"\n },\n weekText: \"S\\u0103pt\",\n allDayText: \"Toat\\u0103 ziua\",\n moreLinkText: function(n) {\n return \"+alte \" + n;\n },\n noEventsText: \"Nu exist\\u0103 evenimente de afi\\u0219at\"\n};\n\nvar l60 = {\n code: \"ru\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u041F\\u0440\\u0435\\u0434\",\n next: \"\\u0421\\u043B\\u0435\\u0434\",\n today: \"\\u0421\\u0435\\u0433\\u043E\\u0434\\u043D\\u044F\",\n month: \"\\u041C\\u0435\\u0441\\u044F\\u0446\",\n week: \"\\u041D\\u0435\\u0434\\u0435\\u043B\\u044F\",\n day: \"\\u0414\\u0435\\u043D\\u044C\",\n list: \"\\u041F\\u043E\\u0432\\u0435\\u0441\\u0442\\u043A\\u0430 \\u0434\\u043D\\u044F\"\n },\n weekText: \"\\u041D\\u0435\\u0434\",\n allDayText: \"\\u0412\\u0435\\u0441\\u044C \\u0434\\u0435\\u043D\\u044C\",\n moreLinkText: function(n) {\n return \"+ \\u0435\\u0449\\u0451 \" + n;\n },\n noEventsText: \"\\u041D\\u0435\\u0442 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F\"\n};\n\nvar l61 = {\n code: \"si-lk\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u0DB4\\u0DD9\\u0DBB\",\n next: \"\\u0DB4\\u0DC3\\u0DD4\",\n today: \"\\u0D85\\u0DAF\",\n month: \"\\u0DB8\\u0DCF\\u0DC3\\u0DBA\",\n week: \"\\u0DC3\\u0DAD\\u0DD2\\u0DBA\",\n day: \"\\u0DAF\\u0DC0\\u0DC3\",\n list: \"\\u0DBD\\u0DD0\\u0DBA\\u0DD2\\u0DC3\\u0DCA\\u0DAD\\u0DD4\\u0DC0\"\n },\n weekText: \"\\u0DC3\\u0DAD\\u0DD2\",\n allDayText: \"\\u0DC3\\u0DD2\\u0DBA\\u0DBD\\u0DD4\",\n moreLinkText: \"\\u0DAD\\u0DC0\\u0DAD\\u0DCA\",\n noEventsText: \"\\u0DB8\\u0DD4\\u0D9A\\u0DD4\\u0DAD\\u0DCA \\u0DB1\\u0DD0\\u0DAD\"\n};\n\nvar l62 = {\n code: \"sk\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Predch\\xE1dzaj\\xFAci\",\n next: \"Nasleduj\\xFAci\",\n today: \"Dnes\",\n month: \"Mesiac\",\n week: \"T\\xFD\\u017Ede\\u0148\",\n day: \"De\\u0148\",\n list: \"Rozvrh\"\n },\n weekText: \"Ty\",\n allDayText: \"Cel\\xFD de\\u0148\",\n moreLinkText: function(n) {\n return \"+\\u010Fal\\u0161ie: \" + n;\n },\n noEventsText: \"\\u017Diadne akcie na zobrazenie\"\n};\n\nvar l63 = {\n code: \"sl\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Prej\\u0161nji\",\n next: \"Naslednji\",\n today: \"Trenutni\",\n month: \"Mesec\",\n week: \"Teden\",\n day: \"Dan\",\n list: \"Dnevni red\"\n },\n weekText: \"Teden\",\n allDayText: \"Ves dan\",\n moreLinkText: \"ve\\u010D\",\n noEventsText: \"Ni dogodkov za prikaz\"\n};\n\nvar l64 = {\n code: \"sm\",\n buttonText: {\n prev: \"Talu ai\",\n next: \"Mulimuli atu\",\n today: \"Aso nei\",\n month: \"Masina\",\n week: \"Vaiaso\",\n day: \"Aso\",\n list: \"Faasologa\"\n },\n weekText: \"Vaiaso\",\n allDayText: \"Aso atoa\",\n moreLinkText: \"sili atu\",\n noEventsText: \"Leai ni mea na tutupu\"\n};\n\nvar l65 = {\n code: \"sq\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"mbrapa\",\n next: \"P\\xEBrpara\",\n today: \"sot\",\n month: \"Muaj\",\n week: \"Jav\\xEB\",\n day: \"Dit\\xEB\",\n list: \"List\\xEB\"\n },\n weekText: \"Ja\",\n allDayText: \"Gjith\\xEB dit\\xEBn\",\n moreLinkText: function(n) {\n return \"+m\\xEB tep\\xEBr \" + n;\n },\n noEventsText: \"Nuk ka evente p\\xEBr t\\xEB shfaqur\"\n};\n\nvar l66 = {\n code: \"sr-cyrl\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"\\u041F\\u0440\\u0435\\u0442\\u0445\\u043E\\u0434\\u043D\\u0430\",\n next: \"\\u0441\\u043B\\u0435\\u0434\\u0435\\u045B\\u0438\",\n today: \"\\u0414\\u0430\\u043D\\u0430\\u0441\",\n month: \"\\u041C\\u0435\\u0441\\u0435\\u0446\",\n week: \"\\u041D\\u0435\\u0434\\u0435\\u0459\\u0430\",\n day: \"\\u0414\\u0430\\u043D\",\n list: \"\\u041F\\u043B\\u0430\\u043D\\u0435\\u0440\"\n },\n weekText: \"\\u0421\\u0435\\u0434\",\n allDayText: \"\\u0426\\u0435\\u043E \\u0434\\u0430\\u043D\",\n moreLinkText: function(n) {\n return \"+ \\u0458\\u043E\\u0448 \" + n;\n },\n noEventsText: \"\\u041D\\u0435\\u043C\\u0430 \\u0434\\u043E\\u0433\\u0430\\u0452\\u0430\\u0458\\u0430 \\u0437\\u0430 \\u043F\\u0440\\u0438\\u043A\\u0430\\u0437\"\n};\n\nvar l67 = {\n code: \"sr\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"Prethodna\",\n next: \"Sledec\\u0301i\",\n today: \"Danas\",\n month: \"M\\u0435s\\u0435c\",\n week: \"N\\u0435d\\u0435lja\",\n day: \"Dan\",\n list: \"Plan\\u0435r\"\n },\n weekText: \"Sed\",\n allDayText: \"C\\u0435o dan\",\n moreLinkText: function(n) {\n return \"+ jo\\u0161 \" + n;\n },\n noEventsText: \"N\\u0435ma doga\\u0111aja za prikaz\"\n};\n\nvar l68 = {\n code: \"sv\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"F\\xF6rra\",\n next: \"N\\xE4sta\",\n today: \"Idag\",\n month: \"M\\xE5nad\",\n week: \"Vecka\",\n day: \"Dag\",\n list: \"Program\"\n },\n buttonHints: {\n prev: function(buttonText) {\n return \"F\\xF6reg\\xE5ende \".concat(buttonText.toLocaleLowerCase());\n },\n next: function(buttonText) {\n return \"N\\xE4sta \".concat(buttonText.toLocaleLowerCase());\n },\n today: function(buttonText) {\n return (buttonText === \"Program\" ? \"Detta\" : \"Denna\") + \" \" + buttonText.toLocaleLowerCase();\n }\n },\n viewHint: \"$0 vy\",\n navLinkHint: \"G\\xE5 till $0\",\n moreLinkHint: function(eventCnt) {\n return \"Visa ytterligare \".concat(eventCnt, \" h\\xE4ndelse\").concat(eventCnt === 1 ? \"\" : \"r\");\n },\n weekText: \"v.\",\n weekTextLong: \"Vecka\",\n allDayText: \"Heldag\",\n moreLinkText: \"till\",\n noEventsText: \"Inga h\\xE4ndelser att visa\",\n closeHint: \"St\\xE4ng\",\n timeHint: \"Klockan\",\n eventHint: \"H\\xE4ndelse\"\n};\n\nvar l69 = {\n code: \"ta-in\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u0BAE\\u0BC1\\u0BA8\\u0BCD\\u0BA4\\u0BC8\\u0BAF\",\n next: \"\\u0B85\\u0B9F\\u0BC1\\u0BA4\\u0BCD\\u0BA4\\u0BA4\\u0BC1\",\n today: \"\\u0B87\\u0BA9\\u0BCD\\u0BB1\\u0BC1\",\n month: \"\\u0BAE\\u0BBE\\u0BA4\\u0BAE\\u0BCD\",\n week: \"\\u0BB5\\u0BBE\\u0BB0\\u0BAE\\u0BCD\",\n day: \"\\u0BA8\\u0BBE\\u0BB3\\u0BCD\",\n list: \"\\u0BA4\\u0BBF\\u0BA9\\u0B9A\\u0BB0\\u0BBF \\u0B85\\u0B9F\\u0BCD\\u0B9F\\u0BB5\\u0BA3\\u0BC8\"\n },\n weekText: \"\\u0BB5\\u0BBE\\u0BB0\\u0BAE\\u0BCD\",\n allDayText: \"\\u0BA8\\u0BBE\\u0BB3\\u0BCD \\u0BAE\\u0BC1\\u0BB4\\u0BC1\\u0BB5\\u0BA4\\u0BC1\\u0BAE\\u0BCD\",\n moreLinkText: function(n) {\n return \"+ \\u0BAE\\u0BC7\\u0BB2\\u0BC1\\u0BAE\\u0BCD \" + n;\n },\n noEventsText: \"\\u0B95\\u0BBE\\u0BA3\\u0BCD\\u0BAA\\u0BBF\\u0B95\\u0BCD\\u0B95 \\u0BA8\\u0BBF\\u0B95\\u0BB4\\u0BCD\\u0BB5\\u0BC1\\u0B95\\u0BB3\\u0BCD \\u0B87\\u0BB2\\u0BCD\\u0BB2\\u0BC8\"\n};\n\nvar l70 = {\n code: \"th\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2B\\u0E19\\u0E49\\u0E32\",\n next: \"\\u0E16\\u0E31\\u0E14\\u0E44\\u0E1B\",\n prevYear: \"\\u0E1B\\u0E35\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2B\\u0E19\\u0E49\\u0E32\",\n nextYear: \"\\u0E1B\\u0E35\\u0E16\\u0E31\\u0E14\\u0E44\\u0E1B\",\n year: \"\\u0E1B\\u0E35\",\n today: \"\\u0E27\\u0E31\\u0E19\\u0E19\\u0E35\\u0E49\",\n month: \"\\u0E40\\u0E14\\u0E37\\u0E2D\\u0E19\",\n week: \"\\u0E2A\\u0E31\\u0E1B\\u0E14\\u0E32\\u0E2B\\u0E4C\",\n day: \"\\u0E27\\u0E31\\u0E19\",\n list: \"\\u0E01\\u0E33\\u0E2B\\u0E19\\u0E14\\u0E01\\u0E32\\u0E23\"\n },\n weekText: \"\\u0E2A\\u0E31\\u0E1B\\u0E14\\u0E32\\u0E2B\\u0E4C\",\n allDayText: \"\\u0E15\\u0E25\\u0E2D\\u0E14\\u0E27\\u0E31\\u0E19\",\n moreLinkText: \"\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E40\\u0E15\\u0E34\\u0E21\",\n noEventsText: \"\\u0E44\\u0E21\\u0E48\\u0E21\\u0E35\\u0E01\\u0E34\\u0E08\\u0E01\\u0E23\\u0E23\\u0E21\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E41\\u0E2A\\u0E14\\u0E07\"\n};\n\nvar l71 = {\n code: \"tr\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"geri\",\n next: \"ileri\",\n today: \"bug\\xFCn\",\n month: \"Ay\",\n week: \"Hafta\",\n day: \"G\\xFCn\",\n list: \"Ajanda\"\n },\n weekText: \"Hf\",\n allDayText: \"T\\xFCm g\\xFCn\",\n moreLinkText: \"daha fazla\",\n noEventsText: \"G\\xF6sterilecek etkinlik yok\"\n};\n\nvar l72 = {\n code: \"ug\",\n buttonText: {\n month: \"\\u0626\\u0627\\u064A\",\n week: \"\\u06BE\\u06D5\\u067E\\u062A\\u06D5\",\n day: \"\\u0643\\u06C8\\u0646\",\n list: \"\\u0643\\u06C8\\u0646\\u062A\\u06D5\\u0631\\u062A\\u0649\\u067E\"\n },\n allDayText: \"\\u067E\\u06C8\\u062A\\u06C8\\u0646 \\u0643\\u06C8\\u0646\"\n};\n\nvar l73 = {\n code: \"uk\",\n week: {\n dow: 1,\n doy: 7\n },\n buttonText: {\n prev: \"\\u041F\\u043E\\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0456\\u0439\",\n next: \"\\u0434\\u0430\\u043B\\u0456\",\n today: \"\\u0421\\u044C\\u043E\\u0433\\u043E\\u0434\\u043D\\u0456\",\n month: \"\\u041C\\u0456\\u0441\\u044F\\u0446\\u044C\",\n week: \"\\u0422\\u0438\\u0436\\u0434\\u0435\\u043D\\u044C\",\n day: \"\\u0414\\u0435\\u043D\\u044C\",\n list: \"\\u041F\\u043E\\u0440\\u044F\\u0434\\u043E\\u043A \\u0434\\u0435\\u043D\\u043D\\u0438\\u0439\"\n },\n weekText: \"\\u0422\\u0438\\u0436\",\n allDayText: \"\\u0423\\u0432\\u0435\\u0441\\u044C \\u0434\\u0435\\u043D\\u044C\",\n moreLinkText: function(n) {\n return \"+\\u0449\\u0435 \" + n + \"...\";\n },\n noEventsText: \"\\u041D\\u0435\\u043C\\u0430\\u0454 \\u043F\\u043E\\u0434\\u0456\\u0439 \\u0434\\u043B\\u044F \\u0432\\u0456\\u0434\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u043D\\u044F\"\n};\n\nvar l74 = {\n code: \"uz\",\n buttonText: {\n month: \"Oy\",\n week: \"Xafta\",\n day: \"Kun\",\n list: \"Kun tartibi\"\n },\n allDayText: \"Kun bo'yi\",\n moreLinkText: function(n) {\n return \"+ yana \" + n;\n },\n noEventsText: \"Ko'rsatish uchun voqealar yo'q\"\n};\n\nvar l75 = {\n code: \"vi\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"Tr\\u01B0\\u1EDBc\",\n next: \"Ti\\u1EBFp\",\n today: \"H\\xF4m nay\",\n month: \"Th\\xE1ng\",\n week: \"Tu\\xE2\\u0300n\",\n day: \"Ng\\xE0y\",\n list: \"L\\u1ECBch bi\\u1EC3u\"\n },\n weekText: \"Tu\",\n allDayText: \"C\\u1EA3 ng\\xE0y\",\n moreLinkText: function(n) {\n return \"+ th\\xEAm \" + n;\n },\n noEventsText: \"Kh\\xF4ng c\\xF3 s\\u1EF1 ki\\u1EC7n \\u0111\\u1EC3 hi\\u1EC3n th\\u1ECB\"\n};\n\nvar l76 = {\n code: \"zh-cn\",\n week: {\n dow: 1,\n doy: 4\n },\n buttonText: {\n prev: \"\\u4E0A\\u6708\",\n next: \"\\u4E0B\\u6708\",\n today: \"\\u4ECA\\u5929\",\n month: \"\\u6708\",\n week: \"\\u5468\",\n day: \"\\u65E5\",\n list: \"\\u65E5\\u7A0B\"\n },\n weekText: \"\\u5468\",\n allDayText: \"\\u5168\\u5929\",\n moreLinkText: function(n) {\n return \"\\u53E6\\u5916 \" + n + \" \\u4E2A\";\n },\n noEventsText: \"\\u6CA1\\u6709\\u4E8B\\u4EF6\\u663E\\u793A\"\n};\n\nvar l77 = {\n code: \"zh-tw\",\n buttonText: {\n prev: \"\\u4E0A\\u6708\",\n next: \"\\u4E0B\\u6708\",\n today: \"\\u4ECA\\u5929\",\n month: \"\\u6708\",\n week: \"\\u9031\",\n day: \"\\u5929\",\n list: \"\\u6D3B\\u52D5\\u5217\\u8868\"\n },\n weekText: \"\\u5468\",\n allDayText: \"\\u6574\\u5929\",\n moreLinkText: \"\\u986F\\u793A\\u66F4\\u591A\",\n noEventsText: \"\\u6CA1\\u6709\\u4EFB\\u4F55\\u6D3B\\u52D5\"\n};\n\nvar localesAll = [\n l0,\n l1,\n l2,\n l3,\n l4,\n l5,\n l6,\n l7,\n l8,\n l9,\n l10,\n l11,\n l12,\n l13,\n l14,\n l15,\n l16,\n l17,\n l18,\n l19,\n l20,\n l21,\n l22,\n l23,\n l24,\n l25,\n l26,\n l27,\n l28,\n l29,\n l30,\n l31,\n l32,\n l33,\n l34,\n l35,\n l36,\n l37,\n l38,\n l39,\n l40,\n l41,\n l42,\n l43,\n l44,\n l45,\n l46,\n l47,\n l48,\n l49,\n l50,\n l51,\n l52,\n l53,\n l54,\n l55,\n l56,\n l57,\n l58,\n l59,\n l60,\n l61,\n l62,\n l63,\n l64,\n l65,\n l66,\n l67,\n l68,\n l69,\n l70,\n l71,\n l72,\n l73,\n l74,\n l75,\n l76,\n l77\n];\n\nexports.default = localesAll;\n","import * as react from 'react';\nimport * as reactDom from 'react-dom';\n(typeof globalThis !== 'undefined' ? globalThis : window).FullCalendarVDom = {\n Component: react.Component,\n createElement: react.createElement,\n render: reactDom.render,\n createRef: react.createRef,\n Fragment: react.Fragment,\n createContext: react.createContext,\n createPortal: reactDom.createPortal,\n flushSync: flushSync,\n unmountComponentAtNode: reactDom.unmountComponentAtNode // never called by FullCalendar's React component\n};\nexport function flushSync(callback) {\n // always sync from top-level\n callback();\n}\n//# sourceMappingURL=vdom.js.map","import { __assign, __extends } from \"tslib\";\nimport './vdom';\nimport * as React from 'react';\nimport { CalendarApi, CalendarDataProvider, CalendarContent, CalendarRoot } from '@fullcalendar/common';\nvar FullCalendar = /** @class */ (function (_super) {\n __extends(FullCalendar, _super);\n function FullCalendar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._calendarApi = new CalendarApi();\n return _this;\n }\n FullCalendar.prototype.render = function () {\n return (React.createElement(CalendarDataProvider, { optionOverrides: this.props, calendarApi: this._calendarApi }, function (data) { return (React.createElement(CalendarRoot, { options: data.calendarOptions, theme: data.theme, emitter: data.emitter }, function (classNames, height, isHeightAuto, forPrint) { return (React.createElement(\"div\", { className: classNames.join(' '), style: { height: height } },\n React.createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, data)))); })); }));\n };\n FullCalendar.prototype.getApi = function () {\n return this._calendarApi;\n };\n return FullCalendar;\n}(React.Component));\nexport default FullCalendar;\n// export all important utils/types\nexport * from '@fullcalendar/common';\n//# sourceMappingURL=main.js.map","//! 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","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","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","'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","import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n constructor() {\n this.payload = void 0;\n setAnimated(this, this);\n }\n\n getPayload() {\n return this.payload || [];\n }\n\n}\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n super();\n this.done = true;\n this.elapsedTime = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.v0 = void 0;\n this.durationProgress = 0;\n this._value = _value;\n\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n\n static create(value) {\n return new AnimatedValue(value);\n }\n\n getPayload() {\n return [this];\n }\n\n getValue() {\n return this._value;\n }\n\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n\n if (step) {\n value = Math.round(value / step) * step;\n\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n\n if (this._value === value) {\n return false;\n }\n\n this._value = value;\n return true;\n }\n\n reset() {\n const {\n done\n } = this;\n this.done = false;\n\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done) this.lastVelocity = null;\n this.v0 = null;\n }\n }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = void 0;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n\n static create(value) {\n return new AnimatedString(value);\n }\n\n getValue() {\n let value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n\n setValue(value) {\n if (is.str(value)) {\n if (value == this._string) {\n return false;\n }\n\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n\n return true;\n }\n\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n\n this._value = 0;\n super.reset();\n }\n\n}\n\nconst TreeContext = {\n dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n\n reset() {\n if (this.payload) {\n each(this.payload, node => node.reset());\n }\n }\n\n _makePayload(source) {\n if (source) {\n const payload = new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n\n const payload = getPayload(source);\n\n if (payload) {\n each(payload, node => this.add(node));\n }\n }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n\n static create(source) {\n return new AnimatedArray(source);\n }\n\n getValue() {\n return this.source.map(node => node.getValue());\n }\n\n setValue(source) {\n const payload = this.getPayload();\n\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n\n super.setValue(source.map(makeAnimated));\n return true;\n }\n\n}\n\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst withAnimated = (Component, host) => {\n const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && useCallback(value => {\n instanceRef.current = updateRef(givenRef, value);\n }, [givenRef]);\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n\n const callback = () => {\n const instance = instanceRef.current;\n\n if (hasInstance && !instance) {\n return;\n }\n\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useLayoutEffect(() => {\n const lastObserver = observerRef.current;\n observerRef.current = observer;\n each(deps, dep => addFluidObserver(dep, observer));\n\n if (lastObserver) {\n each(lastObserver.deps, dep => removeFluidObserver(dep, lastObserver));\n raf.cancel(lastObserver.update);\n }\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer = observerRef.current;\n each(observer.deps, dep => removeFluidObserver(dep, observer));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return React.createElement(Component, _extends({}, usedProps, {\n ref: ref\n }));\n });\n};\n\nclass PropsObserver {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n raf.write(this.update);\n }\n }\n\n}\n\nfunction getAnimatedState(props, host) {\n const dependencies = new Set();\n TreeContext.dependencies = dependencies;\n if (props.style) props = _extends({}, props, {\n style: host.createAnimatedStyle(props.style)\n });\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n if (ref) {\n if (is.fun(ref)) ref(value);else ref.current = value;\n }\n\n return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n applyAnimatedValues: _applyAnimatedValues = () => false,\n createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n getComponentProps: _getComponentProps = props => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues: _applyAnimatedValues,\n createAnimatedStyle: _createAnimatedStyle,\n getComponentProps: _getComponentProps\n };\n\n const animated = Component => {\n const displayName = getDisplayName(Component) || 'Anonymous';\n\n if (is.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n\n eachProp(components, (Component, key) => {\n if (is.arr(components)) {\n key = getDisplayName(Component);\n }\n\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n","import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n constructor() {\n this.payload = void 0;\n setAnimated(this, this);\n }\n\n getPayload() {\n return this.payload || [];\n }\n\n}\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n super();\n this.done = true;\n this.elapsedTime = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.v0 = void 0;\n this.durationProgress = 0;\n this._value = _value;\n\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n\n static create(value) {\n return new AnimatedValue(value);\n }\n\n getPayload() {\n return [this];\n }\n\n getValue() {\n return this._value;\n }\n\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n\n if (step) {\n value = Math.round(value / step) * step;\n\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n\n if (this._value === value) {\n return false;\n }\n\n this._value = value;\n return true;\n }\n\n reset() {\n const {\n done\n } = this;\n this.done = false;\n\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done) this.lastVelocity = null;\n this.v0 = null;\n }\n }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = void 0;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n\n static create(value) {\n return new AnimatedString(value);\n }\n\n getValue() {\n let value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n\n setValue(value) {\n if (is.str(value)) {\n if (value == this._string) {\n return false;\n }\n\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n\n return true;\n }\n\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n\n this._value = 0;\n super.reset();\n }\n\n}\n\nconst TreeContext = {\n dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n\n reset() {\n if (this.payload) {\n each(this.payload, node => node.reset());\n }\n }\n\n _makePayload(source) {\n if (source) {\n const payload = new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n\n const payload = getPayload(source);\n\n if (payload) {\n each(payload, node => this.add(node));\n }\n }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n\n static create(source) {\n return new AnimatedArray(source);\n }\n\n getValue() {\n return this.source.map(node => node.getValue());\n }\n\n setValue(source) {\n const payload = this.getPayload();\n\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n\n super.setValue(source.map(makeAnimated));\n return true;\n }\n\n}\n\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst withAnimated = (Component, host) => {\n const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && useCallback(value => {\n instanceRef.current = updateRef(givenRef, value);\n }, [givenRef]);\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n\n const callback = () => {\n const instance = instanceRef.current;\n\n if (hasInstance && !instance) {\n return;\n }\n\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useLayoutEffect(() => {\n observerRef.current = observer;\n each(deps, dep => addFluidObserver(dep, observer));\n return () => {\n if (observerRef.current) {\n each(observerRef.current.deps, dep => removeFluidObserver(dep, observerRef.current));\n raf.cancel(observerRef.current.update);\n }\n };\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer = observerRef.current;\n each(observer.deps, dep => removeFluidObserver(dep, observer));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return React.createElement(Component, _extends({}, usedProps, {\n ref: ref\n }));\n });\n};\n\nclass PropsObserver {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n raf.write(this.update);\n }\n }\n\n}\n\nfunction getAnimatedState(props, host) {\n const dependencies = new Set();\n TreeContext.dependencies = dependencies;\n if (props.style) props = _extends({}, props, {\n style: host.createAnimatedStyle(props.style)\n });\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n if (ref) {\n if (is.fun(ref)) ref(value);else ref.current = value;\n }\n\n return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n applyAnimatedValues: _applyAnimatedValues = () => false,\n createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n getComponentProps: _getComponentProps = props => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues: _applyAnimatedValues,\n createAnimatedStyle: _createAnimatedStyle,\n getComponentProps: _getComponentProps\n };\n\n const animated = Component => {\n const displayName = getDisplayName(Component) || 'Anonymous';\n\n if (is.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n\n eachProp(components, (Component, key) => {\n if (is.arr(components)) {\n key = getDisplayName(Component);\n }\n\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n","import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n constructor() {\n this.payload = void 0;\n setAnimated(this, this);\n }\n\n getPayload() {\n return this.payload || [];\n }\n\n}\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n super();\n this.done = true;\n this.elapsedTime = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.v0 = void 0;\n this.durationProgress = 0;\n this._value = _value;\n\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n\n static create(value) {\n return new AnimatedValue(value);\n }\n\n getPayload() {\n return [this];\n }\n\n getValue() {\n return this._value;\n }\n\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n\n if (step) {\n value = Math.round(value / step) * step;\n\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n\n if (this._value === value) {\n return false;\n }\n\n this._value = value;\n return true;\n }\n\n reset() {\n const {\n done\n } = this;\n this.done = false;\n\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done) this.lastVelocity = null;\n this.v0 = null;\n }\n }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = void 0;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n\n static create(value) {\n return new AnimatedString(value);\n }\n\n getValue() {\n let value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n\n setValue(value) {\n if (is.str(value)) {\n if (value == this._string) {\n return false;\n }\n\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n\n return true;\n }\n\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n\n this._value = 0;\n super.reset();\n }\n\n}\n\nconst TreeContext = {\n dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n\n reset() {\n if (this.payload) {\n each(this.payload, node => node.reset());\n }\n }\n\n _makePayload(source) {\n if (source) {\n const payload = new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n\n const payload = getPayload(source);\n\n if (payload) {\n each(payload, node => this.add(node));\n }\n }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n\n static create(source) {\n return new AnimatedArray(source);\n }\n\n getValue() {\n return this.source.map(node => node.getValue());\n }\n\n setValue(source) {\n const payload = this.getPayload();\n\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n\n super.setValue(source.map(makeAnimated));\n return true;\n }\n\n}\n\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst withAnimated = (Component, host) => {\n const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && useCallback(value => {\n instanceRef.current = updateRef(givenRef, value);\n }, [givenRef]);\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n\n const callback = () => {\n const instance = instanceRef.current;\n\n if (hasInstance && !instance) {\n return;\n }\n\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useLayoutEffect(() => {\n observerRef.current = observer;\n each(deps, dep => addFluidObserver(dep, observer));\n return () => {\n if (observerRef.current) {\n each(observerRef.current.deps, dep => removeFluidObserver(dep, observerRef.current));\n raf.cancel(observerRef.current.update);\n }\n };\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer = observerRef.current;\n each(observer.deps, dep => removeFluidObserver(dep, observer));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return React.createElement(Component, _extends({}, usedProps, {\n ref: ref\n }));\n });\n};\n\nclass PropsObserver {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n raf.write(this.update);\n }\n }\n\n}\n\nfunction getAnimatedState(props, host) {\n const dependencies = new Set();\n TreeContext.dependencies = dependencies;\n if (props.style) props = _extends({}, props, {\n style: host.createAnimatedStyle(props.style)\n });\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n if (ref) {\n if (is.fun(ref)) ref(value);else ref.current = value;\n }\n\n return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n applyAnimatedValues: _applyAnimatedValues = () => false,\n createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n getComponentProps: _getComponentProps = props => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues: _applyAnimatedValues,\n createAnimatedStyle: _createAnimatedStyle,\n getComponentProps: _getComponentProps\n };\n\n const animated = Component => {\n const displayName = getDisplayName(Component) || 'Anonymous';\n\n if (is.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n\n eachProp(components, (Component, key) => {\n if (is.arr(components)) {\n key = getDisplayName(Component);\n }\n\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n","let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n let time = raf.now() + ms;\n\n let cancel = () => {\n let i = timeouts.findIndex(t => t.cancel == cancel);\n if (~i) timeouts.splice(i, 1);\n pendingCount -= ~i ? 1 : 0;\n };\n\n let timeout = {\n time,\n handler,\n cancel\n };\n timeouts.splice(findTimeout(time), 0, timeout);\n pendingCount += 1;\n start();\n return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n onStartQueue.delete(fn);\n onFrameQueue.delete(fn);\n updateQueue.delete(fn);\n writeQueue.delete(fn);\n onFinishQueue.delete(fn);\n};\n\nraf.sync = fn => {\n sync = true;\n raf.batchedUpdates(fn);\n sync = false;\n};\n\nraf.throttle = fn => {\n let lastArgs;\n\n function queuedFn() {\n try {\n fn(...lastArgs);\n } finally {\n lastArgs = null;\n }\n }\n\n function throttled(...args) {\n lastArgs = args;\n raf.onStart(queuedFn);\n }\n\n throttled.handler = fn;\n\n throttled.cancel = () => {\n onStartQueue.delete(queuedFn);\n lastArgs = null;\n };\n\n return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n if (raf.frameLoop !== 'demand') {\n console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n } else {\n update();\n }\n};\n\nlet ts = -1;\nlet pendingCount = 0;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n if (sync) {\n queue.delete(fn);\n fn(0);\n } else {\n queue.add(fn);\n start();\n }\n}\n\nfunction start() {\n if (ts < 0) {\n ts = 0;\n\n if (raf.frameLoop !== 'demand') {\n nativeRaf(loop);\n }\n }\n}\n\nfunction stop() {\n ts = -1;\n}\n\nfunction loop() {\n if (~ts) {\n nativeRaf(loop);\n raf.batchedUpdates(update);\n }\n}\n\nfunction update() {\n let prevTs = ts;\n ts = raf.now();\n let count = findTimeout(ts);\n\n if (count) {\n eachSafely(timeouts.splice(0, count), t => t.handler());\n pendingCount -= count;\n }\n\n onStartQueue.flush();\n updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n onFrameQueue.flush();\n writeQueue.flush();\n onFinishQueue.flush();\n\n if (!pendingCount) {\n stop();\n }\n}\n\nfunction makeQueue() {\n let next = new Set();\n let current = next;\n return {\n add(fn) {\n pendingCount += current == next && !next.has(fn) ? 1 : 0;\n next.add(fn);\n },\n\n delete(fn) {\n pendingCount -= current == next && next.has(fn) ? 1 : 0;\n return next.delete(fn);\n },\n\n flush(arg) {\n if (current.size) {\n next = new Set();\n pendingCount -= current.size;\n eachSafely(current, fn => fn(arg) && next.add(fn));\n pendingCount += next.size;\n current = next;\n }\n }\n\n };\n}\n\nfunction eachSafely(values, each) {\n values.forEach(value => {\n try {\n each(value);\n } catch (e) {\n raf.catch(e);\n }\n });\n}\n\nconst __raf = {\n count() {\n return pendingCount;\n },\n\n isRunning() {\n return ts >= 0;\n },\n\n clear() {\n ts = -1;\n timeouts = [];\n onStartQueue = makeQueue();\n updateQueue = makeQueue();\n onFrameQueue = makeQueue();\n writeQueue = makeQueue();\n onFinishQueue = makeQueue();\n pendingCount = 0;\n }\n\n};\n\nexport { __raf, raf };\n","function _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nmodule.exports = _defineProperty;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import { config, elementClosest, Emitter, PointerDragEvent } from '@fullcalendar/common'\n\nconfig.touchMouseIgnoreWait = 500\n\nlet ignoreMouseDepth = 0\nlet listenerCnt = 0\nlet isWindowTouchMoveCancelled = false\n\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nexport class PointerDragging {\n containerEl: EventTarget\n subjectEl: HTMLElement | null = null\n emitter: Emitter<any>\n\n // options that can be directly assigned by caller\n selector: string = '' // will cause subjectEl in all emitted events to be this element\n handleSelector: string = ''\n shouldIgnoreMove: boolean = false\n shouldWatchScroll: boolean = true // for simulating pointermove on scroll\n\n // internal states\n isDragging: boolean = false\n isTouchDragging: boolean = false\n wasTouchScroll: boolean = false\n origPageX: number\n origPageY: number\n prevPageX: number\n prevPageY: number\n prevScrollX: number // at time of last pointer pageX/pageY capture\n prevScrollY: number // \"\n\n constructor(containerEl: EventTarget) {\n this.containerEl = containerEl\n this.emitter = new Emitter()\n containerEl.addEventListener('mousedown', this.handleMouseDown as EventListener)\n containerEl.addEventListener('touchstart', this.handleTouchStart as EventListener, { passive: true })\n listenerCreated()\n }\n\n destroy() {\n this.containerEl.removeEventListener('mousedown', this.handleMouseDown as EventListener)\n this.containerEl.removeEventListener('touchstart', this.handleTouchStart as EventListener, { passive: true } as AddEventListenerOptions)\n listenerDestroyed()\n }\n\n tryStart(ev: UIEvent): boolean {\n let subjectEl = this.querySubjectEl(ev)\n let downEl = ev.target as HTMLElement\n\n if (\n subjectEl &&\n (!this.handleSelector || elementClosest(downEl, this.handleSelector))\n ) {\n this.subjectEl = subjectEl\n this.isDragging = true // do this first so cancelTouchScroll will work\n this.wasTouchScroll = false\n\n return true\n }\n\n return false\n }\n\n cleanup() {\n isWindowTouchMoveCancelled = false\n this.isDragging = false\n this.subjectEl = null\n // keep wasTouchScroll around for later access\n this.destroyScrollWatch()\n }\n\n querySubjectEl(ev: UIEvent): HTMLElement {\n if (this.selector) {\n return elementClosest(ev.target as HTMLElement, this.selector)\n }\n return this.containerEl as HTMLElement\n }\n\n // Mouse\n // ----------------------------------------------------------------------------------------------------\n\n handleMouseDown = (ev: MouseEvent) => {\n if (\n !this.shouldIgnoreMouse() &&\n isPrimaryMouseButton(ev) &&\n this.tryStart(ev)\n ) {\n let pev = this.createEventFromMouse(ev, true)\n this.emitter.trigger('pointerdown', pev)\n this.initScrollWatch(pev)\n\n if (!this.shouldIgnoreMove) {\n document.addEventListener('mousemove', this.handleMouseMove)\n }\n\n document.addEventListener('mouseup', this.handleMouseUp)\n }\n }\n\n handleMouseMove = (ev: MouseEvent) => {\n let pev = this.createEventFromMouse(ev)\n this.recordCoords(pev)\n this.emitter.trigger('pointermove', pev)\n }\n\n handleMouseUp = (ev: MouseEvent) => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n\n this.emitter.trigger('pointerup', this.createEventFromMouse(ev))\n\n this.cleanup() // call last so that pointerup has access to props\n }\n\n shouldIgnoreMouse() {\n return ignoreMouseDepth || this.isTouchDragging\n }\n\n // Touch\n // ----------------------------------------------------------------------------------------------------\n\n handleTouchStart = (ev: TouchEvent) => {\n if (this.tryStart(ev)) {\n this.isTouchDragging = true\n\n let pev = this.createEventFromTouch(ev, true)\n this.emitter.trigger('pointerdown', pev)\n this.initScrollWatch(pev)\n\n // unlike mouse, need to attach to target, not document\n // https://stackoverflow.com/a/45760014\n let targetEl = ev.target as HTMLElement\n\n if (!this.shouldIgnoreMove) {\n targetEl.addEventListener('touchmove', this.handleTouchMove)\n }\n\n targetEl.addEventListener('touchend', this.handleTouchEnd)\n targetEl.addEventListener('touchcancel', this.handleTouchEnd) // treat it as a touch end\n\n // attach a handler to get called when ANY scroll action happens on the page.\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n // http://stackoverflow.com/a/32954565/96342\n window.addEventListener(\n 'scroll',\n this.handleTouchScroll,\n true, // useCapture\n )\n }\n }\n\n handleTouchMove = (ev: TouchEvent) => {\n let pev = this.createEventFromTouch(ev)\n this.recordCoords(pev)\n this.emitter.trigger('pointermove', pev)\n }\n\n handleTouchEnd = (ev: TouchEvent) => {\n if (this.isDragging) { // done to guard against touchend followed by touchcancel\n let targetEl = ev.target as HTMLElement\n\n targetEl.removeEventListener('touchmove', this.handleTouchMove)\n targetEl.removeEventListener('touchend', this.handleTouchEnd)\n targetEl.removeEventListener('touchcancel', this.handleTouchEnd)\n window.removeEventListener('scroll', this.handleTouchScroll, true) // useCaptured=true\n\n this.emitter.trigger('pointerup', this.createEventFromTouch(ev))\n\n this.cleanup() // call last so that pointerup has access to props\n this.isTouchDragging = false\n startIgnoringMouse()\n }\n }\n\n handleTouchScroll = () => {\n this.wasTouchScroll = true\n }\n\n // can be called by user of this class, to cancel touch-based scrolling for the current drag\n cancelTouchScroll() {\n if (this.isDragging) {\n isWindowTouchMoveCancelled = true\n }\n }\n\n // Scrolling that simulates pointermoves\n // ----------------------------------------------------------------------------------------------------\n\n initScrollWatch(ev: PointerDragEvent) {\n if (this.shouldWatchScroll) {\n this.recordCoords(ev)\n window.addEventListener('scroll', this.handleScroll, true) // useCapture=true\n }\n }\n\n recordCoords(ev: PointerDragEvent) {\n if (this.shouldWatchScroll) {\n this.prevPageX = (ev as any).pageX\n this.prevPageY = (ev as any).pageY\n this.prevScrollX = window.pageXOffset\n this.prevScrollY = window.pageYOffset\n }\n }\n\n handleScroll = (ev: UIEvent) => {\n if (!this.shouldIgnoreMove) {\n let pageX = (window.pageXOffset - this.prevScrollX) + this.prevPageX\n let pageY = (window.pageYOffset - this.prevScrollY) + this.prevPageY\n\n this.emitter.trigger('pointermove', {\n origEvent: ev,\n isTouch: this.isTouchDragging,\n subjectEl: this.subjectEl,\n pageX,\n pageY,\n deltaX: pageX - this.origPageX,\n deltaY: pageY - this.origPageY,\n } as PointerDragEvent)\n }\n }\n\n destroyScrollWatch() {\n if (this.shouldWatchScroll) {\n window.removeEventListener('scroll', this.handleScroll, true) // useCaptured=true\n }\n }\n\n // Event Normalization\n // ----------------------------------------------------------------------------------------------------\n\n createEventFromMouse(ev: MouseEvent, isFirst?: boolean): PointerDragEvent {\n let deltaX = 0\n let deltaY = 0\n\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = ev.pageX\n this.origPageY = ev.pageY\n } else {\n deltaX = ev.pageX - this.origPageX\n deltaY = ev.pageY - this.origPageY\n }\n\n return {\n origEvent: ev,\n isTouch: false,\n subjectEl: this.subjectEl,\n pageX: ev.pageX,\n pageY: ev.pageY,\n deltaX,\n deltaY,\n }\n }\n\n createEventFromTouch(ev: TouchEvent, isFirst?: boolean): PointerDragEvent {\n let touches = ev.touches\n let pageX\n let pageY\n let deltaX = 0\n let deltaY = 0\n\n // if touch coords available, prefer,\n // because FF would give bad ev.pageX ev.pageY\n if (touches && touches.length) {\n pageX = touches[0].pageX\n pageY = touches[0].pageY\n } else {\n pageX = (ev as any).pageX\n pageY = (ev as any).pageY\n }\n\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = pageX\n this.origPageY = pageY\n } else {\n deltaX = pageX - this.origPageX\n deltaY = pageY - this.origPageY\n }\n\n return {\n origEvent: ev,\n isTouch: true,\n subjectEl: this.subjectEl,\n pageX,\n pageY,\n deltaX,\n deltaY,\n }\n }\n}\n\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev: MouseEvent) {\n return ev.button === 0 && !ev.ctrlKey\n}\n\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\n\nfunction startIgnoringMouse() { // can be made non-class function\n ignoreMouseDepth += 1\n\n setTimeout(() => {\n ignoreMouseDepth -= 1\n }, config.touchMouseIgnoreWait)\n}\n\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\n\nfunction listenerCreated() {\n listenerCnt += 1\n\n if (listenerCnt === 1) {\n window.addEventListener('touchmove', onWindowTouchMove, { passive: false })\n }\n}\n\nfunction listenerDestroyed() {\n listenerCnt -= 1\n\n if (!listenerCnt) {\n window.removeEventListener('touchmove', onWindowTouchMove, { passive: false } as AddEventListenerOptions)\n }\n}\n\nfunction onWindowTouchMove(ev: UIEvent) {\n if (isWindowTouchMoveCancelled) {\n ev.preventDefault()\n }\n}\n","import { removeElement, applyStyle, whenTransitionDone, Rect } from '@fullcalendar/common'\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nexport class ElementMirror {\n isVisible: boolean = false // must be explicitly enabled\n origScreenX?: number\n origScreenY?: number\n deltaX?: number\n deltaY?: number\n sourceEl: HTMLElement | null = null\n mirrorEl: HTMLElement | null = null\n sourceElRect: Rect | null = null // screen coords relative to viewport\n\n // options that can be set directly by caller\n parentNode: HTMLElement = document.body // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n zIndex: number = 9999\n revertDuration: number = 0\n\n start(sourceEl: HTMLElement, pageX: number, pageY: number) {\n this.sourceEl = sourceEl\n this.sourceElRect = this.sourceEl.getBoundingClientRect()\n this.origScreenX = pageX - window.pageXOffset\n this.origScreenY = pageY - window.pageYOffset\n this.deltaX = 0\n this.deltaY = 0\n this.updateElPosition()\n }\n\n handleMove(pageX: number, pageY: number) {\n this.deltaX = (pageX - window.pageXOffset) - this.origScreenX!\n this.deltaY = (pageY - window.pageYOffset) - this.origScreenY!\n this.updateElPosition()\n }\n\n // can be called before start\n setIsVisible(bool: boolean) {\n if (bool) {\n if (!this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = ''\n }\n\n this.isVisible = bool // needs to happen before updateElPosition\n this.updateElPosition() // because was not updating the position while invisible\n }\n } else if (this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = 'none'\n }\n\n this.isVisible = bool\n }\n }\n\n // always async\n stop(needsRevertAnimation: boolean, callback: () => void) {\n let done = () => {\n this.cleanup()\n callback()\n }\n\n if (\n needsRevertAnimation &&\n this.mirrorEl &&\n this.isVisible &&\n this.revertDuration && // if 0, transition won't work\n (this.deltaX || this.deltaY) // if same coords, transition won't work\n ) {\n this.doRevertAnimation(done, this.revertDuration)\n } else {\n setTimeout(done, 0)\n }\n }\n\n doRevertAnimation(callback: () => void, revertDuration: number) {\n let mirrorEl = this.mirrorEl!\n let finalSourceElRect = this.sourceEl!.getBoundingClientRect() // because autoscrolling might have happened\n\n mirrorEl.style.transition =\n 'top ' + revertDuration + 'ms,' +\n 'left ' + revertDuration + 'ms'\n\n applyStyle(mirrorEl, {\n left: finalSourceElRect.left,\n top: finalSourceElRect.top,\n })\n\n whenTransitionDone(mirrorEl, () => {\n mirrorEl.style.transition = ''\n callback()\n })\n }\n\n cleanup() {\n if (this.mirrorEl) {\n removeElement(this.mirrorEl)\n this.mirrorEl = null\n }\n\n this.sourceEl = null\n }\n\n updateElPosition() {\n if (this.sourceEl && this.isVisible) {\n applyStyle(this.getMirrorEl(), {\n left: this.sourceElRect!.left + this.deltaX!,\n top: this.sourceElRect!.top + this.deltaY!,\n })\n }\n }\n\n getMirrorEl(): HTMLElement {\n let sourceElRect = this.sourceElRect!\n let mirrorEl = this.mirrorEl\n\n if (!mirrorEl) {\n mirrorEl = this.mirrorEl = this.sourceEl!.cloneNode(true) as HTMLElement // cloneChildren=true\n\n // we don't want long taps or any mouse interaction causing selection/menus.\n // would use preventSelection(), but that prevents selectstart, causing problems.\n mirrorEl.classList.add('fc-unselectable')\n\n mirrorEl.classList.add('fc-event-dragging')\n\n applyStyle(mirrorEl, {\n position: 'fixed',\n zIndex: this.zIndex,\n visibility: '', // in case original element was hidden by the drag effect\n boxSizing: 'border-box', // for easy width/height\n width: sourceElRect.right - sourceElRect.left, // explicit height in case there was a 'right' value\n height: sourceElRect.bottom - sourceElRect.top, // explicit width in case there was a 'bottom' value\n right: 'auto', // erase and set width instead\n bottom: 'auto', // erase and set height instead\n margin: 0,\n })\n\n this.parentNode.appendChild(mirrorEl)\n }\n\n return mirrorEl\n }\n}\n","import { Rect, ScrollController } from '@fullcalendar/common'\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nexport abstract class ScrollGeomCache extends ScrollController {\n clientRect: Rect\n origScrollTop: number\n origScrollLeft: number\n\n protected scrollController: ScrollController\n protected doesListening: boolean\n protected scrollTop: number\n protected scrollLeft: number\n protected scrollWidth: number\n protected scrollHeight: number\n protected clientWidth: number\n protected clientHeight: number\n\n constructor(scrollController: ScrollController, doesListening: boolean) {\n super()\n this.scrollController = scrollController\n this.doesListening = doesListening\n this.scrollTop = this.origScrollTop = scrollController.getScrollTop()\n this.scrollLeft = this.origScrollLeft = scrollController.getScrollLeft()\n this.scrollWidth = scrollController.getScrollWidth()\n this.scrollHeight = scrollController.getScrollHeight()\n this.clientWidth = scrollController.getClientWidth()\n this.clientHeight = scrollController.getClientHeight()\n this.clientRect = this.computeClientRect() // do last in case it needs cached values\n\n if (this.doesListening) {\n this.getEventTarget().addEventListener('scroll', this.handleScroll)\n }\n }\n\n abstract getEventTarget(): EventTarget\n abstract computeClientRect(): Rect\n\n destroy() {\n if (this.doesListening) {\n this.getEventTarget().removeEventListener('scroll', this.handleScroll)\n }\n }\n\n handleScroll = () => {\n this.scrollTop = this.scrollController.getScrollTop()\n this.scrollLeft = this.scrollController.getScrollLeft()\n this.handleScrollChange()\n }\n\n getScrollTop() {\n return this.scrollTop\n }\n\n getScrollLeft() {\n return this.scrollLeft\n }\n\n setScrollTop(top: number) {\n this.scrollController.setScrollTop(top)\n\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0)\n\n this.handleScrollChange()\n }\n }\n\n setScrollLeft(top: number) {\n this.scrollController.setScrollLeft(top)\n\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0)\n\n this.handleScrollChange()\n }\n }\n\n getClientWidth() {\n return this.clientWidth\n }\n\n getClientHeight() {\n return this.clientHeight\n }\n\n getScrollWidth() {\n return this.scrollWidth\n }\n\n getScrollHeight() {\n return this.scrollHeight\n }\n\n handleScrollChange() {\n }\n}\n","import { computeInnerRect, ElementScrollController } from '@fullcalendar/common'\nimport { ScrollGeomCache } from './ScrollGeomCache'\n\nexport class ElementScrollGeomCache extends ScrollGeomCache {\n constructor(el: HTMLElement, doesListening: boolean) {\n super(new ElementScrollController(el), doesListening)\n }\n\n getEventTarget(): EventTarget {\n return (this.scrollController as ElementScrollController).el\n }\n\n computeClientRect() {\n return computeInnerRect((this.scrollController as ElementScrollController).el)\n }\n}\n","import { Rect, WindowScrollController } from '@fullcalendar/common'\nimport { ScrollGeomCache } from './ScrollGeomCache'\n\nexport class WindowScrollGeomCache extends ScrollGeomCache {\n constructor(doesListening: boolean) {\n super(new WindowScrollController(), doesListening)\n }\n\n getEventTarget(): EventTarget {\n return window\n }\n\n computeClientRect(): Rect {\n return {\n left: this.scrollLeft,\n right: this.scrollLeft + this.clientWidth,\n top: this.scrollTop,\n bottom: this.scrollTop + this.clientHeight,\n }\n }\n\n // the window is the only scroll object that changes it's rectangle relative\n // to the document's topleft as it scrolls\n handleScrollChange() {\n this.clientRect = this.computeClientRect()\n }\n}\n","import { getElRoot } from '@fullcalendar/common'\nimport { ScrollGeomCache } from '../ScrollGeomCache'\nimport { ElementScrollGeomCache } from '../ElementScrollGeomCache'\nimport { WindowScrollGeomCache } from '../WindowScrollGeomCache'\n\ninterface Edge {\n scrollCache: ScrollGeomCache\n name: 'top' | 'left' | 'right' | 'bottom'\n distance: number // how many pixels the current pointer is from the edge\n}\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nconst getTime = typeof performance === 'function' ? (performance as any).now : Date.now\n\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nexport class AutoScroller {\n // options that can be set by caller\n isEnabled: boolean = true\n scrollQuery: (Window | string)[] = [window, '.fc-scroller']\n edgeThreshold: number = 50 // pixels\n maxVelocity: number = 300 // pixels per second\n\n // internal state\n pointerScreenX: number | null = null\n pointerScreenY: number | null = null\n isAnimating: boolean = false\n scrollCaches: ScrollGeomCache[] | null = null\n msSinceRequest?: number\n\n // protect against the initial pointerdown being too close to an edge and starting the scroll\n everMovedUp: boolean = false\n everMovedDown: boolean = false\n everMovedLeft: boolean = false\n everMovedRight: boolean = false\n\n start(pageX: number, pageY: number, scrollStartEl: HTMLElement) {\n if (this.isEnabled) {\n this.scrollCaches = this.buildCaches(scrollStartEl)\n this.pointerScreenX = null\n this.pointerScreenY = null\n this.everMovedUp = false\n this.everMovedDown = false\n this.everMovedLeft = false\n this.everMovedRight = false\n this.handleMove(pageX, pageY)\n }\n }\n\n handleMove(pageX: number, pageY: number) {\n if (this.isEnabled) {\n let pointerScreenX = pageX - window.pageXOffset\n let pointerScreenY = pageY - window.pageYOffset\n\n let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY\n let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX\n\n if (yDelta < 0) {\n this.everMovedUp = true\n } else if (yDelta > 0) {\n this.everMovedDown = true\n }\n\n if (xDelta < 0) {\n this.everMovedLeft = true\n } else if (xDelta > 0) {\n this.everMovedRight = true\n }\n\n this.pointerScreenX = pointerScreenX\n this.pointerScreenY = pointerScreenY\n\n if (!this.isAnimating) {\n this.isAnimating = true\n this.requestAnimation(getTime())\n }\n }\n }\n\n stop() {\n if (this.isEnabled) {\n this.isAnimating = false // will stop animation\n\n for (let scrollCache of this.scrollCaches!) {\n scrollCache.destroy()\n }\n\n this.scrollCaches = null\n }\n }\n\n requestAnimation(now: number) {\n this.msSinceRequest = now\n requestAnimationFrame(this.animate)\n }\n\n private animate = () => {\n if (this.isAnimating) { // wasn't cancelled between animation calls\n let edge = this.computeBestEdge(\n this.pointerScreenX! + window.pageXOffset,\n this.pointerScreenY! + window.pageYOffset,\n )\n\n if (edge) {\n let now = getTime()\n this.handleSide(edge, (now - this.msSinceRequest!) / 1000)\n this.requestAnimation(now)\n } else {\n this.isAnimating = false // will stop animation\n }\n }\n }\n\n private handleSide(edge: Edge, seconds: number) {\n let { scrollCache } = edge\n let { edgeThreshold } = this\n let invDistance = edgeThreshold - edge.distance\n let velocity = // the closer to the edge, the faster we scroll\n ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic\n this.maxVelocity * seconds\n let sign = 1\n\n switch (edge.name) {\n case 'left':\n sign = -1\n // falls through\n case 'right':\n scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign)\n break\n\n case 'top':\n sign = -1\n // falls through\n case 'bottom':\n scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign)\n break\n }\n }\n\n // left/top are relative to document topleft\n private computeBestEdge(left: number, top: number): Edge | null {\n let { edgeThreshold } = this\n let bestSide: Edge | null = null\n let scrollCaches = this.scrollCaches || []\n\n for (let scrollCache of scrollCaches) {\n let rect = scrollCache.clientRect\n let leftDist = left - rect.left\n let rightDist = rect.right - left\n let topDist = top - rect.top\n let bottomDist = rect.bottom - top\n\n // completely within the rect?\n if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n if (\n topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n (!bestSide || bestSide.distance > topDist)\n ) {\n bestSide = { scrollCache, name: 'top', distance: topDist }\n }\n\n if (\n bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n (!bestSide || bestSide.distance > bottomDist)\n ) {\n bestSide = { scrollCache, name: 'bottom', distance: bottomDist }\n }\n\n if (\n leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n (!bestSide || bestSide.distance > leftDist)\n ) {\n bestSide = { scrollCache, name: 'left', distance: leftDist }\n }\n\n if (\n rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n (!bestSide || bestSide.distance > rightDist)\n ) {\n bestSide = { scrollCache, name: 'right', distance: rightDist }\n }\n }\n }\n\n return bestSide\n }\n\n private buildCaches(scrollStartEl: HTMLElement) {\n return this.queryScrollEls(scrollStartEl).map((el) => {\n if (el === window) {\n return new WindowScrollGeomCache(false) // false = don't listen to user-generated scrolls\n }\n return new ElementScrollGeomCache(el, false) // false = don't listen to user-generated scrolls\n })\n }\n\n private queryScrollEls(scrollStartEl: HTMLElement) {\n let els = []\n\n for (let query of this.scrollQuery) {\n if (typeof query === 'object') {\n els.push(query)\n } else {\n els.push(...Array.prototype.slice.call(\n getElRoot(scrollStartEl).querySelectorAll(query),\n ))\n }\n }\n\n return els\n }\n}\n","import {\n PointerDragEvent,\n preventSelection,\n allowSelection,\n preventContextMenu,\n allowContextMenu,\n ElementDragging,\n} from '@fullcalendar/common'\nimport { PointerDragging } from './PointerDragging'\nimport { ElementMirror } from './ElementMirror'\nimport { AutoScroller } from './AutoScroller'\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nexport class FeaturefulElementDragging extends ElementDragging {\n pointer: PointerDragging\n mirror: ElementMirror\n autoScroller: AutoScroller\n\n // options that can be directly set by caller\n // the caller can also set the PointerDragging's options as well\n delay: number | null = null\n minDistance: number = 0\n touchScrollAllowed: boolean = true // prevents drag from starting and blocks scrolling during drag\n\n mirrorNeedsRevert: boolean = false\n isInteracting: boolean = false // is the user validly moving the pointer? lasts until pointerup\n isDragging: boolean = false // is it INTENTFULLY dragging? lasts until after revert animation\n isDelayEnded: boolean = false\n isDistanceSurpassed: boolean = false\n delayTimeoutId: number | null = null\n\n constructor(private containerEl: HTMLElement, selector?: string) {\n super(containerEl)\n\n let pointer = this.pointer = new PointerDragging(containerEl)\n pointer.emitter.on('pointerdown', this.onPointerDown)\n pointer.emitter.on('pointermove', this.onPointerMove)\n pointer.emitter.on('pointerup', this.onPointerUp)\n\n if (selector) {\n pointer.selector = selector\n }\n\n this.mirror = new ElementMirror()\n this.autoScroller = new AutoScroller()\n }\n\n destroy() {\n this.pointer.destroy()\n\n // HACK: simulate a pointer-up to end the current drag\n // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n this.onPointerUp({} as any)\n }\n\n onPointerDown = (ev: PointerDragEvent) => {\n if (!this.isDragging) { // so new drag doesn't happen while revert animation is going\n this.isInteracting = true\n this.isDelayEnded = false\n this.isDistanceSurpassed = false\n\n preventSelection(document.body)\n preventContextMenu(document.body)\n\n // prevent links from being visited if there's an eventual drag.\n // also prevents selection in older browsers (maybe?).\n // not necessary for touch, besides, browser would complain about passiveness.\n if (!ev.isTouch) {\n ev.origEvent.preventDefault()\n }\n\n this.emitter.trigger('pointerdown', ev)\n\n if (\n this.isInteracting && // not destroyed via pointerdown handler\n !this.pointer.shouldIgnoreMove\n ) {\n // actions related to initiating dragstart+dragmove+dragend...\n\n this.mirror.setIsVisible(false) // reset. caller must set-visible\n this.mirror.start(ev.subjectEl as HTMLElement, ev.pageX, ev.pageY) // must happen on first pointer down\n\n this.startDelay(ev)\n\n if (!this.minDistance) {\n this.handleDistanceSurpassed(ev)\n }\n }\n }\n }\n\n onPointerMove = (ev: PointerDragEvent) => {\n if (this.isInteracting) {\n this.emitter.trigger('pointermove', ev)\n\n if (!this.isDistanceSurpassed) {\n let minDistance = this.minDistance\n let distanceSq // current distance from the origin, squared\n let { deltaX, deltaY } = ev\n\n distanceSq = deltaX * deltaX + deltaY * deltaY\n if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n this.handleDistanceSurpassed(ev)\n }\n }\n\n if (this.isDragging) {\n // a real pointer move? (not one simulated by scrolling)\n if (ev.origEvent.type !== 'scroll') {\n this.mirror.handleMove(ev.pageX, ev.pageY)\n this.autoScroller.handleMove(ev.pageX, ev.pageY)\n }\n\n this.emitter.trigger('dragmove', ev)\n }\n }\n }\n\n onPointerUp = (ev: PointerDragEvent) => {\n if (this.isInteracting) {\n this.isInteracting = false\n\n allowSelection(document.body)\n allowContextMenu(document.body)\n\n this.emitter.trigger('pointerup', ev) // can potentially set mirrorNeedsRevert\n\n if (this.isDragging) {\n this.autoScroller.stop()\n this.tryStopDrag(ev) // which will stop the mirror\n }\n\n if (this.delayTimeoutId) {\n clearTimeout(this.delayTimeoutId)\n this.delayTimeoutId = null\n }\n }\n }\n\n startDelay(ev: PointerDragEvent) {\n if (typeof this.delay === 'number') {\n this.delayTimeoutId = setTimeout(() => {\n this.delayTimeoutId = null\n this.handleDelayEnd(ev)\n }, this.delay) as any // not assignable to number!\n } else {\n this.handleDelayEnd(ev)\n }\n }\n\n handleDelayEnd(ev: PointerDragEvent) {\n this.isDelayEnded = true\n this.tryStartDrag(ev)\n }\n\n handleDistanceSurpassed(ev: PointerDragEvent) {\n this.isDistanceSurpassed = true\n this.tryStartDrag(ev)\n }\n\n tryStartDrag(ev: PointerDragEvent) {\n if (this.isDelayEnded && this.isDistanceSurpassed) {\n if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n this.isDragging = true\n this.mirrorNeedsRevert = false\n\n this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl)\n this.emitter.trigger('dragstart', ev)\n\n if (this.touchScrollAllowed === false) {\n this.pointer.cancelTouchScroll()\n }\n }\n }\n }\n\n tryStopDrag(ev: PointerDragEvent) {\n // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n // that come from the document to fire beforehand. much more convenient this way.\n this.mirror.stop(\n this.mirrorNeedsRevert,\n this.stopDrag.bind(this, ev), // bound with args\n )\n }\n\n stopDrag(ev: PointerDragEvent) {\n this.isDragging = false\n this.emitter.trigger('dragend', ev)\n }\n\n // fill in the implementations...\n\n setIgnoreMove(bool: boolean) {\n this.pointer.shouldIgnoreMove = bool\n }\n\n setMirrorIsVisible(bool: boolean) {\n this.mirror.setIsVisible(bool)\n }\n\n setMirrorNeedsRevert(bool: boolean) {\n this.mirrorNeedsRevert = bool\n }\n\n setAutoScrollEnabled(bool: boolean) {\n this.autoScroller.isEnabled = bool\n }\n}\n","import {\n getClippingParents, computeRect,\n pointInsideRect, Rect,\n} from '@fullcalendar/common'\nimport { ElementScrollGeomCache } from './ElementScrollGeomCache'\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nexport class OffsetTracker { // ElementOffsetTracker\n scrollCaches: ElementScrollGeomCache[]\n origRect: Rect\n\n constructor(el: HTMLElement) {\n this.origRect = computeRect(el)\n\n // will work fine for divs that have overflow:hidden\n this.scrollCaches = getClippingParents(el).map(\n (scrollEl) => new ElementScrollGeomCache(scrollEl, true), // listen=true\n )\n }\n\n destroy() {\n for (let scrollCache of this.scrollCaches) {\n scrollCache.destroy()\n }\n }\n\n computeLeft() {\n let left = this.origRect.left\n\n for (let scrollCache of this.scrollCaches) {\n left += scrollCache.origScrollLeft - scrollCache.getScrollLeft()\n }\n\n return left\n }\n\n computeTop() {\n let top = this.origRect.top\n\n for (let scrollCache of this.scrollCaches) {\n top += scrollCache.origScrollTop - scrollCache.getScrollTop()\n }\n\n return top\n }\n\n isWithinClipping(pageX: number, pageY: number): boolean {\n let point = { left: pageX, top: pageY }\n\n for (let scrollCache of this.scrollCaches) {\n if (\n !isIgnoredClipping(scrollCache.getEventTarget()) &&\n !pointInsideRect(point, scrollCache.clientRect)\n ) {\n return false\n }\n }\n\n return true\n }\n}\n\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node: EventTarget) {\n let tagName = (node as HTMLElement).tagName\n\n return tagName === 'HTML' || tagName === 'BODY'\n}\n","import {\n Emitter, PointerDragEvent,\n isDateSpansEqual,\n computeRect,\n constrainPoint, intersectRects, getRectCenter, diffPoints, Point,\n rangeContainsRange,\n Hit,\n InteractionSettingsStore,\n mapHash,\n ElementDragging,\n} from '@fullcalendar/common'\nimport { OffsetTracker } from '../OffsetTracker'\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nexport class HitDragging {\n droppableStore: InteractionSettingsStore\n dragging: ElementDragging\n emitter: Emitter<any>\n\n // options that can be set by caller\n useSubjectCenter: boolean = false\n requireInitial: boolean = true // if doesn't start out on a hit, won't emit any events\n\n // internal state\n offsetTrackers: { [componentUid: string]: OffsetTracker }\n initialHit: Hit | null = null\n movingHit: Hit | null = null\n finalHit: Hit | null = null // won't ever be populated if shouldIgnoreMove\n coordAdjust?: Point\n\n constructor(dragging: ElementDragging, droppableStore: InteractionSettingsStore) {\n this.droppableStore = droppableStore\n\n dragging.emitter.on('pointerdown', this.handlePointerDown)\n dragging.emitter.on('dragstart', this.handleDragStart)\n dragging.emitter.on('dragmove', this.handleDragMove)\n dragging.emitter.on('pointerup', this.handlePointerUp)\n dragging.emitter.on('dragend', this.handleDragEnd)\n\n this.dragging = dragging\n this.emitter = new Emitter()\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n let { dragging } = this\n\n this.initialHit = null\n this.movingHit = null\n this.finalHit = null\n\n this.prepareHits()\n this.processFirstCoord(ev)\n\n if (this.initialHit || !this.requireInitial) {\n dragging.setIgnoreMove(false)\n\n // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n this.emitter.trigger('pointerdown', ev)\n } else {\n dragging.setIgnoreMove(true)\n }\n }\n\n // sets initialHit\n // sets coordAdjust\n processFirstCoord(ev: PointerDragEvent) {\n let origPoint = { left: ev.pageX, top: ev.pageY }\n let adjustedPoint = origPoint\n let subjectEl = ev.subjectEl\n let subjectRect\n\n if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot\n subjectRect = computeRect(subjectEl)\n adjustedPoint = constrainPoint(adjustedPoint, subjectRect)\n }\n\n let initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top)\n if (initialHit) {\n if (this.useSubjectCenter && subjectRect) {\n let slicedSubjectRect = intersectRects(subjectRect, initialHit.rect)\n if (slicedSubjectRect) {\n adjustedPoint = getRectCenter(slicedSubjectRect)\n }\n }\n\n this.coordAdjust = diffPoints(adjustedPoint, origPoint)\n } else {\n this.coordAdjust = { left: 0, top: 0 }\n }\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n this.emitter.trigger('dragstart', ev)\n this.handleMove(ev, true) // force = fire even if initially null\n }\n\n handleDragMove = (ev: PointerDragEvent) => {\n this.emitter.trigger('dragmove', ev)\n this.handleMove(ev)\n }\n\n handlePointerUp = (ev: PointerDragEvent) => {\n this.releaseHits()\n this.emitter.trigger('pointerup', ev)\n }\n\n handleDragEnd = (ev: PointerDragEvent) => {\n if (this.movingHit) {\n this.emitter.trigger('hitupdate', null, true, ev)\n }\n\n this.finalHit = this.movingHit\n this.movingHit = null\n this.emitter.trigger('dragend', ev)\n }\n\n handleMove(ev: PointerDragEvent, forceHandle?: boolean) {\n let hit = this.queryHitForOffset(\n ev.pageX + this.coordAdjust!.left,\n ev.pageY + this.coordAdjust!.top,\n )\n\n if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n this.movingHit = hit\n this.emitter.trigger('hitupdate', hit, false, ev)\n }\n }\n\n prepareHits() {\n this.offsetTrackers = mapHash(this.droppableStore, (interactionSettings) => {\n interactionSettings.component.prepareHits()\n return new OffsetTracker(interactionSettings.el)\n })\n }\n\n releaseHits() {\n let { offsetTrackers } = this\n\n for (let id in offsetTrackers) {\n offsetTrackers[id].destroy()\n }\n\n this.offsetTrackers = {}\n }\n\n queryHitForOffset(offsetLeft: number, offsetTop: number): Hit | null {\n let { droppableStore, offsetTrackers } = this\n let bestHit: Hit | null = null\n\n for (let id in droppableStore) {\n let component = droppableStore[id].component\n let offsetTracker = offsetTrackers[id]\n\n if (\n offsetTracker && // wasn't destroyed mid-drag\n offsetTracker.isWithinClipping(offsetLeft, offsetTop)\n ) {\n let originLeft = offsetTracker.computeLeft()\n let originTop = offsetTracker.computeTop()\n let positionLeft = offsetLeft - originLeft\n let positionTop = offsetTop - originTop\n let { origRect } = offsetTracker\n let width = origRect.right - origRect.left\n let height = origRect.bottom - origRect.top\n\n if (\n // must be within the element's bounds\n positionLeft >= 0 && positionLeft < width &&\n positionTop >= 0 && positionTop < height\n ) {\n let hit = component.queryHit(positionLeft, positionTop, width, height)\n if (\n hit && (\n // make sure the hit is within activeRange, meaning it's not a dead cell\n rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)\n ) &&\n (!bestHit || hit.layer > bestHit.layer)\n ) {\n hit.componentId = id\n hit.context = component.context\n\n // TODO: better way to re-orient rectangle\n hit.rect.left += originLeft\n hit.rect.right += originLeft\n hit.rect.top += originTop\n hit.rect.bottom += originTop\n\n bestHit = hit\n }\n }\n }\n }\n\n return bestHit\n }\n}\n\nexport function isHitsEqual(hit0: Hit | null, hit1: Hit | null): boolean {\n if (!hit0 && !hit1) {\n return true\n }\n\n if (Boolean(hit0) !== Boolean(hit1)) {\n return false\n }\n\n return isDateSpansEqual(hit0!.dateSpan, hit1!.dateSpan)\n}\n","import { DateSpan, CalendarContext, DatePointApi, DateEnv, ViewApi, EventApi } from '@fullcalendar/common'\nimport { __assign } from 'tslib'\n\nexport interface DropArg extends DatePointApi {\n draggedEl: HTMLElement\n jsEvent: MouseEvent\n view: ViewApi\n}\n\nexport type EventReceiveArg = EventReceiveLeaveArg\nexport type EventLeaveArg = EventReceiveLeaveArg\nexport interface EventReceiveLeaveArg { // will this become public?\n draggedEl: HTMLElement\n event: EventApi\n relatedEvents: EventApi[]\n revert: () => void\n view: ViewApi\n}\n\nexport function buildDatePointApiWithContext(dateSpan: DateSpan, context: CalendarContext) {\n let props = {} as DatePointApi\n\n for (let transform of context.pluginHooks.datePointTransforms) {\n __assign(props, transform(dateSpan, context))\n }\n\n __assign(props, buildDatePointApi(dateSpan, context.dateEnv))\n\n return props\n}\n\nexport function buildDatePointApi(span: DateSpan, dateEnv: DateEnv): DatePointApi {\n return {\n date: dateEnv.toDate(span.range.start),\n dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n allDay: span.allDay,\n }\n}\n","import {\n PointerDragEvent, Interaction, InteractionSettings, interactionSettingsToStore,\n DatePointApi,\n ViewApi,\n} from '@fullcalendar/common'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport interface DateClickArg extends DatePointApi {\n dayEl: HTMLElement\n jsEvent: MouseEvent\n view: ViewApi\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nexport class DateClicking extends Interaction {\n dragging: FeaturefulElementDragging\n hitDragging: HitDragging\n\n constructor(settings: InteractionSettings) {\n super(settings)\n\n // we DO want to watch pointer moves because otherwise finalHit won't get populated\n this.dragging = new FeaturefulElementDragging(settings.el)\n this.dragging.autoScroller.isEnabled = false\n\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n hitDragging.emitter.on('dragend', this.handleDragEnd)\n }\n\n destroy() {\n this.dragging.destroy()\n }\n\n handlePointerDown = (pev: PointerDragEvent) => {\n let { dragging } = this\n let downEl = pev.origEvent.target as HTMLElement\n\n // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n dragging.setIgnoreMove(\n !this.component.isValidDateDownEl(downEl),\n )\n }\n\n // won't even fire if moving was ignored\n handleDragEnd = (ev: PointerDragEvent) => {\n let { component } = this\n let { pointer } = this.dragging\n\n if (!pointer.wasTouchScroll) {\n let { initialHit, finalHit } = this.hitDragging\n\n if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n let { context } = component\n let arg: DateClickArg = {\n ...buildDatePointApiWithContext(initialHit.dateSpan, context),\n dayEl: initialHit.dayEl,\n jsEvent: ev.origEvent as MouseEvent,\n view: context.viewApi || context.calendarApi.view,\n }\n\n context.emitter.trigger('dateClick', arg)\n }\n }\n }\n}\n","import {\n compareNumbers, enableCursor, disableCursor, DateComponent, Hit,\n DateSpan, PointerDragEvent, dateSelectionJoinTransformer,\n Interaction, InteractionSettings, interactionSettingsToStore,\n triggerDateSelect, isDateSelectionValid,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nexport class DateSelecting extends Interaction {\n dragging: FeaturefulElementDragging\n hitDragging: HitDragging\n dragSelection: DateSpan | null = null\n\n constructor(settings: InteractionSettings) {\n super(settings)\n let { component } = settings\n let { options } = component.context\n\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n dragging.touchScrollAllowed = false\n dragging.minDistance = options.selectMinDistance || 0\n dragging.autoScroller.isEnabled = options.dragScroll\n\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n hitDragging.emitter.on('dragstart', this.handleDragStart)\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n hitDragging.emitter.on('pointerup', this.handlePointerUp)\n }\n\n destroy() {\n this.dragging.destroy()\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n let { component, dragging } = this\n let { options } = component.context\n\n let canSelect = options.selectable &&\n component.isValidDateDownEl(ev.origEvent.target as HTMLElement)\n\n // don't bother to watch expensive moves if component won't do selection\n dragging.setIgnoreMove(!canSelect)\n\n // if touch, require user to hold down\n dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n this.component.context.calendarApi.unselect(ev) // unselect previous selections\n }\n\n handleHitUpdate = (hit: Hit | null, isFinal: boolean) => {\n let { context } = this.component\n let dragSelection: DateSpan | null = null\n let isInvalid = false\n\n if (hit) {\n let initialHit = this.hitDragging.initialHit!\n let disallowed = hit.componentId === initialHit.componentId\n && this.isHitComboAllowed\n && !this.isHitComboAllowed(initialHit, hit)\n\n if (!disallowed) {\n dragSelection = joinHitsIntoSelection(\n initialHit,\n hit,\n context.pluginHooks.dateSelectionTransformers,\n )\n }\n\n if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n isInvalid = true\n dragSelection = null\n }\n }\n\n if (dragSelection) {\n context.dispatch({ type: 'SELECT_DATES', selection: dragSelection })\n } else if (!isFinal) { // only unselect if moved away while dragging\n context.dispatch({ type: 'UNSELECT_DATES' })\n }\n\n if (!isInvalid) {\n enableCursor()\n } else {\n disableCursor()\n }\n\n if (!isFinal) {\n this.dragSelection = dragSelection // only clear if moved away from all hits while dragging\n }\n }\n\n handlePointerUp = (pev: PointerDragEvent) => {\n if (this.dragSelection) {\n // selection is already rendered, so just need to report selection\n triggerDateSelect(this.dragSelection, pev, this.component.context)\n\n this.dragSelection = null\n }\n }\n}\n\nfunction getComponentTouchDelay(component: DateComponent<any>): number {\n let { options } = component.context\n let delay = options.selectLongPressDelay\n\n if (delay == null) {\n delay = options.longPressDelay\n }\n\n return delay\n}\n\nfunction joinHitsIntoSelection(hit0: Hit, hit1: Hit, dateSelectionTransformers: dateSelectionJoinTransformer[]): DateSpan {\n let dateSpan0 = hit0.dateSpan\n let dateSpan1 = hit1.dateSpan\n let ms = [\n dateSpan0.range.start,\n dateSpan0.range.end,\n dateSpan1.range.start,\n dateSpan1.range.end,\n ]\n\n ms.sort(compareNumbers)\n\n let props = {} as DateSpan\n\n for (let transformer of dateSelectionTransformers) {\n let res = transformer(hit0, hit1)\n\n if (res === false) {\n return null\n }\n\n if (res) {\n __assign(props, res)\n }\n }\n\n props.range = { start: ms[0], end: ms[3] }\n props.allDay = dateSpan0.allDay\n\n return props\n}\n","import {\n DateComponent, Seg,\n PointerDragEvent, Hit,\n EventMutation, applyMutationToEventStore,\n startOfDay,\n elementClosest,\n EventStore, getRelevantEvents, createEmptyEventStore,\n EventInteractionState,\n diffDates, enableCursor, disableCursor,\n EventRenderRange, getElSeg,\n EventApi,\n eventDragMutationMassager,\n Interaction, InteractionSettings, interactionSettingsStore,\n EventDropTransformers,\n CalendarContext,\n ViewApi,\n EventChangeArg,\n buildEventApis,\n EventAddArg,\n EventRemoveArg,\n isInteractionValid,\n getElRoot,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport type EventDragStopArg = EventDragArg\nexport type EventDragStartArg = EventDragArg\n\nexport interface EventDragArg {\n el: HTMLElement\n event: EventApi\n jsEvent: MouseEvent\n view: ViewApi\n}\n\nexport class EventDragging extends Interaction { // TODO: rename to EventSelectingAndDragging\n // TODO: test this in IE11\n // QUESTION: why do we need it on the resizable???\n static SELECTOR = '.fc-event-draggable, .fc-event-resizable'\n\n dragging: FeaturefulElementDragging\n hitDragging: HitDragging\n\n // internal state\n subjectEl: HTMLElement | null = null\n subjectSeg: Seg | null = null // the seg being selected/dragged\n isDragging: boolean = false\n eventRange: EventRenderRange | null = null\n relevantEvents: EventStore | null = null // the events being dragged\n receivingContext: CalendarContext | null = null\n validMutation: EventMutation | null = null\n mutatedRelevantEvents: EventStore | null = null\n\n constructor(settings: InteractionSettings) {\n super(settings)\n let { component } = this\n let { options } = component.context\n\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n dragging.pointer.selector = EventDragging.SELECTOR\n dragging.touchScrollAllowed = false\n dragging.autoScroller.isEnabled = options.dragScroll\n\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsStore)\n hitDragging.useSubjectCenter = settings.useEventCenter\n hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n hitDragging.emitter.on('dragstart', this.handleDragStart)\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n hitDragging.emitter.on('pointerup', this.handlePointerUp)\n hitDragging.emitter.on('dragend', this.handleDragEnd)\n }\n\n destroy() {\n this.dragging.destroy()\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n let origTarget = ev.origEvent.target as HTMLElement\n let { component, dragging } = this\n let { mirror } = dragging\n let { options } = component.context\n let initialContext = component.context\n this.subjectEl = ev.subjectEl as HTMLElement\n let subjectSeg = this.subjectSeg = getElSeg(ev.subjectEl as HTMLElement)!\n let eventRange = this.eventRange = subjectSeg.eventRange!\n let eventInstanceId = eventRange.instance!.instanceId\n\n this.relevantEvents = getRelevantEvents(\n initialContext.getCurrentData().eventStore,\n eventInstanceId,\n )\n\n dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance\n dragging.delay =\n // only do a touch delay if touch and this event hasn't been selected yet\n (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n getComponentTouchDelay(component) :\n null\n\n if (options.fixedMirrorParent) {\n mirror.parentNode = options.fixedMirrorParent\n } else {\n mirror.parentNode = elementClosest(origTarget, '.fc')\n }\n\n mirror.revertDuration = options.dragRevertDuration\n\n let isValid =\n component.isValidSegDownEl(origTarget) &&\n !elementClosest(origTarget, '.fc-event-resizer') // NOT on a resizer\n\n dragging.setIgnoreMove(!isValid)\n\n // disable dragging for elements that are resizable (ie, selectable)\n // but are not draggable\n this.isDragging = isValid &&\n (ev.subjectEl as HTMLElement).classList.contains('fc-event-draggable')\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n let initialContext = this.component.context\n let eventRange = this.eventRange!\n let eventInstanceId = eventRange.instance.instanceId\n\n if (ev.isTouch) {\n // need to select a different event?\n if (eventInstanceId !== this.component.props.eventSelection) {\n initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId })\n }\n } else {\n // if now using mouse, but was previous touch interaction, clear selected event\n initialContext.dispatch({ type: 'UNSELECT_EVENT' })\n }\n\n if (this.isDragging) {\n initialContext.calendarApi.unselect(ev) // unselect *date* selection\n initialContext.emitter.trigger('eventDragStart', {\n el: this.subjectEl,\n event: new EventApi(initialContext, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: initialContext.viewApi,\n } as EventDragStartArg)\n }\n }\n\n handleHitUpdate = (hit: Hit | null, isFinal: boolean) => {\n if (!this.isDragging) {\n return\n }\n\n let relevantEvents = this.relevantEvents!\n let initialHit = this.hitDragging.initialHit!\n let initialContext = this.component.context\n\n // states based on new hit\n let receivingContext: CalendarContext | null = null\n let mutation: EventMutation | null = null\n let mutatedRelevantEvents: EventStore | null = null\n let isInvalid = false\n let interaction: EventInteractionState = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n }\n\n if (hit) {\n receivingContext = hit.context\n let receivingOptions = receivingContext.options\n\n if (\n initialContext === receivingContext ||\n (receivingOptions.editable && receivingOptions.droppable)\n ) {\n mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers)\n\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(\n relevantEvents,\n receivingContext.getCurrentData().eventUiBases,\n mutation,\n receivingContext,\n )\n interaction.mutatedEvents = mutatedRelevantEvents\n\n if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n isInvalid = true\n mutation = null\n mutatedRelevantEvents = null\n interaction.mutatedEvents = createEmptyEventStore()\n }\n }\n } else {\n receivingContext = null\n }\n }\n\n this.displayDrag(receivingContext, interaction)\n\n if (!isInvalid) {\n enableCursor()\n } else {\n disableCursor()\n }\n\n if (!isFinal) {\n if (\n initialContext === receivingContext && // TODO: write test for this\n isHitsEqual(initialHit, hit)\n ) {\n mutation = null\n }\n\n this.dragging.setMirrorNeedsRevert(!mutation)\n\n // render the mirror if no already-rendered mirror\n // TODO: wish we could somehow wait for dispatch to guarantee render\n this.dragging.setMirrorIsVisible(\n !hit || !getElRoot(this.subjectEl).querySelector('.fc-event-mirror'), // TODO: turn className into constant\n )\n\n // assign states based on new hit\n this.receivingContext = receivingContext\n this.validMutation = mutation\n this.mutatedRelevantEvents = mutatedRelevantEvents\n }\n }\n\n handlePointerUp = () => {\n if (!this.isDragging) {\n this.cleanup() // because handleDragEnd won't fire\n }\n }\n\n handleDragEnd = (ev: PointerDragEvent) => {\n if (this.isDragging) {\n let initialContext = this.component.context\n let initialView = initialContext.viewApi\n let { receivingContext, validMutation } = this\n let eventDef = this.eventRange!.def\n let eventInstance = this.eventRange!.instance\n let eventApi = new EventApi(initialContext, eventDef, eventInstance)\n let relevantEvents = this.relevantEvents!\n let mutatedRelevantEvents = this.mutatedRelevantEvents!\n let { finalHit } = this.hitDragging\n\n this.clearDrag() // must happen after revert animation\n\n initialContext.emitter.trigger('eventDragStop', {\n el: this.subjectEl,\n event: eventApi,\n jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: initialView,\n } as EventDragStopArg)\n\n if (validMutation) {\n // dropped within same calendar\n if (receivingContext === initialContext) {\n let updatedEventApi = new EventApi(\n initialContext,\n mutatedRelevantEvents.defs[eventDef.defId],\n eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null,\n )\n\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents,\n })\n\n let eventChangeArg: EventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, initialContext, eventInstance),\n revert() {\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents, // the pre-change data\n })\n },\n }\n\n let transformed: ReturnType<EventDropTransformers> = {}\n for (let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers) {\n __assign(transformed, transformer(validMutation, initialContext))\n }\n\n initialContext.emitter.trigger('eventDrop', {\n ...eventChangeArg,\n ...transformed,\n el: ev.subjectEl as HTMLElement,\n delta: validMutation.datesDelta!,\n jsEvent: ev.origEvent as MouseEvent, // bad\n view: initialView,\n })\n\n initialContext.emitter.trigger('eventChange', eventChangeArg)\n\n // dropped in different calendar\n } else if (receivingContext) {\n let eventRemoveArg: EventRemoveArg = {\n event: eventApi,\n relatedEvents: buildEventApis(relevantEvents, initialContext, eventInstance),\n revert() {\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents,\n })\n },\n }\n\n initialContext.emitter.trigger('eventLeave', {\n ...eventRemoveArg,\n draggedEl: ev.subjectEl as HTMLElement,\n view: initialView,\n })\n\n initialContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: relevantEvents,\n })\n\n initialContext.emitter.trigger('eventRemove', eventRemoveArg)\n\n let addedEventDef = mutatedRelevantEvents.defs[eventDef.defId]\n let addedEventInstance = mutatedRelevantEvents.instances[eventInstance.instanceId]\n let addedEventApi = new EventApi(receivingContext, addedEventDef, addedEventInstance)\n\n receivingContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents,\n })\n\n let eventAddArg: EventAddArg = {\n event: addedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, receivingContext, addedEventInstance),\n revert() {\n receivingContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: mutatedRelevantEvents,\n })\n },\n }\n\n receivingContext.emitter.trigger('eventAdd', eventAddArg)\n\n if (ev.isTouch) {\n receivingContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: eventInstance.instanceId,\n })\n }\n\n receivingContext.emitter.trigger('drop', {\n ...buildDatePointApiWithContext(finalHit.dateSpan, receivingContext),\n draggedEl: ev.subjectEl as HTMLElement,\n jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: finalHit.context.viewApi,\n })\n\n receivingContext.emitter.trigger('eventReceive', {\n ...eventAddArg,\n draggedEl: ev.subjectEl as HTMLElement,\n view: finalHit.context.viewApi,\n })\n }\n } else {\n initialContext.emitter.trigger('_noEventDrop')\n }\n }\n\n this.cleanup()\n }\n\n // render a drag state on the next receivingCalendar\n displayDrag(nextContext: CalendarContext | null, state: EventInteractionState) {\n let initialContext = this.component.context\n let prevContext = this.receivingContext\n\n // does the previous calendar need to be cleared?\n if (prevContext && prevContext !== nextContext) {\n // does the initial calendar need to be cleared?\n // if so, don't clear all the way. we still need to to hide the affectedEvents\n if (prevContext === initialContext) {\n prevContext.dispatch({\n type: 'SET_EVENT_DRAG',\n state: {\n affectedEvents: state.affectedEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n },\n })\n\n // completely clear the old calendar if it wasn't the initial\n } else {\n prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n }\n }\n\n if (nextContext) {\n nextContext.dispatch({ type: 'SET_EVENT_DRAG', state })\n }\n }\n\n clearDrag() {\n let initialCalendar = this.component.context\n let { receivingContext } = this\n\n if (receivingContext) {\n receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n }\n\n // the initial calendar might have an dummy drag state from displayDrag\n if (initialCalendar !== receivingContext) {\n initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' })\n }\n }\n\n cleanup() { // reset all internal state\n this.subjectSeg = null\n this.isDragging = false\n this.eventRange = null\n this.relevantEvents = null\n this.receivingContext = null\n this.validMutation = null\n this.mutatedRelevantEvents = null\n }\n}\n\nfunction computeEventMutation(hit0: Hit, hit1: Hit, massagers: eventDragMutationMassager[]): EventMutation {\n let dateSpan0 = hit0.dateSpan\n let dateSpan1 = hit1.dateSpan\n let date0 = dateSpan0.range.start\n let date1 = dateSpan1.range.start\n let standardProps = {} as any\n\n if (dateSpan0.allDay !== dateSpan1.allDay) {\n standardProps.allDay = dateSpan1.allDay\n standardProps.hasEnd = hit1.context.options.allDayMaintainDuration\n\n if (dateSpan1.allDay) {\n // means date1 is already start-of-day,\n // but date0 needs to be converted\n date0 = startOfDay(date0)\n }\n }\n\n let delta = diffDates(\n date0, date1,\n hit0.context.dateEnv,\n hit0.componentId === hit1.componentId ?\n hit0.largeUnit :\n null,\n )\n\n if (delta.milliseconds) { // has hours/minutes/seconds\n standardProps.allDay = false\n }\n\n let mutation: EventMutation = {\n datesDelta: delta,\n standardProps,\n }\n\n for (let massager of massagers) {\n massager(mutation, hit0, hit1)\n }\n\n return mutation\n}\n\nfunction getComponentTouchDelay(component: DateComponent<any>): number | null {\n let { options } = component.context\n let delay = options.eventLongPressDelay\n\n if (delay == null) {\n delay = options.longPressDelay\n }\n\n return delay\n}\n","import {\n Seg, Hit,\n EventMutation, applyMutationToEventStore,\n elementClosest,\n PointerDragEvent,\n EventStore, getRelevantEvents, createEmptyEventStore,\n diffDates, enableCursor, disableCursor,\n DateRange,\n EventApi,\n EventRenderRange, getElSeg,\n createDuration,\n EventInteractionState,\n Interaction, InteractionSettings, interactionSettingsToStore, ViewApi, Duration, EventChangeArg, buildEventApis, isInteractionValid,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging, isHitsEqual } from './HitDragging'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\n\nexport type EventResizeStartArg = EventResizeStartStopArg\nexport type EventResizeStopArg = EventResizeStartStopArg\n\nexport interface EventResizeStartStopArg {\n el: HTMLElement\n event: EventApi\n jsEvent: MouseEvent\n view: ViewApi\n}\n\nexport interface EventResizeDoneArg extends EventChangeArg {\n el: HTMLElement\n startDelta: Duration\n endDelta: Duration\n jsEvent: MouseEvent\n view: ViewApi\n}\n\nexport class EventResizing extends Interaction {\n dragging: FeaturefulElementDragging\n hitDragging: HitDragging\n\n // internal state\n draggingSegEl: HTMLElement | null = null\n draggingSeg: Seg | null = null // TODO: rename to resizingSeg? subjectSeg?\n eventRange: EventRenderRange | null = null\n relevantEvents: EventStore | null = null\n validMutation: EventMutation | null = null\n mutatedRelevantEvents: EventStore | null = null\n\n constructor(settings: InteractionSettings) {\n super(settings)\n let { component } = settings\n\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el)\n dragging.pointer.selector = '.fc-event-resizer'\n dragging.touchScrollAllowed = false\n dragging.autoScroller.isEnabled = component.context.options.dragScroll\n\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings))\n hitDragging.emitter.on('pointerdown', this.handlePointerDown)\n hitDragging.emitter.on('dragstart', this.handleDragStart)\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n hitDragging.emitter.on('dragend', this.handleDragEnd)\n }\n\n destroy() {\n this.dragging.destroy()\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n let { component } = this\n let segEl = this.querySegEl(ev)\n let seg = getElSeg(segEl)\n let eventRange = this.eventRange = seg.eventRange!\n\n this.dragging.minDistance = component.context.options.eventDragMinDistance\n\n // if touch, need to be working with a selected event\n this.dragging.setIgnoreMove(\n !this.component.isValidSegDownEl(ev.origEvent.target as HTMLElement) ||\n (ev.isTouch && this.component.props.eventSelection !== eventRange.instance!.instanceId),\n )\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n let { context } = this.component\n let eventRange = this.eventRange!\n\n this.relevantEvents = getRelevantEvents(\n context.getCurrentData().eventStore,\n this.eventRange.instance!.instanceId,\n )\n\n let segEl = this.querySegEl(ev)\n this.draggingSegEl = segEl\n this.draggingSeg = getElSeg(segEl)\n\n context.calendarApi.unselect()\n context.emitter.trigger('eventResizeStart', {\n el: segEl,\n event: new EventApi(context, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventResizeStartArg)\n }\n\n handleHitUpdate = (hit: Hit | null, isFinal: boolean, ev: PointerDragEvent) => {\n let { context } = this.component\n let relevantEvents = this.relevantEvents!\n let initialHit = this.hitDragging.initialHit!\n let eventInstance = this.eventRange.instance!\n let mutation: EventMutation | null = null\n let mutatedRelevantEvents: EventStore | null = null\n let isInvalid = false\n let interaction: EventInteractionState = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n }\n\n if (hit) {\n let disallowed = hit.componentId === initialHit.componentId\n && this.isHitComboAllowed\n && !this.isHitComboAllowed(initialHit, hit)\n\n if (!disallowed) {\n mutation = computeMutation(\n initialHit,\n hit,\n (ev.subjectEl as HTMLElement).classList.contains('fc-event-resizer-start'),\n eventInstance.range,\n )\n }\n }\n\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context)\n interaction.mutatedEvents = mutatedRelevantEvents\n\n if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n isInvalid = true\n mutation = null\n mutatedRelevantEvents = null\n interaction.mutatedEvents = null\n }\n }\n\n if (mutatedRelevantEvents) {\n context.dispatch({\n type: 'SET_EVENT_RESIZE',\n state: interaction,\n })\n } else {\n context.dispatch({ type: 'UNSET_EVENT_RESIZE' })\n }\n\n if (!isInvalid) {\n enableCursor()\n } else {\n disableCursor()\n }\n\n if (!isFinal) {\n if (mutation && isHitsEqual(initialHit, hit)) {\n mutation = null\n }\n\n this.validMutation = mutation\n this.mutatedRelevantEvents = mutatedRelevantEvents\n }\n }\n\n handleDragEnd = (ev: PointerDragEvent) => {\n let { context } = this.component\n let eventDef = this.eventRange!.def\n let eventInstance = this.eventRange!.instance\n let eventApi = new EventApi(context, eventDef, eventInstance)\n let relevantEvents = this.relevantEvents!\n let mutatedRelevantEvents = this.mutatedRelevantEvents!\n\n context.emitter.trigger('eventResizeStop', {\n el: this.draggingSegEl,\n event: eventApi,\n jsEvent: ev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventResizeStopArg)\n\n if (this.validMutation) {\n let updatedEventApi = new EventApi(\n context,\n mutatedRelevantEvents.defs[eventDef.defId],\n eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null,\n )\n\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents,\n })\n\n let eventChangeArg: EventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n revert() {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents, // the pre-change events\n })\n },\n }\n\n context.emitter.trigger('eventResize', {\n ...eventChangeArg,\n el: this.draggingSegEl,\n startDelta: this.validMutation.startDelta || createDuration(0),\n endDelta: this.validMutation.endDelta || createDuration(0),\n jsEvent: ev.origEvent as MouseEvent,\n view: context.viewApi,\n })\n\n context.emitter.trigger('eventChange', eventChangeArg)\n } else {\n context.emitter.trigger('_noEventResize')\n }\n\n // reset all internal state\n this.draggingSeg = null\n this.relevantEvents = null\n this.validMutation = null\n\n // okay to keep eventInstance around. useful to set it in handlePointerDown\n }\n\n querySegEl(ev: PointerDragEvent) {\n return elementClosest(ev.subjectEl as HTMLElement, '.fc-event')\n }\n}\n\nfunction computeMutation(\n hit0: Hit,\n hit1: Hit,\n isFromStart: boolean,\n instanceRange: DateRange,\n): EventMutation | null {\n let dateEnv = hit0.context.dateEnv\n let date0 = hit0.dateSpan.range.start\n let date1 = hit1.dateSpan.range.start\n\n let delta = diffDates(\n date0, date1,\n dateEnv,\n hit0.largeUnit,\n )\n\n if (isFromStart) {\n if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n return { startDelta: delta }\n }\n } else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n return { endDelta: delta }\n }\n\n return null\n}\n","import {\n DateSelectionApi,\n PointerDragEvent,\n elementClosest,\n CalendarContext,\n getEventTargetViaRoot,\n} from '@fullcalendar/common'\nimport { PointerDragging } from '../dnd/PointerDragging'\nimport { EventDragging } from './EventDragging'\n\nexport class UnselectAuto {\n documentPointer: PointerDragging // for unfocusing\n isRecentPointerDateSelect = false // wish we could use a selector to detect date selection, but uses hit system\n matchesCancel = false\n matchesEvent = false\n\n constructor(private context: CalendarContext) {\n let documentPointer = this.documentPointer = new PointerDragging(document)\n documentPointer.shouldIgnoreMove = true\n documentPointer.shouldWatchScroll = false\n documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown)\n documentPointer.emitter.on('pointerup', this.onDocumentPointerUp)\n\n /*\n TODO: better way to know about whether there was a selection with the pointer\n */\n context.emitter.on('select', this.onSelect)\n }\n\n destroy() {\n this.context.emitter.off('select', this.onSelect)\n this.documentPointer.destroy()\n }\n\n onSelect = (selectInfo: DateSelectionApi) => {\n if (selectInfo.jsEvent) {\n this.isRecentPointerDateSelect = true\n }\n }\n\n onDocumentPointerDown = (pev: PointerDragEvent) => {\n let unselectCancel = this.context.options.unselectCancel\n let downEl = getEventTargetViaRoot(pev.origEvent) as HTMLElement\n\n this.matchesCancel = !!elementClosest(downEl, unselectCancel)\n this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR) // interaction started on an event?\n }\n\n onDocumentPointerUp = (pev: PointerDragEvent) => {\n let { context } = this\n let { documentPointer } = this\n let calendarState = context.getCurrentData()\n\n // touch-scrolling should never unfocus any type of selection\n if (!documentPointer.wasTouchScroll) {\n if (\n calendarState.dateSelection && // an existing date selection?\n !this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n ) {\n let unselectAuto = context.options.unselectAuto\n\n if (unselectAuto && (!unselectAuto || !this.matchesCancel)) {\n context.calendarApi.unselect(pev)\n }\n }\n\n if (\n calendarState.eventSelection && // an existing event selected?\n !this.matchesEvent // interaction DIDN'T start on an event\n ) {\n context.dispatch({ type: 'UNSELECT_EVENT' })\n }\n }\n\n this.isRecentPointerDateSelect = false\n }\n}\n","import {\n Hit,\n interactionSettingsStore,\n PointerDragEvent,\n parseEventDef, createEventInstance, EventTuple,\n createEmptyEventStore, eventTupleToStore,\n config,\n DateSpan, DatePointApi,\n EventInteractionState,\n DragMetaInput, DragMeta, parseDragMeta,\n EventApi,\n elementMatches,\n enableCursor, disableCursor,\n isInteractionValid,\n ElementDragging,\n ViewApi,\n CalendarContext,\n getDefaultEventEnd,\n refineEventDef,\n} from '@fullcalendar/common'\nimport { __assign } from 'tslib'\nimport { HitDragging } from '../interactions/HitDragging'\nimport { buildDatePointApiWithContext } from '../utils'\n\nexport type DragMetaGenerator = DragMetaInput | ((el: HTMLElement) => DragMetaInput)\n\nexport interface ExternalDropApi extends DatePointApi {\n draggedEl: HTMLElement\n jsEvent: UIEvent\n view: ViewApi\n}\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nexport class ExternalElementDragging {\n hitDragging: HitDragging\n receivingContext: CalendarContext | null = null\n droppableEvent: EventTuple | null = null // will exist for all drags, even if create:false\n suppliedDragMeta: DragMetaGenerator | null = null\n dragMeta: DragMeta | null = null\n\n constructor(dragging: ElementDragging, suppliedDragMeta?: DragMetaGenerator) {\n let hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore)\n hitDragging.requireInitial = false // will start outside of a component\n hitDragging.emitter.on('dragstart', this.handleDragStart)\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate)\n hitDragging.emitter.on('dragend', this.handleDragEnd)\n\n this.suppliedDragMeta = suppliedDragMeta\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n this.dragMeta = this.buildDragMeta(ev.subjectEl as HTMLElement)\n }\n\n buildDragMeta(subjectEl: HTMLElement) {\n if (typeof this.suppliedDragMeta === 'object') {\n return parseDragMeta(this.suppliedDragMeta)\n }\n if (typeof this.suppliedDragMeta === 'function') {\n return parseDragMeta(this.suppliedDragMeta(subjectEl))\n }\n return getDragMetaFromEl(subjectEl)\n }\n\n handleHitUpdate = (hit: Hit | null, isFinal: boolean, ev: PointerDragEvent) => {\n let { dragging } = this.hitDragging\n let receivingContext: CalendarContext | null = null\n let droppableEvent: EventTuple | null = null\n let isInvalid = false\n let interaction: EventInteractionState = {\n affectedEvents: createEmptyEventStore(),\n mutatedEvents: createEmptyEventStore(),\n isEvent: this.dragMeta!.create,\n }\n\n if (hit) {\n receivingContext = hit.context\n\n if (this.canDropElOnCalendar(ev.subjectEl as HTMLElement, receivingContext)) {\n droppableEvent = computeEventForDateSpan(\n hit.dateSpan,\n this.dragMeta!,\n receivingContext,\n )\n\n interaction.mutatedEvents = eventTupleToStore(droppableEvent)\n isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext)\n\n if (isInvalid) {\n interaction.mutatedEvents = createEmptyEventStore()\n droppableEvent = null\n }\n }\n }\n\n this.displayDrag(receivingContext, interaction)\n\n // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n // TODO: wish we could somehow wait for dispatch to guarantee render\n dragging.setMirrorIsVisible(\n isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'), // TODO: turn className into constant\n // TODO: somehow query FullCalendars WITHIN shadow-roots for existing event-mirror els\n )\n\n if (!isInvalid) {\n enableCursor()\n } else {\n disableCursor()\n }\n\n if (!isFinal) {\n dragging.setMirrorNeedsRevert(!droppableEvent)\n\n this.receivingContext = receivingContext\n this.droppableEvent = droppableEvent\n }\n }\n\n handleDragEnd = (pev: PointerDragEvent) => {\n let { receivingContext, droppableEvent } = this\n\n this.clearDrag()\n\n if (receivingContext && droppableEvent) {\n let finalHit = this.hitDragging.finalHit!\n let finalView = finalHit.context.viewApi\n let dragMeta = this.dragMeta!\n\n receivingContext.emitter.trigger('drop', {\n ...buildDatePointApiWithContext(finalHit.dateSpan, receivingContext),\n draggedEl: pev.subjectEl as HTMLElement,\n jsEvent: pev.origEvent as MouseEvent, // Is this always a mouse event? See #4655\n view: finalView,\n })\n\n if (dragMeta.create) {\n let addingEvents = eventTupleToStore(droppableEvent)\n\n receivingContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: addingEvents,\n })\n\n if (pev.isTouch) {\n receivingContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: droppableEvent.instance.instanceId,\n })\n }\n\n // signal that an external event landed\n receivingContext.emitter.trigger('eventReceive', {\n event: new EventApi(\n receivingContext,\n droppableEvent.def,\n droppableEvent.instance,\n ),\n relatedEvents: [],\n revert() {\n receivingContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: addingEvents,\n })\n },\n draggedEl: pev.subjectEl as HTMLElement,\n view: finalView,\n })\n }\n }\n\n this.receivingContext = null\n this.droppableEvent = null\n }\n\n displayDrag(nextContext: CalendarContext | null, state: EventInteractionState) {\n let prevContext = this.receivingContext\n\n if (prevContext && prevContext !== nextContext) {\n prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n }\n\n if (nextContext) {\n nextContext.dispatch({ type: 'SET_EVENT_DRAG', state })\n }\n }\n\n clearDrag() {\n if (this.receivingContext) {\n this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' })\n }\n }\n\n canDropElOnCalendar(el: HTMLElement, receivingContext: CalendarContext): boolean {\n let dropAccept = receivingContext.options.dropAccept\n\n if (typeof dropAccept === 'function') {\n return dropAccept.call(receivingContext.calendarApi, el)\n }\n\n if (typeof dropAccept === 'string' && dropAccept) {\n return Boolean(elementMatches(el, dropAccept))\n }\n\n return true\n }\n}\n\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\n\nfunction computeEventForDateSpan(dateSpan: DateSpan, dragMeta: DragMeta, context: CalendarContext): EventTuple {\n let defProps = { ...dragMeta.leftoverProps }\n\n for (let transform of context.pluginHooks.externalDefTransforms) {\n __assign(defProps, transform(dateSpan, dragMeta))\n }\n\n let { refined, extra } = refineEventDef(defProps, context)\n let def = parseEventDef(\n refined,\n extra,\n dragMeta.sourceId,\n dateSpan.allDay,\n context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd\n context,\n )\n\n let start = dateSpan.range.start\n\n // only rely on time info if drop zone is all-day,\n // otherwise, we already know the time\n if (dateSpan.allDay && dragMeta.startTime) {\n start = context.dateEnv.add(start, dragMeta.startTime)\n }\n\n let end = dragMeta.duration ?\n context.dateEnv.add(start, dragMeta.duration) :\n getDefaultEventEnd(dateSpan.allDay, start, context)\n\n let instance = createEventInstance(def.defId, { start, end })\n\n return { def, instance }\n}\n\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\n\nfunction getDragMetaFromEl(el: HTMLElement): DragMeta {\n let str = getEmbeddedElData(el, 'event')\n let obj = str ?\n JSON.parse(str) :\n { create: false } // if no embedded data, assume no event creation\n\n return parseDragMeta(obj)\n}\n\nconfig.dataAttrPrefix = ''\n\nfunction getEmbeddedElData(el: HTMLElement, name: string): string {\n let prefix = config.dataAttrPrefix\n let prefixedName = (prefix ? prefix + '-' : '') + name\n\n return el.getAttribute('data-' + prefixedName) || ''\n}\n","import { BASE_OPTION_DEFAULTS, PointerDragEvent } from '@fullcalendar/common'\nimport { FeaturefulElementDragging } from '../dnd/FeaturefulElementDragging'\nimport { ExternalElementDragging, DragMetaGenerator } from './ExternalElementDragging'\n\nexport interface ExternalDraggableSettings {\n eventData?: DragMetaGenerator\n itemSelector?: string\n minDistance?: number\n longPressDelay?: number\n appendTo?: HTMLElement\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nexport class ExternalDraggable {\n dragging: FeaturefulElementDragging\n settings: ExternalDraggableSettings\n\n constructor(el: HTMLElement, settings: ExternalDraggableSettings = {}) {\n this.settings = settings\n\n let dragging = this.dragging = new FeaturefulElementDragging(el)\n dragging.touchScrollAllowed = false\n\n if (settings.itemSelector != null) {\n dragging.pointer.selector = settings.itemSelector\n }\n\n if (settings.appendTo != null) {\n dragging.mirror.parentNode = settings.appendTo // TODO: write tests\n }\n\n dragging.emitter.on('pointerdown', this.handlePointerDown)\n dragging.emitter.on('dragstart', this.handleDragStart)\n\n new ExternalElementDragging(dragging, settings.eventData) // eslint-disable-line no-new\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n let { dragging } = this\n let { minDistance, longPressDelay } = this.settings\n\n dragging.minDistance =\n minDistance != null ?\n minDistance :\n (ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance)\n\n dragging.delay =\n ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n (longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay) :\n 0\n }\n\n handleDragStart = (ev: PointerDragEvent) => {\n if (\n ev.isTouch &&\n this.dragging.delay &&\n (ev.subjectEl as HTMLElement).classList.contains('fc-event')\n ) {\n this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected')\n }\n }\n\n destroy() {\n this.dragging.destroy()\n }\n}\n","import { PointerDragEvent, ElementDragging } from '@fullcalendar/common'\nimport { PointerDragging } from '../dnd/PointerDragging'\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nexport class InferredElementDragging extends ElementDragging {\n pointer: PointerDragging\n shouldIgnoreMove: boolean = false\n mirrorSelector: string = ''\n currentMirrorEl: HTMLElement | null = null\n\n constructor(containerEl: HTMLElement) {\n super(containerEl)\n\n let pointer = this.pointer = new PointerDragging(containerEl)\n pointer.emitter.on('pointerdown', this.handlePointerDown)\n pointer.emitter.on('pointermove', this.handlePointerMove)\n pointer.emitter.on('pointerup', this.handlePointerUp)\n }\n\n destroy() {\n this.pointer.destroy()\n }\n\n handlePointerDown = (ev: PointerDragEvent) => {\n this.emitter.trigger('pointerdown', ev)\n\n if (!this.shouldIgnoreMove) {\n // fire dragstart right away. does not support delay or min-distance\n this.emitter.trigger('dragstart', ev)\n }\n }\n\n handlePointerMove = (ev: PointerDragEvent) => {\n if (!this.shouldIgnoreMove) {\n this.emitter.trigger('dragmove', ev)\n }\n }\n\n handlePointerUp = (ev: PointerDragEvent) => {\n this.emitter.trigger('pointerup', ev)\n\n if (!this.shouldIgnoreMove) {\n // fire dragend right away. does not support a revert animation\n this.emitter.trigger('dragend', ev)\n }\n }\n\n setIgnoreMove(bool: boolean) {\n this.shouldIgnoreMove = bool\n }\n\n setMirrorIsVisible(bool: boolean) {\n if (bool) {\n // restore a previously hidden element.\n // use the reference in case the selector class has already been removed.\n if (this.currentMirrorEl) {\n this.currentMirrorEl.style.visibility = ''\n this.currentMirrorEl = null\n }\n } else {\n let mirrorEl = this.mirrorSelector\n // TODO: somehow query FullCalendars WITHIN shadow-roots\n ? document.querySelector(this.mirrorSelector) as HTMLElement\n : null\n\n if (mirrorEl) {\n this.currentMirrorEl = mirrorEl\n mirrorEl.style.visibility = 'hidden'\n }\n }\n }\n}\n","import { ExternalElementDragging, DragMetaGenerator } from './ExternalElementDragging'\nimport { InferredElementDragging } from './InferredElementDragging'\n\nexport interface ThirdPartyDraggableSettings {\n eventData?: DragMetaGenerator\n itemSelector?: string\n mirrorSelector?: string\n}\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nexport class ThirdPartyDraggable {\n dragging: InferredElementDragging\n\n constructor(\n containerOrSettings?: EventTarget | ThirdPartyDraggableSettings,\n settings?: ThirdPartyDraggableSettings,\n ) {\n let containerEl: EventTarget = document\n\n if (\n // wish we could just test instanceof EventTarget, but doesn't work in IE11\n containerOrSettings === document ||\n containerOrSettings instanceof Element\n ) {\n containerEl = containerOrSettings as EventTarget\n settings = settings || {}\n } else {\n settings = (containerOrSettings || {}) as ThirdPartyDraggableSettings\n }\n\n let dragging = this.dragging = new InferredElementDragging(containerEl as HTMLElement)\n\n if (typeof settings.itemSelector === 'string') {\n dragging.pointer.selector = settings.itemSelector\n } else if (containerEl === document) {\n dragging.pointer.selector = '[data-event]'\n }\n\n if (typeof settings.mirrorSelector === 'string') {\n dragging.mirrorSelector = settings.mirrorSelector\n }\n\n new ExternalElementDragging(dragging, settings.eventData) // eslint-disable-line no-new\n }\n\n destroy() {\n this.dragging.destroy()\n }\n}\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import {\n Splitter,\n hasBgRendering,\n EventDef,\n DateSpan,\n} from '@fullcalendar/common'\n\nexport class AllDaySplitter extends Splitter {\n getKeyInfo() {\n return {\n allDay: {},\n timed: {},\n }\n }\n\n getKeysForDateSpan(dateSpan: DateSpan): string[] {\n if (dateSpan.allDay) {\n return ['allDay']\n }\n\n return ['timed']\n }\n\n getKeysForEventDef(eventDef: EventDef): string[] {\n if (!eventDef.allDay) {\n return ['timed']\n }\n\n if (hasBgRendering(eventDef)) {\n return ['timed', 'allDay']\n }\n\n return ['allDay']\n }\n}\n","import {\n createElement,\n ViewContext,\n createFormatter,\n ViewContextType,\n RenderHook,\n SlotLabelContentArg,\n} from '@fullcalendar/common'\nimport { TimeSlatMeta } from './time-slat-meta'\n\nconst DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'short',\n})\n\nexport function TimeColsAxisCell(props: TimeSlatMeta) {\n let classNames = [\n 'fc-timegrid-slot',\n 'fc-timegrid-slot-label',\n props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',\n ]\n\n return (\n <ViewContextType.Consumer>\n {(context: ViewContext) => {\n if (!props.isLabeled) {\n return (\n <td className={classNames.join(' ')} data-time={props.isoTimeStr} />\n )\n }\n\n let { dateEnv, options, viewApi } = context\n let labelFormat = // TODO: fully pre-parse\n options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :\n Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :\n createFormatter(options.slotLabelFormat)\n\n let hookProps: SlotLabelContentArg = {\n level: 0,\n time: props.time,\n date: dateEnv.toDate(props.date),\n view: viewApi,\n text: dateEnv.format(props.date, labelFormat),\n }\n\n return (\n <RenderHook<SlotLabelContentArg> // needed?\n hookProps={hookProps}\n classNames={options.slotLabelClassNames}\n content={options.slotLabelContent}\n defaultContent={renderInnerContent}\n didMount={options.slotLabelDidMount}\n willUnmount={options.slotLabelWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <td ref={rootElRef} className={classNames.concat(customClassNames).join(' ')} data-time={props.isoTimeStr}>\n <div className=\"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\">\n <div className=\"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n </td>\n )}\n </RenderHook>\n )\n }}\n </ViewContextType.Consumer>\n )\n}\n\nfunction renderInnerContent(props) { // TODO: add types\n return props.text\n}\n","import { createElement, BaseComponent } from '@fullcalendar/common'\nimport { TimeColsAxisCell } from './TimeColsAxisCell'\nimport { TimeSlatMeta } from './time-slat-meta'\n\n/* Thin Axis\n------------------------------------------------------------------------------------------------------------------*/\n\ninterface TimeBodyAxisProps {\n slatMetas: TimeSlatMeta[]\n}\n\nexport class TimeBodyAxis extends BaseComponent<TimeBodyAxisProps> { // just <tr> content\n render() {\n return this.props.slatMetas.map((slatMeta: TimeSlatMeta) => (\n <tr key={slatMeta.key}>\n <TimeColsAxisCell {...slatMeta} />\n </tr>\n ))\n }\n}\n","import {\n createElement, createRef,\n diffDays,\n SimpleScrollGridSection,\n VNode,\n SimpleScrollGrid,\n ChunkContentCallbackArgs,\n ScrollGridSectionConfig,\n buildNavLinkAttrs,\n ViewRoot,\n WeekNumberRoot,\n RenderHook,\n DateComponent,\n ViewProps,\n RefObject,\n renderScrollShim,\n getStickyHeaderDates,\n getStickyFooterScrollbar,\n createFormatter,\n AllDayContentArg,\n CssDimValue,\n NowTimer,\n DateMarker,\n NowIndicatorRoot,\n} from '@fullcalendar/common'\nimport { AllDaySplitter } from './AllDaySplitter'\nimport { TimeSlatMeta } from './time-slat-meta'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { TimeBodyAxis } from './TimeBodyAxis'\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'short' })\nconst AUTO_ALL_DAY_MAX_EVENT_ROWS = 5\n\n/* An abstract class for all timegrid-related views. Displays one more columns with time slots running vertically.\n----------------------------------------------------------------------------------------------------------------------*/\n// Is a manager for the TimeCols subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n// Responsible for managing width/height.\n\ninterface TimeColsViewState {\n slatCoords: TimeColsSlatsCoords | null\n}\n\nexport abstract class TimeColsView extends DateComponent<ViewProps, TimeColsViewState> {\n protected allDaySplitter = new AllDaySplitter() // for use by subclasses\n\n protected headerElRef: RefObject<HTMLTableCellElement> = createRef<HTMLTableCellElement>()\n private rootElRef: RefObject<HTMLDivElement> = createRef<HTMLDivElement>()\n private scrollerElRef: RefObject<HTMLDivElement> = createRef<HTMLDivElement>()\n\n state = {\n slatCoords: null,\n }\n\n // rendering\n // ----------------------------------------------------------------------------------------------------\n\n renderSimpleLayout(\n headerRowContent: VNode | null,\n allDayContent: ((contentArg: ChunkContentCallbackArgs) => VNode) | null,\n timeContent: ((contentArg: ChunkContentCallbackArgs) => VNode) | null,\n ) {\n let { context, props } = this\n let sections: SimpleScrollGridSection[] = []\n let stickyHeaderDates = getStickyHeaderDates(context.options)\n\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n })\n }\n\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n chunk: { content: allDayContent },\n })\n sections.push({\n type: 'body',\n key: 'all-day-divider',\n outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n <tr role=\"presentation\" className=\"fc-scrollgrid-section\">\n <td\n className={'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded')}\n />\n </tr>\n ),\n })\n }\n\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunk: {\n scrollerElRef: this.scrollerElRef,\n content: timeContent,\n },\n })\n\n return (\n <ViewRoot viewSpec={context.viewSpec} elRef={this.rootElRef}>\n {(rootElRef, classNames) => (\n <div className={['fc-timegrid'].concat(classNames).join(' ')} ref={rootElRef}>\n <SimpleScrollGrid\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={props.forPrint}\n cols={[{ width: 'shrink' }]}\n sections={sections}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n\n renderHScrollLayout(\n headerRowContent: VNode | null,\n allDayContent: ((contentArg: ChunkContentCallbackArgs) => VNode) | null,\n timeContent: ((contentArg: ChunkContentCallbackArgs) => VNode) | null,\n colCnt: number,\n dayMinWidth: number,\n slatMetas: TimeSlatMeta[],\n slatCoords: TimeColsSlatsCoords | null, // yuck\n ) {\n let ScrollGrid = this.context.pluginHooks.scrollGridImpl\n\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation')\n }\n\n let { context, props } = this\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options)\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options)\n let sections: ScrollGridSectionConfig[] = []\n\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n syncRowHeights: true,\n chunks: [\n {\n key: 'axis',\n rowContent: (arg: ChunkContentCallbackArgs) => (\n <tr role=\"presentation\">\n {this.renderHeadAxis('day', arg.rowSyncHeights[0])}\n </tr>\n ),\n },\n {\n key: 'cols',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n ],\n })\n }\n\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n syncRowHeights: true,\n chunks: [\n {\n key: 'axis',\n rowContent: (contentArg: ChunkContentCallbackArgs) => (\n <tr role=\"presentation\">\n {this.renderTableRowAxis(contentArg.rowSyncHeights[0])}\n </tr>\n ),\n },\n {\n key: 'cols',\n content: allDayContent,\n },\n ],\n })\n sections.push({\n key: 'all-day-divider',\n type: 'body',\n outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n <tr role=\"presentation\" className=\"fc-scrollgrid-section\">\n <td\n colSpan={2}\n className={'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded')}\n />\n </tr>\n ),\n })\n }\n\n let isNowIndicator = context.options.nowIndicator\n\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunks: [\n {\n key: 'axis',\n content: (arg) => (\n // TODO: make this now-indicator arrow more DRY with TimeColsContent\n <div className=\"fc-timegrid-axis-chunk\">\n <table aria-hidden style={{ height: arg.expandRows ? arg.clientHeight : '' }}>\n {arg.tableColGroupNode}\n <tbody>\n <TimeBodyAxis slatMetas={slatMetas} />\n </tbody>\n </table>\n <div className=\"fc-timegrid-now-indicator-container\">\n <NowTimer unit={isNowIndicator ? 'minute' : 'day' /* hacky */}>\n {(nowDate: DateMarker) => {\n let nowIndicatorTop =\n isNowIndicator &&\n slatCoords &&\n slatCoords.safeComputeTop(nowDate) // might return void\n\n if (typeof nowIndicatorTop === 'number') {\n return (\n <NowIndicatorRoot isAxis date={nowDate}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' ')}\n style={{ top: nowIndicatorTop }}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n )\n }\n\n return null\n }}\n </NowTimer>\n </div>\n </div>\n ),\n },\n {\n key: 'cols',\n scrollerElRef: this.scrollerElRef,\n content: timeContent,\n },\n ],\n })\n\n if (stickyFooterScrollbar) {\n sections.push({\n key: 'footer',\n type: 'footer',\n isSticky: true,\n chunks: [\n {\n key: 'axis',\n content: renderScrollShim,\n },\n {\n key: 'cols',\n content: renderScrollShim,\n },\n ],\n })\n }\n\n return (\n <ViewRoot viewSpec={context.viewSpec} elRef={this.rootElRef}>\n {(rootElRef, classNames) => (\n <div className={['fc-timegrid'].concat(classNames).join(' ')} ref={rootElRef}>\n <ScrollGrid\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={false}\n colGroups={[\n { width: 'shrink', cols: [{ width: 'shrink' }] }, // TODO: allow no specify cols\n { cols: [{ span: colCnt, minWidth: dayMinWidth }] },\n ]}\n sections={sections}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n\n handleScrollTopRequest = (scrollTop: number) => {\n let scrollerEl = this.scrollerElRef.current\n\n if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer\n scrollerEl.scrollTop = scrollTop\n }\n }\n\n /* Dimensions\n ------------------------------------------------------------------------------------------------------------------*/\n\n getAllDayMaxEventProps() {\n let { dayMaxEvents, dayMaxEventRows } = this.context.options\n\n if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto?\n dayMaxEvents = undefined\n dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS // make sure \"auto\" goes to a real number\n }\n\n return { dayMaxEvents, dayMaxEventRows }\n }\n\n /* Header Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n\n renderHeadAxis = (rowKey: 'day' | string, frameHeight: CssDimValue = '') => {\n let { options } = this.context\n let { dateProfile } = this.props\n let range = dateProfile.renderRange\n let dayCnt = diffDays(range.start, range.end)\n\n let navLinkAttrs = (dayCnt === 1) // only do in day views (to avoid doing in week views that dont need it)\n ? buildNavLinkAttrs(this.context, range.start, 'week')\n : {}\n\n if (options.weekNumbers && rowKey === 'day') {\n return (\n <WeekNumberRoot date={range.start} defaultFormat={DEFAULT_WEEK_NUM_FORMAT}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n aria-hidden\n className={[\n 'fc-timegrid-axis',\n 'fc-scrollgrid-shrink',\n ].concat(classNames).join(' ')}\n >\n <div\n className=\"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid\"\n style={{ height: frameHeight }}\n >\n <a\n ref={innerElRef}\n className=\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\"\n {...navLinkAttrs}\n >\n {innerContent}\n </a>\n </div>\n </th>\n )}\n </WeekNumberRoot>\n )\n }\n\n return (\n <th aria-hidden className=\"fc-timegrid-axis\">\n <div className=\"fc-timegrid-axis-frame\" style={{ height: frameHeight }} />\n </th>\n )\n }\n\n /* Table Component Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n\n // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n // but DayGrid still needs to have classNames on inner elements in order to measure.\n renderTableRowAxis = (rowHeight?: number) => {\n let { options, viewApi } = this.context\n let hookProps: AllDayContentArg = {\n text: options.allDayText,\n view: viewApi,\n }\n\n return (\n // TODO: make reusable hook. used in list view too\n <RenderHook<AllDayContentArg>\n hookProps={hookProps}\n classNames={options.allDayClassNames}\n content={options.allDayContent}\n defaultContent={renderAllDayInner}\n didMount={options.allDayDidMount}\n willUnmount={options.allDayWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <td\n ref={rootElRef}\n aria-hidden\n className={[\n 'fc-timegrid-axis',\n 'fc-scrollgrid-shrink',\n ].concat(classNames).join(' ')}\n >\n <div\n className={'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame' + (rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : '')}\n style={{ height: rowHeight }}\n >\n <span className=\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\" ref={innerElRef}>\n {innerContent}\n </span>\n </div>\n </td>\n )}\n </RenderHook>\n )\n }\n\n handleSlatCoords = (slatCoords: TimeColsSlatsCoords) => {\n this.setState({ slatCoords })\n }\n}\n\nfunction renderAllDayInner(hookProps) {\n return hookProps.text\n}\n","import {\n PositionCache,\n DateMarker,\n startOfDay,\n createDuration,\n asRoughMs,\n DateProfile,\n Duration,\n rangeContainsMarker,\n} from '@fullcalendar/common'\n\nexport class TimeColsSlatsCoords {\n constructor(\n public positions: PositionCache,\n private dateProfile: DateProfile,\n private slotDuration: Duration,\n ) {\n }\n\n safeComputeTop(date: DateMarker) { // TODO: DRY with computeDateTop\n let { dateProfile } = this\n\n if (rangeContainsMarker(dateProfile.currentRange, date)) {\n let startOfDayDate = startOfDay(date)\n let timeMs = date.valueOf() - startOfDayDate.valueOf()\n\n if (\n timeMs >= asRoughMs(dateProfile.slotMinTime) &&\n timeMs < asRoughMs(dateProfile.slotMaxTime)\n ) {\n return this.computeTimeTop(createDuration(timeMs))\n }\n }\n\n return null\n }\n\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n computeDateTop(when: DateMarker, startOfDayDate?: DateMarker) {\n if (!startOfDayDate) {\n startOfDayDate = startOfDay(when)\n }\n return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()))\n }\n\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n // Eventually allow computation with arbirary slat dates.\n computeTimeTop(duration: Duration): number {\n let { positions, dateProfile } = this\n let len = positions.els.length\n\n // floating-point value of # of slots covered\n let slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration)\n let slatIndex\n let slatRemainder\n\n // compute a floating-point number for how many slats should be progressed through.\n // from 0 to number of slats (inclusive)\n // constrained because slotMinTime/slotMaxTime might be customized.\n slatCoverage = Math.max(0, slatCoverage)\n slatCoverage = Math.min(len, slatCoverage)\n\n // an integer index of the furthest whole slat\n // from 0 to number slats (*exclusive*, so len-1)\n slatIndex = Math.floor(slatCoverage)\n slatIndex = Math.min(slatIndex, len - 1)\n\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n // could be 1.0 if slatCoverage is covering *all* the slots\n slatRemainder = slatCoverage - slatIndex\n\n return positions.tops[slatIndex] +\n positions.getHeight(slatIndex) * slatRemainder\n }\n}\n","import {\n createElement,\n BaseComponent,\n RefMap,\n RenderHook,\n SlotLaneContentArg,\n} from '@fullcalendar/common'\nimport { TimeColsAxisCell } from './TimeColsAxisCell'\nimport { TimeSlatMeta } from './time-slat-meta'\n\nexport interface TimeColsSlatsBodyProps {\n axis: boolean\n slatMetas: TimeSlatMeta[]\n slatElRefs: RefMap<HTMLTableRowElement>\n}\n\nexport class TimeColsSlatsBody extends BaseComponent<TimeColsSlatsBodyProps> {\n render() {\n let { props, context } = this\n let { options } = context\n let { slatElRefs } = props\n\n return (\n <tbody>\n {props.slatMetas.map((slatMeta, i) => {\n let hookProps: SlotLaneContentArg = {\n time: slatMeta.time,\n date: context.dateEnv.toDate(slatMeta.date),\n view: context.viewApi,\n }\n\n let classNames = [\n 'fc-timegrid-slot',\n 'fc-timegrid-slot-lane',\n slatMeta.isLabeled ? '' : 'fc-timegrid-slot-minor',\n ]\n\n return (\n <tr\n key={slatMeta.key}\n ref={slatElRefs.createRef(slatMeta.key)}\n >\n {props.axis && (\n <TimeColsAxisCell {...slatMeta} />\n )}\n <RenderHook\n hookProps={hookProps}\n classNames={options.slotLaneClassNames}\n content={options.slotLaneContent}\n didMount={options.slotLaneDidMount}\n willUnmount={options.slotLaneWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <td\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n data-time={slatMeta.isoTimeStr}\n >\n {innerContent}\n </td>\n )}\n </RenderHook>\n </tr>\n )\n })}\n </tbody>\n )\n }\n}\n","import {\n createElement,\n VNode,\n BaseComponent,\n RefMap,\n CssDimValue,\n createRef,\n PositionCache,\n DateProfile,\n} from '@fullcalendar/common'\nimport { TimeSlatMeta } from './time-slat-meta'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { TimeColsSlatsBody } from './TimeColsSlatsBody'\n\nexport interface TimeColsSlatsProps extends TimeColsSlatsContentProps {\n dateProfile: DateProfile\n clientWidth: number | null\n minHeight: CssDimValue\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n onCoords?: (coords: TimeColsSlatsCoords | null) => void\n}\n\ninterface TimeColsSlatsContentProps {\n axis: boolean\n slatMetas: TimeSlatMeta[]\n}\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\n\nexport class TimeColsSlats extends BaseComponent<TimeColsSlatsProps> {\n private rootElRef = createRef<HTMLDivElement>()\n private slatElRefs = new RefMap<HTMLTableRowElement>()\n\n render() {\n let { props, context } = this\n\n return (\n <div ref={this.rootElRef} className=\"fc-timegrid-slots\">\n <table\n aria-hidden\n className={context.theme.getClass('table')}\n style={{\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n height: props.minHeight,\n }}\n >\n {props.tableColGroupNode /* relies on there only being a single <col> for the axis */}\n <TimeColsSlatsBody\n slatElRefs={this.slatElRefs}\n axis={props.axis}\n slatMetas={props.slatMetas}\n />\n </table>\n </div>\n )\n }\n\n componentDidMount() {\n this.updateSizing()\n }\n\n componentDidUpdate() {\n this.updateSizing()\n }\n\n componentWillUnmount() {\n if (this.props.onCoords) {\n this.props.onCoords(null)\n }\n }\n\n updateSizing() {\n let { context, props } = this\n\n if (\n props.onCoords &&\n props.clientWidth !== null // means sizing has stabilized\n ) {\n let rootEl = this.rootElRef.current\n\n if (rootEl.offsetHeight) { // not hidden by css\n props.onCoords(\n new TimeColsSlatsCoords(\n new PositionCache(\n this.rootElRef.current,\n collectSlatEls(this.slatElRefs.currentMap, props.slatMetas),\n false,\n true, // vertical\n ),\n this.props.dateProfile,\n context.options.slotDuration,\n ),\n )\n }\n }\n }\n}\n\nfunction collectSlatEls(elMap: { [key: string]: HTMLElement }, slatMetas: TimeSlatMeta[]) {\n return slatMetas.map((slatMeta) => elMap[slatMeta.key])\n}\n","import { DateMarker, Seg, EventSegUiInteractionState } from '@fullcalendar/common'\n\n// JUST A DATA STRUCTURE, not a component\n\nexport interface TimeColsSeg extends Seg {\n col: number\n start: DateMarker\n end: DateMarker\n}\n\nexport function splitSegsByCol(segs: TimeColsSeg[] | null, colCnt: number) { // can be given null/undefined!\n let segsByCol: TimeColsSeg[][] = []\n let i\n\n for (i = 0; i < colCnt; i += 1) {\n segsByCol.push([])\n }\n\n if (segs) {\n for (i = 0; i < segs.length; i += 1) {\n segsByCol[segs[i].col].push(segs[i])\n }\n }\n\n return segsByCol\n}\n\nexport function splitInteractionByCol(ui: EventSegUiInteractionState | null, colCnt: number) {\n let byRow: EventSegUiInteractionState[] = []\n\n if (!ui) {\n for (let i = 0; i < colCnt; i += 1) {\n byRow[i] = null\n }\n } else {\n for (let i = 0; i < colCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: [],\n }\n }\n\n for (let seg of ui.segs) {\n byRow[seg.col].segs.push(seg)\n }\n }\n\n return byRow\n}\n","import {\n createElement, MoreLinkContentArg, MoreLinkRoot, BaseComponent, createRef, setRef,\n Dictionary, DateProfile, DateRange, DateMarker, EventSegUiInteractionState, CssDimValue,\n} from '@fullcalendar/common'\nimport { renderPlainFgSegs } from './TimeCol'\nimport { TimeColsSeg } from './TimeColsSeg'\n\nexport interface TimeColMoreLinkProps {\n hiddenSegs: TimeColsSeg[]\n top: CssDimValue\n bottom: CssDimValue\n extraDateSpan?: Dictionary\n dateProfile: DateProfile\n todayRange: DateRange\n nowDate: DateMarker\n eventSelection: string\n eventDrag: EventSegUiInteractionState\n eventResize: EventSegUiInteractionState\n}\n\nexport class TimeColMoreLink extends BaseComponent<TimeColMoreLinkProps> {\n rootElRef = createRef<HTMLElement>()\n\n render() {\n let { props } = this\n return (\n <MoreLinkRoot\n allDayDate={null}\n moreCnt={props.hiddenSegs.length}\n allSegs={props.hiddenSegs}\n hiddenSegs={props.hiddenSegs}\n alignmentElRef={this.rootElRef}\n defaultContent={renderMoreLinkInner}\n extraDateSpan={props.extraDateSpan}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n popoverContent={() => renderPlainFgSegs(props.hiddenSegs, props)}\n >\n {(rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (\n <a\n ref={(el: HTMLElement | null) => {\n setRef(rootElRef, el)\n setRef(this.rootElRef, el)\n }}\n className={['fc-timegrid-more-link'].concat(classNames).join(' ')}\n style={{ top: props.top, bottom: props.bottom }}\n onClick={handleClick}\n title={title}\n aria-expanded={isExpanded}\n aria-controls={popoverId}\n >\n <div ref={innerElRef} className=\"fc-timegrid-more-link-inner fc-sticky\">\n {innerContent}\n </div>\n </a>\n )}\n </MoreLinkRoot>\n )\n }\n}\n\nfunction renderMoreLinkInner(props: MoreLinkContentArg) {\n return props.shortText\n}\n","import {\n SegEntry,\n SegHierarchy,\n SegRect,\n buildEntryKey,\n getEntrySpanEnd,\n binarySearch,\n SegEntryGroup,\n groupIntersectingEntries,\n} from '@fullcalendar/common'\n\ninterface SegNode extends SegEntry {\n nextLevelNodes: SegNode[] // with highest-pressure first\n}\n\ntype SegNodeAndPressure = [ SegNode, number ]\n\ninterface SegSiblingRange { // will ALWAYS have span of 1 or more items. if not, will be null\n level: number\n lateralStart: number\n lateralEnd: number\n}\n\nexport interface SegWebRect extends SegRect {\n stackDepth: number\n stackForward: number\n}\n\n// segInputs assumed sorted\nexport function buildPositioning(\n segInputs: SegEntry[],\n strictOrder?: boolean,\n maxStackCnt?: number,\n): { segRects: SegWebRect[], hiddenGroups: SegEntryGroup[] } {\n let hierarchy = new SegHierarchy()\n if (strictOrder != null) {\n hierarchy.strictOrder = strictOrder\n }\n if (maxStackCnt != null) {\n hierarchy.maxStackCnt = maxStackCnt\n }\n\n let hiddenEntries = hierarchy.addSegs(segInputs)\n let hiddenGroups = groupIntersectingEntries(hiddenEntries)\n\n let web = buildWeb(hierarchy)\n web = stretchWeb(web, 1) // all levelCoords/thickness will have 0.0-1.0\n let segRects = webToRects(web)\n\n return { segRects, hiddenGroups }\n}\n\nfunction buildWeb(hierarchy: SegHierarchy): SegNode[] {\n const { entriesByLevel } = hierarchy\n\n const buildNode = cacheable(\n (level: number, lateral: number) => level + ':' + lateral,\n (level: number, lateral: number): SegNodeAndPressure => {\n let siblingRange = findNextLevelSegs(hierarchy, level, lateral)\n let nextLevelRes = buildNodes(siblingRange, buildNode)\n let entry = entriesByLevel[level][lateral]\n\n return [\n { ...entry, nextLevelNodes: nextLevelRes[0] },\n entry.thickness + nextLevelRes[1], // the pressure builds\n ]\n },\n )\n\n return buildNodes(\n entriesByLevel.length\n ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length }\n : null,\n buildNode,\n )[0]\n}\n\nfunction buildNodes(\n siblingRange: SegSiblingRange | null,\n buildNode: (level: number, lateral: number) => SegNodeAndPressure,\n): [SegNode[], number] { // number is maxPressure\n if (!siblingRange) {\n return [[], 0]\n }\n\n let { level, lateralStart, lateralEnd } = siblingRange\n let lateral = lateralStart\n let pairs: SegNodeAndPressure[] = []\n\n while (lateral < lateralEnd) {\n pairs.push(buildNode(level, lateral))\n lateral += 1\n }\n\n pairs.sort(cmpDescPressures)\n\n return [\n pairs.map(extractNode),\n pairs[0][1], // first item's pressure\n ]\n}\n\nfunction cmpDescPressures(a: SegNodeAndPressure, b: SegNodeAndPressure) { // sort pressure high -> low\n return b[1] - a[1]\n}\n\nfunction extractNode(a: SegNodeAndPressure): SegNode {\n return a[0]\n}\n\nfunction findNextLevelSegs(hierarchy: SegHierarchy, subjectLevel: number, subjectLateral: number): SegSiblingRange | null {\n let { levelCoords, entriesByLevel } = hierarchy\n let subjectEntry = entriesByLevel[subjectLevel][subjectLateral]\n let afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness\n let levelCnt = levelCoords.length\n let level = subjectLevel\n\n // skip past levels that are too high up\n for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1) ; // do nothing\n\n for (; level < levelCnt; level += 1) {\n let entries = entriesByLevel[level]\n let entry: SegEntry\n let searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd)\n let lateralStart = searchIndex[0] + searchIndex[1] // if exact match (which doesn't collide), go to next one\n let lateralEnd = lateralStart\n\n while ( // loop through entries that horizontally intersect\n (entry = entries[lateralEnd]) && // but not past the whole seg list\n entry.span.start < subjectEntry.span.end\n ) { lateralEnd += 1 }\n\n if (lateralStart < lateralEnd) {\n return { level, lateralStart, lateralEnd }\n }\n }\n\n return null\n}\n\nfunction stretchWeb(topLevelNodes: SegNode[], totalThickness: number): SegNode[] {\n const stretchNode = cacheable(\n (node: SegNode, startCoord: number, prevThickness: number) => buildEntryKey(node),\n (node: SegNode, startCoord: number, prevThickness: number): [number, SegNode] => { // [startCoord, node]\n let { nextLevelNodes, thickness } = node\n let allThickness = thickness + prevThickness\n let thicknessFraction = thickness / allThickness\n let endCoord: number\n let newChildren: SegNode[] = []\n\n if (!nextLevelNodes.length) {\n endCoord = totalThickness\n } else {\n for (let childNode of nextLevelNodes) {\n if (endCoord === undefined) {\n let res = stretchNode(childNode, startCoord, allThickness)\n endCoord = res[0]\n newChildren.push(res[1])\n } else {\n let res = stretchNode(childNode, endCoord, 0)\n newChildren.push(res[1])\n }\n }\n }\n\n let newThickness = (endCoord - startCoord) * thicknessFraction\n return [endCoord - newThickness, {\n ...node,\n thickness: newThickness,\n nextLevelNodes: newChildren,\n }]\n },\n )\n\n return topLevelNodes.map((node: SegNode) => stretchNode(node, 0, 0)[1])\n}\n\n// not sorted in any particular order\nfunction webToRects(topLevelNodes: SegNode[]): SegWebRect[] {\n let rects: SegWebRect[] = []\n\n const processNode = cacheable(\n (node: SegNode, levelCoord: number, stackDepth: number) => buildEntryKey(node),\n (node: SegNode, levelCoord: number, stackDepth: number) => { // returns forwardPressure\n let rect: SegWebRect = {\n ...node,\n levelCoord,\n stackDepth,\n stackForward: 0, // will assign after recursing\n }\n rects.push(rect)\n\n return (\n rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1\n )\n },\n )\n\n function processNodes(nodes: SegNode[], levelCoord: number, stackDepth: number) { // returns stackForward\n let stackForward = 0\n for (let node of nodes) {\n stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward)\n }\n return stackForward\n }\n\n processNodes(topLevelNodes, 0, 0)\n return rects // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n\n// TODO: move to general util\n\nfunction cacheable<Args extends any[], Res>(\n keyFunc: (...args: Args) => string,\n workFunc: (...args: Args) => Res,\n): ((...args: Args) => Res) {\n const cache: { [key: string]: Res } = {}\n\n return (...args: Args) => {\n let key = keyFunc(...args)\n return (key in cache)\n ? cache[key]\n : (cache[key] = workFunc(...args))\n }\n}\n","import {\n SegSpan, SegHierarchy, groupIntersectingEntries, SegEntry, buildIsoString,\n computeEarliestSegStart,\n} from '@fullcalendar/common'\nimport { TimelineCoords } from './TimelineCoords'\nimport { TimelineLaneSeg } from './TimelineLaneSlicer'\n\nexport interface TimelineSegPlacement {\n seg: TimelineLaneSeg | TimelineLaneSeg[] // HACK: if array, then it's a more-link group\n hcoords: SegSpan | null\n top: number | null\n}\n\nexport function computeSegHCoords(\n segs: TimelineLaneSeg[],\n minWidth: number,\n timelineCoords: TimelineCoords | null,\n): SegSpan[] {\n let hcoords: SegSpan[] = []\n\n if (timelineCoords) {\n for (let seg of segs) {\n let res = timelineCoords.rangeToCoords(seg)\n let start = Math.round(res.start) // for barely-overlapping collisions\n let end = Math.round(res.end) //\n\n if (end - start < minWidth) {\n end = start + minWidth\n }\n\n hcoords.push({ start, end })\n }\n }\n\n return hcoords\n}\n\nexport function computeFgSegPlacements(\n segs: TimelineLaneSeg[],\n segHCoords: SegSpan[], // might not have for every seg\n eventInstanceHeights: { [instanceId: string]: number }, // might not have for every seg\n moreLinkHeights: { [isoStr: string]: number }, // might not have for every more-link\n strictOrder?: boolean,\n maxStackCnt?: number,\n): [TimelineSegPlacement[], number] { // [placements, totalHeight]\n let segInputs: SegEntry[] = []\n let crudePlacements: TimelineSegPlacement[] = [] // when we don't know dims\n\n for (let i = 0; i < segs.length; i += 1) {\n let seg = segs[i]\n let instanceId = seg.eventRange.instance.instanceId\n let height = eventInstanceHeights[instanceId]\n let hcoords = segHCoords[i]\n\n if (height && hcoords) {\n segInputs.push({\n index: i,\n span: hcoords,\n thickness: height,\n })\n } else {\n crudePlacements.push({\n seg,\n hcoords, // might as well set hcoords if we have them. might be null\n top: null,\n })\n }\n }\n\n let hierarchy = new SegHierarchy()\n if (strictOrder != null) {\n hierarchy.strictOrder = strictOrder\n }\n if (maxStackCnt != null) {\n hierarchy.maxStackCnt = maxStackCnt\n }\n\n let hiddenEntries = hierarchy.addSegs(segInputs)\n let hiddenPlacements = hiddenEntries.map((entry) => ({\n seg: segs[entry.index],\n hcoords: entry.span,\n top: null,\n } as TimelineSegPlacement))\n\n let hiddenGroups = groupIntersectingEntries(hiddenEntries)\n let moreLinkInputs: SegEntry[] = []\n let moreLinkCrudePlacements: TimelineSegPlacement[] = []\n const extractSeg = (entry: SegEntry) => segs[entry.index]\n\n for (let i = 0; i < hiddenGroups.length; i += 1) {\n let hiddenGroup = hiddenGroups[i]\n let sortedSegs = hiddenGroup.entries.map(extractSeg)\n let height = moreLinkHeights[buildIsoString(computeEarliestSegStart(sortedSegs))] // not optimal :(\n\n if (height != null) {\n // NOTE: the hiddenGroup's spanStart/spanEnd are already computed by rangeToCoords. computed during input.\n moreLinkInputs.push({\n index: segs.length + i, // out-of-bounds indexes map to hiddenGroups\n thickness: height,\n span: hiddenGroup.span,\n })\n } else {\n moreLinkCrudePlacements.push({\n seg: sortedSegs, // a Seg array signals a more-link\n hcoords: hiddenGroup.span,\n top: null,\n })\n }\n }\n\n // add more-links into the hierarchy, but don't limit\n hierarchy.maxStackCnt = -1\n hierarchy.addSegs(moreLinkInputs)\n\n let visibleRects = hierarchy.toRects()\n let visiblePlacements: TimelineSegPlacement[] = []\n let maxHeight = 0\n\n for (let rect of visibleRects) {\n let segIndex = rect.index\n visiblePlacements.push({\n seg: segIndex < segs.length\n ? segs[segIndex] // a real seg\n : hiddenGroups[segIndex - segs.length].entries.map(extractSeg), // signals a more-link\n hcoords: rect.span,\n top: rect.levelCoord,\n })\n maxHeight = Math.max(maxHeight, rect.levelCoord + rect.thickness)\n }\n\n return [\n visiblePlacements.concat(crudePlacements, hiddenPlacements, moreLinkCrudePlacements),\n maxHeight,\n ]\n}\n","import { createElement, StandardEvent, BaseComponent, MinimalEventProps, createFormatter } from '@fullcalendar/common'\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: false,\n})\n\nexport interface TimeColEventProps extends MinimalEventProps {\n isShort: boolean\n}\n\nexport class TimeColEvent extends BaseComponent<TimeColEventProps> {\n render() {\n let classNames = [\n 'fc-timegrid-event',\n 'fc-v-event',\n ]\n\n if (this.props.isShort) {\n classNames.push('fc-timegrid-event-short')\n }\n\n return (\n <StandardEvent\n {...this.props}\n defaultTimeFormat={DEFAULT_TIME_FORMAT}\n extraClassNames={classNames}\n />\n )\n }\n}\n","import {\n DateMarker, BaseComponent, createElement,\n DateRange, DayCellContent, DateProfile,\n} from '@fullcalendar/common'\n\nexport interface TimeColMiscProps { // should be given nowDate too??\n dateProfile: DateProfile\n date: DateMarker\n todayRange: DateRange\n extraHookProps?: any\n}\n\nexport class TimeColMisc extends BaseComponent<TimeColMiscProps> {\n render() {\n let { props } = this\n\n return (\n <DayCellContent date={props.date} dateProfile={props.dateProfile} todayRange={props.todayRange} extraHookProps={props.extraHookProps}>\n {(innerElRef, innerContent) => (\n innerContent &&\n <div className=\"fc-timegrid-col-misc\" ref={innerElRef}>{innerContent}</div>\n )}\n </DayCellContent>\n )\n }\n}\n","import {\n Ref, DateMarker, BaseComponent, createElement, EventSegUiInteractionState, Seg, getSegMeta,\n DateRange, Fragment, DayCellRoot, NowIndicatorRoot, BgEvent, renderFill, buildIsoString, computeEarliestSegStart,\n DateProfile, buildEventRangeKey, sortEventSegs, memoize, SegEntryGroup, SegEntry, Dictionary, SegSpan, CssDimValue,\n} from '@fullcalendar/common'\nimport { TimeColMoreLink } from './TimeColMoreLink'\nimport { TimeColsSeg } from './TimeColsSeg'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { SegWebRect } from './seg-web'\nimport { computeFgSegPlacements, computeSegVCoords } from './event-placement'\nimport { TimeColEvent } from './TimeColEvent'\nimport { TimeColMisc } from './TimeColMisc'\n\nexport interface TimeColProps {\n elRef?: Ref<HTMLTableCellElement>\n dateProfile: DateProfile\n date: DateMarker\n nowDate: DateMarker\n todayRange: DateRange\n extraDataAttrs?: any\n extraHookProps?: any\n extraClassNames?: string[]\n extraDateSpan?: Dictionary\n fgEventSegs: TimeColsSeg[]\n bgEventSegs: TimeColsSeg[]\n businessHourSegs: TimeColsSeg[]\n nowIndicatorSegs: TimeColsSeg[]\n dateSelectionSegs: TimeColsSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n slatCoords: TimeColsSlatsCoords\n forPrint: boolean\n}\n\nexport class TimeCol extends BaseComponent<TimeColProps> {\n sortEventSegs = memoize(sortEventSegs)\n // TODO: memoize event-placement?\n\n render() {\n let { props, context } = this\n let isSelectMirror = context.options.selectMirror\n\n let mirrorSegs: Seg[] = // yuck\n (props.eventDrag && props.eventDrag.segs) ||\n (props.eventResize && props.eventResize.segs) ||\n (isSelectMirror && props.dateSelectionSegs) ||\n []\n\n let interactionAffectedInstances = // TODO: messy way to compute this\n (props.eventDrag && props.eventDrag.affectedInstances) ||\n (props.eventResize && props.eventResize.affectedInstances) ||\n {}\n\n let sortedFgSegs = this.sortEventSegs(props.fgEventSegs, context.options.eventOrder) as TimeColsSeg[]\n\n return (\n <DayCellRoot\n elRef={props.elRef}\n date={props.date}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n extraHookProps={props.extraHookProps}\n >\n {(rootElRef, classNames, dataAttrs) => (\n <td\n ref={rootElRef}\n role=\"gridcell\"\n className={['fc-timegrid-col'].concat(classNames, props.extraClassNames || []).join(' ')}\n {...dataAttrs}\n {...props.extraDataAttrs}\n >\n <div className=\"fc-timegrid-col-frame\">\n <div className=\"fc-timegrid-col-bg\">\n {this.renderFillSegs(props.businessHourSegs, 'non-business')}\n {this.renderFillSegs(props.bgEventSegs, 'bg-event')}\n {this.renderFillSegs(props.dateSelectionSegs, 'highlight')}\n </div>\n <div className=\"fc-timegrid-col-events\">\n {this.renderFgSegs(\n sortedFgSegs,\n interactionAffectedInstances,\n false,\n false,\n false,\n )}\n </div>\n <div className=\"fc-timegrid-col-events\">\n {this.renderFgSegs(\n mirrorSegs as TimeColsSeg[],\n {},\n Boolean(props.eventDrag),\n Boolean(props.eventResize),\n Boolean(isSelectMirror),\n )}\n </div>\n <div className=\"fc-timegrid-now-indicator-container\">\n {this.renderNowIndicator(props.nowIndicatorSegs)}\n </div>\n <TimeColMisc\n date={props.date}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n extraHookProps={props.extraHookProps}\n />\n </div>\n </td>\n )}\n </DayCellRoot>\n )\n }\n\n renderFgSegs(\n sortedFgSegs: TimeColsSeg[],\n segIsInvisible: { [instanceId: string]: any },\n isDragging: boolean,\n isResizing: boolean,\n isDateSelecting: boolean,\n ) {\n let { props } = this\n if (props.forPrint) {\n return renderPlainFgSegs(sortedFgSegs, props)\n }\n return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting)\n }\n\n renderPositionedFgSegs(\n segs: TimeColsSeg[], // if not mirror, needs to be sorted\n segIsInvisible: { [instanceId: string]: any },\n isDragging: boolean,\n isResizing: boolean,\n isDateSelecting: boolean,\n ) {\n let { eventMaxStack, eventShortHeight, eventOrderStrict, eventMinHeight } = this.context.options\n let { date, slatCoords, eventSelection, todayRange, nowDate } = this.props\n let isMirror = isDragging || isResizing || isDateSelecting\n let segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight)\n let { segPlacements, hiddenGroups } = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack)\n\n return (\n <Fragment>\n {this.renderHiddenGroups(hiddenGroups, segs)}\n {segPlacements.map((segPlacement) => {\n let { seg, rect } = segPlacement\n let instanceId = seg.eventRange.instance.instanceId\n let isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect)\n let vStyle = computeSegVStyle(rect && rect.span)\n let hStyle = (!isMirror && rect) ? this.computeSegHStyle(rect) : { left: 0, right: 0 }\n let isInset = Boolean(rect) && rect.stackForward > 0\n let isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight // look at other places for this problem\n\n return (\n <div\n className={\n 'fc-timegrid-event-harness' +\n (isInset ? ' fc-timegrid-event-harness-inset' : '')\n }\n key={instanceId}\n style={{\n visibility: isVisible ? ('' as any) : 'hidden',\n ...vStyle,\n ...hStyle,\n }}\n >\n <TimeColEvent\n seg={seg}\n isDragging={isDragging}\n isResizing={isResizing}\n isDateSelecting={isDateSelecting}\n isSelected={instanceId === eventSelection}\n isShort={isShort}\n {...getSegMeta(seg, todayRange, nowDate)}\n />\n </div>\n )\n })}\n </Fragment>\n )\n }\n\n // will already have eventMinHeight applied because segInputs already had it\n renderHiddenGroups(hiddenGroups: SegEntryGroup[], segs: TimeColsSeg[]) {\n let { extraDateSpan, dateProfile, todayRange, nowDate, eventSelection, eventDrag, eventResize } = this.props\n return (\n <Fragment>\n {hiddenGroups.map((hiddenGroup) => {\n let positionCss = computeSegVStyle(hiddenGroup.span)\n let hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs)\n return (\n <TimeColMoreLink\n key={buildIsoString(computeEarliestSegStart(hiddenSegs))}\n hiddenSegs={hiddenSegs}\n top={positionCss.top}\n bottom={positionCss.bottom}\n extraDateSpan={extraDateSpan}\n dateProfile={dateProfile}\n todayRange={todayRange}\n nowDate={nowDate}\n eventSelection={eventSelection}\n eventDrag={eventDrag}\n eventResize={eventResize}\n />\n )\n })}\n </Fragment>\n )\n }\n\n renderFillSegs(segs: TimeColsSeg[], fillType: string) {\n let { props, context } = this\n let segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight) // don't assume all populated\n\n let children = segVCoords.map((vcoords, i) => {\n let seg = segs[i]\n return (\n <div\n key={buildEventRangeKey(seg.eventRange)}\n className=\"fc-timegrid-bg-harness\"\n style={computeSegVStyle(vcoords)}\n >\n {fillType === 'bg-event' ?\n <BgEvent seg={seg} {...getSegMeta(seg, props.todayRange, props.nowDate)} /> :\n renderFill(fillType)}\n </div>\n )\n })\n\n return <Fragment>{children}</Fragment>\n }\n\n renderNowIndicator(segs: TimeColsSeg[]) {\n let { slatCoords, date } = this.props\n\n if (!slatCoords) { return null }\n\n return segs.map((seg, i) => (\n <NowIndicatorRoot\n isAxis={false}\n date={date}\n // key doesn't matter. will only ever be one\n key={i} // eslint-disable-line react/no-array-index-key\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timegrid-now-indicator-line'].concat(classNames).join(' ')}\n style={{ top: slatCoords.computeDateTop(seg.start, date) }}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n ))\n }\n\n computeSegHStyle(segHCoords: SegWebRect) {\n let { isRtl, options } = this.context\n let shouldOverlap = options.slotEventOverlap\n let nearCoord = segHCoords.levelCoord // the left side if LTR. the right side if RTL. floating-point\n let farCoord = segHCoords.levelCoord + segHCoords.thickness // the right side if LTR. the left side if RTL. floating-point\n let left // amount of space from left edge, a fraction of the total width\n let right // amount of space from right edge, a fraction of the total width\n\n if (shouldOverlap) {\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\n farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2)\n }\n\n if (isRtl) {\n left = 1 - farCoord\n right = nearCoord\n } else {\n left = nearCoord\n right = 1 - farCoord\n }\n\n let props = {\n zIndex: segHCoords.stackDepth + 1, // convert from 0-base to 1-based\n left: left * 100 + '%',\n right: right * 100 + '%',\n }\n\n if (shouldOverlap && !segHCoords.stackForward) {\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\n props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2 // 10 is a guesstimate of the icon's width\n }\n\n return props\n }\n}\n\nexport function renderPlainFgSegs(\n sortedFgSegs: TimeColsSeg[],\n { todayRange, nowDate, eventSelection, eventDrag, eventResize }: {\n todayRange: DateRange\n nowDate: DateMarker\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n },\n) {\n let hiddenInstances =\n (eventDrag ? eventDrag.affectedInstances : null) ||\n (eventResize ? eventResize.affectedInstances : null) ||\n {}\n return (\n <Fragment>\n {sortedFgSegs.map((seg) => {\n let instanceId = seg.eventRange.instance.instanceId\n return (\n <div\n key={instanceId}\n style={{ visibility: hiddenInstances[instanceId] ? 'hidden' : ('' as any) }}\n >\n <TimeColEvent\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={instanceId === eventSelection}\n isShort={false}\n {...getSegMeta(seg, todayRange, nowDate)}\n />\n </div>\n )\n })}\n </Fragment>\n )\n}\n\nfunction computeSegVStyle(segVCoords: SegSpan | null): { top: CssDimValue, bottom: CssDimValue } {\n if (!segVCoords) {\n return { top: '', bottom: '' }\n }\n return {\n top: segVCoords.start,\n bottom: -segVCoords.end,\n }\n}\n\nfunction compileSegsFromEntries(\n segEntries: SegEntry[],\n allSegs: TimeColsSeg[],\n): TimeColsSeg[] {\n return segEntries.map((segEntry) => allSegs[segEntry.index])\n}\n","import {\n createElement, VNode,\n BaseComponent,\n EventSegUiInteractionState,\n CssDimValue,\n DateMarker,\n RefMap,\n createRef,\n PositionCache,\n memoize,\n DateRange,\n NowIndicatorRoot,\n DateProfile,\n DayTableCell,\n} from '@fullcalendar/common'\nimport { TimeColsSeg, splitSegsByCol, splitInteractionByCol } from './TimeColsSeg'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { TimeCol } from './TimeCol'\n\nexport interface TimeColsContentProps {\n axis: boolean\n cells: DayTableCell[]\n dateProfile: DateProfile\n nowDate: DateMarker\n todayRange: DateRange\n businessHourSegs: TimeColsSeg[]\n bgEventSegs: TimeColsSeg[]\n fgEventSegs: TimeColsSeg[]\n dateSelectionSegs: TimeColsSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n nowIndicatorSegs: TimeColsSeg[]\n clientWidth: number | null\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n slatCoords: TimeColsSlatsCoords\n onColCoords?: (colCoords: PositionCache) => void\n forPrint: boolean\n}\n\nexport class TimeColsContent extends BaseComponent<TimeColsContentProps> { // TODO: rename\n private splitFgEventSegs = memoize(splitSegsByCol)\n private splitBgEventSegs = memoize(splitSegsByCol)\n private splitBusinessHourSegs = memoize(splitSegsByCol)\n private splitNowIndicatorSegs = memoize(splitSegsByCol)\n private splitDateSelectionSegs = memoize(splitSegsByCol)\n private splitEventDrag = memoize(splitInteractionByCol)\n private splitEventResize = memoize(splitInteractionByCol)\n private rootElRef = createRef<HTMLDivElement>()\n private cellElRefs = new RefMap<HTMLTableCellElement>()\n\n render() {\n let { props, context } = this\n let nowIndicatorTop =\n context.options.nowIndicator &&\n props.slatCoords &&\n props.slatCoords.safeComputeTop(props.nowDate) // might return void\n\n let colCnt = props.cells.length\n let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt)\n let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt)\n let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt)\n let nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt)\n let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt)\n let eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt)\n let eventResizeByRow = this.splitEventResize(props.eventResize, colCnt)\n\n return (\n <div className=\"fc-timegrid-cols\" ref={this.rootElRef}>\n <table\n role=\"presentation\"\n style={{\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n }}\n >\n {props.tableColGroupNode}\n <tbody role=\"presentation\">\n <tr role=\"row\">\n {props.axis && (\n <td aria-hidden className=\"fc-timegrid-col fc-timegrid-axis\">\n <div className=\"fc-timegrid-col-frame\">\n <div className=\"fc-timegrid-now-indicator-container\">\n {typeof nowIndicatorTop === 'number' && (\n <NowIndicatorRoot isAxis date={props.nowDate}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' ')}\n style={{ top: nowIndicatorTop }}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n )}\n </div>\n </div>\n </td>\n )}\n {props.cells.map((cell, i) => (\n <TimeCol\n key={cell.key}\n elRef={this.cellElRefs.createRef(cell.key)}\n dateProfile={props.dateProfile}\n date={cell.date}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n extraHookProps={cell.extraHookProps}\n extraDataAttrs={cell.extraDataAttrs}\n extraClassNames={cell.extraClassNames}\n extraDateSpan={cell.extraDateSpan}\n fgEventSegs={fgEventSegsByRow[i]}\n bgEventSegs={bgEventSegsByRow[i]}\n businessHourSegs={businessHourSegsByRow[i]}\n nowIndicatorSegs={nowIndicatorSegsByRow[i]}\n dateSelectionSegs={dateSelectionSegsByRow[i]}\n eventDrag={eventDragByRow[i]}\n eventResize={eventResizeByRow[i]}\n slatCoords={props.slatCoords}\n eventSelection={props.eventSelection}\n forPrint={props.forPrint}\n />\n ))}\n </tr>\n </tbody>\n </table>\n </div>\n )\n }\n\n componentDidMount() {\n this.updateCoords()\n }\n\n componentDidUpdate() {\n this.updateCoords()\n }\n\n updateCoords() {\n let { props } = this\n\n if (\n props.onColCoords &&\n props.clientWidth !== null // means sizing has stabilized\n ) {\n props.onColCoords(\n new PositionCache(\n this.rootElRef.current,\n collectCellEls(this.cellElRefs.currentMap, props.cells),\n true, // horizontal\n false,\n ),\n )\n }\n }\n}\n\nfunction collectCellEls(elMap: { [key: string]: HTMLElement }, cells: DayTableCell[]) {\n return cells.map((cell) => elMap[cell.key])\n}\n","import {\n createElement, VNode,\n addDurations,\n multiplyDuration,\n wholeDivideDurations,\n DateMarker,\n EventSegUiInteractionState,\n memoize,\n CssDimValue,\n PositionCache,\n ScrollResponder,\n ScrollRequest,\n DateRange,\n Duration,\n DateProfile,\n DayTableCell,\n Hit,\n DateComponent,\n} from '@fullcalendar/common'\nimport { TimeColsSlats } from './TimeColsSlats'\nimport { TimeSlatMeta } from './time-slat-meta'\nimport { TimeColsContent } from './TimeColsContent'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { TimeColsSeg } from './TimeColsSeg'\n\nexport interface TimeColsProps {\n cells: DayTableCell[]\n dateProfile: DateProfile\n slotDuration: Duration\n nowDate: DateMarker\n todayRange: DateRange\n businessHourSegs: TimeColsSeg[]\n bgEventSegs: TimeColsSeg[]\n fgEventSegs: TimeColsSeg[]\n dateSelectionSegs: TimeColsSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n tableColGroupNode: VNode\n tableMinWidth: CssDimValue\n clientWidth: number | null\n clientHeight: number | null\n expandRows: boolean\n nowIndicatorSegs: TimeColsSeg[]\n onScrollTopRequest?: (scrollTop: number) => void\n forPrint: boolean\n axis: boolean\n slatMetas: TimeSlatMeta[]\n onSlatCoords?: (slatCoords: TimeColsSlatsCoords) => void\n isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean\n}\n\ninterface TimeColsState {\n slatCoords: TimeColsSlatsCoords | null\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport class TimeCols extends DateComponent<TimeColsProps, TimeColsState> {\n private processSlotOptions = memoize(processSlotOptions)\n private scrollResponder: ScrollResponder\n private colCoords: PositionCache\n\n state = {\n slatCoords: null,\n }\n\n render() {\n let { props, state } = this\n\n return (\n <div\n className=\"fc-timegrid-body\"\n ref={this.handleRootEl}\n style={{\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n }}\n >\n <TimeColsSlats\n axis={props.axis}\n dateProfile={props.dateProfile}\n slatMetas={props.slatMetas}\n clientWidth={props.clientWidth}\n minHeight={props.expandRows ? props.clientHeight : ''}\n tableMinWidth={props.tableMinWidth}\n tableColGroupNode={props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */}\n onCoords={this.handleSlatCoords}\n />\n <TimeColsContent\n cells={props.cells}\n axis={props.axis}\n dateProfile={props.dateProfile}\n businessHourSegs={props.businessHourSegs}\n bgEventSegs={props.bgEventSegs}\n fgEventSegs={props.fgEventSegs}\n dateSelectionSegs={props.dateSelectionSegs}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n todayRange={props.todayRange}\n nowDate={props.nowDate}\n nowIndicatorSegs={props.nowIndicatorSegs}\n clientWidth={props.clientWidth}\n tableMinWidth={props.tableMinWidth}\n tableColGroupNode={props.tableColGroupNode}\n slatCoords={state.slatCoords}\n onColCoords={this.handleColCoords}\n forPrint={props.forPrint}\n />\n </div>\n )\n }\n\n handleRootEl = (el: HTMLElement | null) => {\n if (el) {\n this.context.registerInteractiveComponent(this, {\n el,\n isHitComboAllowed: this.props.isHitComboAllowed,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n componentDidMount() {\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest)\n }\n\n componentDidUpdate(prevProps: TimeColsProps) {\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile)\n }\n\n componentWillUnmount() {\n this.scrollResponder.detach()\n }\n\n handleScrollRequest = (request: ScrollRequest) => {\n let { onScrollTopRequest } = this.props\n let { slatCoords } = this.state\n\n if (onScrollTopRequest && slatCoords) {\n if (request.time) {\n let top = slatCoords.computeTimeTop(request.time)\n top = Math.ceil(top) // zoom can give weird floating-point values. rather scroll a little bit further\n if (top) {\n top += 1 // to overcome top border that slots beyond the first have. looks better\n }\n\n onScrollTopRequest(top)\n }\n\n return true\n }\n\n return false\n }\n\n handleColCoords = (colCoords: PositionCache | null) => {\n this.colCoords = colCoords\n }\n\n handleSlatCoords = (slatCoords: TimeColsSlatsCoords | null) => {\n this.setState({ slatCoords })\n\n if (this.props.onSlatCoords) {\n this.props.onSlatCoords(slatCoords)\n }\n }\n\n queryHit(positionLeft: number, positionTop: number): Hit {\n let { dateEnv, options } = this.context\n let { colCoords } = this\n let { dateProfile } = this.props\n let { slatCoords } = this.state\n let { snapDuration, snapsPerSlot } = this.processSlotOptions(this.props.slotDuration, options.snapDuration)\n\n let colIndex = colCoords.leftToIndex(positionLeft)\n let slatIndex = slatCoords.positions.topToIndex(positionTop)\n\n if (colIndex != null && slatIndex != null) {\n let cell = this.props.cells[colIndex]\n let slatTop = slatCoords.positions.tops[slatIndex]\n let slatHeight = slatCoords.positions.getHeight(slatIndex)\n let partial = (positionTop - slatTop) / slatHeight // floating point number between 0 and 1\n let localSnapIndex = Math.floor(partial * snapsPerSlot) // the snap # relative to start of slat\n let snapIndex = slatIndex * snapsPerSlot + localSnapIndex\n\n let dayDate = this.props.cells[colIndex].date\n let time = addDurations(\n dateProfile.slotMinTime,\n multiplyDuration(snapDuration, snapIndex),\n )\n\n let start = dateEnv.add(dayDate, time)\n let end = dateEnv.add(start, snapDuration)\n\n return {\n dateProfile,\n dateSpan: {\n range: { start, end },\n allDay: false,\n ...cell.extraDateSpan,\n },\n dayEl: colCoords.els[colIndex],\n rect: {\n left: colCoords.lefts[colIndex],\n right: colCoords.rights[colIndex],\n top: slatTop,\n bottom: slatTop + slatHeight,\n },\n layer: 0,\n }\n }\n\n return null\n }\n}\n\nfunction processSlotOptions(slotDuration: Duration, snapDurationOverride: Duration | null) {\n let snapDuration = snapDurationOverride || slotDuration\n let snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration)\n\n if (snapsPerSlot === null) {\n snapDuration = slotDuration\n snapsPerSlot = 1\n // TODO: say warning?\n }\n\n return { snapDuration, snapsPerSlot }\n}\n","import { intersectRanges, DateRange, Slicer } from '@fullcalendar/common'\nimport { TimeColsSeg } from './TimeColsSeg'\n\nexport class DayTimeColsSlicer extends Slicer<TimeColsSeg, [DateRange[]]> {\n sliceRange(range: DateRange, dayRanges: DateRange[]): TimeColsSeg[] {\n let segs: TimeColsSeg[] = []\n\n for (let col = 0; col < dayRanges.length; col += 1) {\n let segRange = intersectRanges(range, dayRanges[col])\n\n if (segRange) {\n segs.push({\n start: segRange.start,\n end: segRange.end,\n isStart: segRange.start.valueOf() === range.start.valueOf(),\n isEnd: segRange.end.valueOf() === range.end.valueOf(),\n col,\n })\n }\n }\n\n return segs\n }\n}\n","import {\n createElement,\n createRef,\n VNode,\n DateComponent,\n DateProfile,\n EventStore,\n EventUiHash,\n EventInteractionState,\n DateSpan,\n memoize,\n DateRange,\n DayTableModel,\n DateEnv,\n DateMarker,\n NowTimer,\n CssDimValue,\n Duration,\n} from '@fullcalendar/common'\nimport { TimeCols } from './TimeCols'\nimport { TimeSlatMeta } from './time-slat-meta'\nimport { TimeColsSlatsCoords } from './TimeColsSlatsCoords'\nimport { DayTimeColsSlicer } from './DayTimeColsSlicer'\n\nexport interface DayTimeColsProps {\n dateProfile: DateProfile\n dayTableModel: DayTableModel\n axis: boolean\n slotDuration: Duration\n slatMetas: TimeSlatMeta[]\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n tableColGroupNode: VNode\n tableMinWidth: CssDimValue\n clientWidth: number | null\n clientHeight: number | null\n expandRows: boolean\n onScrollTopRequest?: (scrollTop: number) => void\n forPrint: boolean\n onSlatCoords?: (slatCoords: TimeColsSlatsCoords) => void\n}\n\nexport class DayTimeCols extends DateComponent<DayTimeColsProps> {\n private buildDayRanges = memoize(buildDayRanges)\n private slicer = new DayTimeColsSlicer()\n private timeColsRef = createRef<TimeCols>()\n\n render() {\n let { props, context } = this\n let { dateProfile, dayTableModel } = props\n\n let isNowIndicator = context.options.nowIndicator\n let dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv)\n\n // give it the first row of cells\n // TODO: would move this further down hierarchy, but sliceNowDate needs it\n return (\n <NowTimer unit={isNowIndicator ? 'minute' : 'day'}>\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <TimeCols\n ref={this.timeColsRef}\n {...this.slicer.sliceProps(props, dateProfile, null, context, dayRanges)}\n forPrint={props.forPrint}\n axis={props.axis}\n dateProfile={dateProfile}\n slatMetas={props.slatMetas}\n slotDuration={props.slotDuration}\n cells={dayTableModel.cells[0]}\n tableColGroupNode={props.tableColGroupNode}\n tableMinWidth={props.tableMinWidth}\n clientWidth={props.clientWidth}\n clientHeight={props.clientHeight}\n expandRows={props.expandRows}\n nowDate={nowDate}\n nowIndicatorSegs={isNowIndicator && this.slicer.sliceNowDate(nowDate, context, dayRanges)}\n todayRange={todayRange}\n onScrollTopRequest={props.onScrollTopRequest}\n onSlatCoords={props.onSlatCoords}\n />\n )}\n </NowTimer>\n )\n }\n}\n\nexport function buildDayRanges(dayTableModel: DayTableModel, dateProfile: DateProfile, dateEnv: DateEnv): DateRange[] {\n let ranges: DateRange[] = []\n\n for (let date of dayTableModel.headerDates) {\n ranges.push({\n start: dateEnv.add(date, dateProfile.slotMinTime),\n end: dateEnv.add(date, dateProfile.slotMaxTime),\n })\n }\n\n return ranges\n}\n","import {\n createDuration,\n asRoughMs,\n formatIsoTimeString,\n addDurations,\n wholeDivideDurations,\n Duration,\n DateMarker,\n DateEnv,\n} from '@fullcalendar/common'\n\nexport interface TimeSlatMeta {\n date: DateMarker\n time: Duration\n key: string\n isoTimeStr: string\n isLabeled: boolean\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst STOCK_SUB_DURATIONS = [\n { hours: 1 },\n { minutes: 30 },\n { minutes: 15 },\n { seconds: 30 },\n { seconds: 15 },\n]\n\nexport function buildSlatMetas(\n slotMinTime: Duration,\n slotMaxTime: Duration,\n explicitLabelInterval: Duration | null,\n slotDuration: Duration,\n dateEnv: DateEnv,\n) {\n let dayStart = new Date(0)\n let slatTime = slotMinTime\n let slatIterator = createDuration(0)\n let labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration)\n let metas: TimeSlatMeta[] = []\n\n while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n let date = dateEnv.add(dayStart, slatTime)\n let isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null\n\n metas.push({\n date,\n time: slatTime,\n key: date.toISOString(), // we can't use the isoTimeStr for uniqueness when minTime/maxTime beyone 0h/24h\n isoTimeStr: formatIsoTimeString(date),\n isLabeled,\n })\n\n slatTime = addDurations(slatTime, slotDuration)\n slatIterator = addDurations(slatIterator, slotDuration)\n }\n\n return metas\n}\n\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n let i\n let labelInterval\n let slotsPerLabel\n\n // find the smallest stock label interval that results in more than one slots-per-label\n for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n labelInterval = createDuration(STOCK_SUB_DURATIONS[i])\n slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration)\n if (slotsPerLabel !== null && slotsPerLabel > 1) {\n return labelInterval\n }\n }\n\n return slotDuration // fall back\n}\n","import {\n createElement,\n DateProfileGenerator, DateProfile,\n DayHeader,\n DaySeriesModel,\n DayTableModel,\n memoize,\n ChunkContentCallbackArgs,\n} from '@fullcalendar/common'\nimport { DayTable } from '@fullcalendar/daygrid'\nimport { TimeColsView } from './TimeColsView'\nimport { DayTimeCols } from './DayTimeCols'\nimport { buildSlatMetas } from './time-slat-meta'\n\nexport class DayTimeColsView extends TimeColsView {\n private buildTimeColsModel = memoize(buildTimeColsModel)\n private buildSlatMetas = memoize(buildSlatMetas)\n\n render() {\n let { options, dateEnv, dateProfileGenerator } = this.context\n let { props } = this\n let { dateProfile } = props\n let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator)\n let splitProps = this.allDaySplitter.splitProps(props)\n let slatMetas = this.buildSlatMetas(\n dateProfile.slotMinTime,\n dateProfile.slotMaxTime,\n options.slotLabelInterval,\n options.slotDuration,\n dateEnv,\n )\n let { dayMinWidth } = options\n let hasAttachedAxis = !dayMinWidth\n let hasDetachedAxis = dayMinWidth\n\n let headerContent = options.dayHeaders && (\n <DayHeader\n dates={dayTableModel.headerDates}\n dateProfile={dateProfile}\n datesRepDistinctDays\n renderIntro={hasAttachedAxis ? this.renderHeadAxis : null}\n />\n )\n\n let allDayContent = (options.allDaySlot !== false) && ((contentArg: ChunkContentCallbackArgs) => (\n <DayTable\n {...splitProps.allDay}\n dateProfile={dateProfile}\n dayTableModel={dayTableModel}\n nextDayThreshold={options.nextDayThreshold}\n tableMinWidth={contentArg.tableMinWidth}\n colGroupNode={contentArg.tableColGroupNode}\n renderRowIntro={hasAttachedAxis ? this.renderTableRowAxis : null}\n showWeekNumbers={false}\n expandRows={false}\n headerAlignElRef={this.headerElRef}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n forPrint={props.forPrint}\n {...this.getAllDayMaxEventProps()}\n />\n ))\n\n let timeGridContent = (contentArg: ChunkContentCallbackArgs) => (\n <DayTimeCols\n {...splitProps.timed}\n dayTableModel={dayTableModel}\n dateProfile={dateProfile}\n axis={hasAttachedAxis}\n slotDuration={options.slotDuration}\n slatMetas={slatMetas}\n forPrint={props.forPrint}\n tableColGroupNode={contentArg.tableColGroupNode}\n tableMinWidth={contentArg.tableMinWidth}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n onSlatCoords={this.handleSlatCoords}\n expandRows={contentArg.expandRows}\n onScrollTopRequest={this.handleScrollTopRequest}\n />\n )\n\n return hasDetachedAxis\n ? this.renderHScrollLayout(\n headerContent,\n allDayContent,\n timeGridContent,\n dayTableModel.colCnt,\n dayMinWidth,\n slatMetas,\n this.state.slatCoords,\n )\n : this.renderSimpleLayout(\n headerContent,\n allDayContent,\n timeGridContent,\n )\n }\n}\n\nexport function buildTimeColsModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {\n let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator)\n\n return new DayTableModel(daySeries, false)\n}\n","import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n\n const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n const _ref = props,\n {\n style,\n children,\n scrollTop,\n scrollLeft\n } = _ref,\n attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n if (children !== void 0) {\n instance.textContent = children;\n }\n\n for (let name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n}\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n constructor(_ref) {\n let {\n x,\n y,\n z\n } = _ref,\n style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const inputs = [];\n const transforms = [];\n\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n }\n\n eachProp(style, (value, key) => {\n if (key === 'transform') {\n inputs.push([value || '']);\n transforms.push(transform => [transform, transform === '']);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value)) return;\n const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n inputs.push(toArray(value));\n transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n }\n });\n\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n\n super(style);\n }\n\n}\n\nclass FluidTransform extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this._value = null;\n this.inputs = inputs;\n this.transforms = transforms;\n }\n\n get() {\n return this._value || (this._value = this._get());\n }\n\n _get() {\n let transform = '';\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n transform += ' ' + t;\n identity = identity && id;\n });\n return identity ? 'none' : transform;\n }\n\n observerAdded(count) {\n if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n }\n\n observerRemoved(count) {\n if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._value = null;\n }\n\n callFluidObservers(this, event);\n }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nconst host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: style => new AnimatedStyle(style),\n getComponentProps: _ref => {\n let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return props;\n }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\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","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import {\n BaseComponent, DateMarker, createElement, DateRange, getDateMeta,\n RenderHook, DayHeaderContentArg, getDayClassNames, formatDayString, Fragment, buildNavLinkAttrs, getUniqueDomId,\n} from '@fullcalendar/common'\n\nexport interface ListViewHeaderRowProps {\n cellId: string\n dayDate: DateMarker\n todayRange: DateRange\n}\n\ninterface HookProps extends DayHeaderContentArg { // doesn't enforce much since DayCellContentArg allow extra props\n textId: string // for aria-labelledby\n text: string\n sideText: string\n}\n\nexport class ListViewHeaderRow extends BaseComponent<ListViewHeaderRowProps> {\n state = {\n textId: getUniqueDomId(),\n }\n\n render() {\n let { theme, dateEnv, options, viewApi } = this.context\n let { cellId, dayDate, todayRange } = this.props\n let { textId } = this.state\n let dayMeta = getDateMeta(dayDate, todayRange)\n\n // will ever be falsy?\n let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : ''\n\n // will ever be falsy? also, BAD NAME \"alt\"\n let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : ''\n\n let hookProps: HookProps = {\n date: dateEnv.toDate(dayDate),\n view: viewApi,\n textId,\n text,\n sideText,\n navLinkAttrs: buildNavLinkAttrs(this.context, dayDate),\n sideNavLinkAttrs: buildNavLinkAttrs(this.context, dayDate, 'day', false),\n ...dayMeta,\n }\n\n let classNames = ['fc-list-day'].concat(\n getDayClassNames(dayMeta, theme),\n )\n\n // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)\n return (\n <RenderHook<HookProps>\n hookProps={hookProps}\n classNames={options.dayHeaderClassNames}\n content={options.dayHeaderContent}\n defaultContent={renderInnerContent}\n didMount={options.dayHeaderDidMount}\n willUnmount={options.dayHeaderWillUnmount}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <tr\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n data-date={formatDayString(dayDate)}\n >\n {/* TODO: force-hide top border based on :first-child */}\n <th scope=\"colgroup\" colSpan={3} id={cellId} aria-labelledby={textId}>\n <div className={'fc-list-day-cushion ' + theme.getClass('tableCellShaded')} ref={innerElRef}>\n {innerContent}\n </div>\n </th>\n </tr>\n )}\n </RenderHook>\n )\n }\n}\n\nfunction renderInnerContent(props: HookProps) {\n return (\n <Fragment>\n {props.text && (\n <a id={props.textId} className=\"fc-list-day-text\" {...props.navLinkAttrs}>\n {props.text}\n </a>\n )}\n {props.sideText && (/* not keyboard tabbable */\n <a aria-hidden className=\"fc-list-day-side-text\" {...props.sideNavLinkAttrs}>\n {props.sideText}\n </a>\n )}\n </Fragment>\n )\n}\n","import {\n MinimalEventProps, BaseComponent, ViewContext, createElement, AllDayContentArg,\n Seg, isMultiDayRange, DateFormatter, buildSegTimeText, createFormatter, EventRoot, ComponentChildren, RenderHook, getSegAnchorAttrs,\n} from '@fullcalendar/common'\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short',\n})\n\nexport interface ListViewEventRowProps extends MinimalEventProps {\n timeHeaderId: string\n eventHeaderId: string\n dateHeaderId: string\n}\n\nexport class ListViewEventRow extends BaseComponent<ListViewEventRowProps> {\n render() {\n let { props, context } = this\n let { seg, timeHeaderId, eventHeaderId, dateHeaderId } = props\n let timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT\n\n return (\n <EventRoot\n seg={seg}\n timeText=\"\" // BAD. because of all-day content\n disableDragging\n disableResizing\n defaultContent={() => renderEventInnerContent(seg, context) /* weird */}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n isSelected={props.isSelected}\n isDragging={props.isDragging}\n isResizing={props.isResizing}\n isDateSelecting={props.isDateSelecting}\n >\n {(rootElRef, classNames, innerElRef, innerContent, hookProps) => (\n <tr className={['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' ')} ref={rootElRef}>\n {buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId)}\n <td aria-hidden className=\"fc-list-event-graphic\">\n <span className=\"fc-list-event-dot\" style={{ borderColor: hookProps.borderColor || hookProps.backgroundColor }} />\n </td>\n <td ref={innerElRef} headers={`${eventHeaderId} ${dateHeaderId}`} className=\"fc-list-event-title\">\n {innerContent}\n </td>\n </tr>\n )}\n </EventRoot>\n )\n }\n}\n\nfunction renderEventInnerContent(seg: Seg, context: ViewContext) {\n let interactiveAttrs = getSegAnchorAttrs(seg, context)\n return (\n <a {...interactiveAttrs}>\n {/* TODO: document how whole row become clickable */}\n {seg.eventRange.def.title}\n </a>\n )\n}\n\nfunction buildTimeContent(\n seg: Seg,\n timeFormat: DateFormatter,\n context: ViewContext,\n timeHeaderId: string,\n dateHeaderId: string,\n): ComponentChildren {\n let { options } = context\n\n if (options.displayEventTime !== false) {\n let eventDef = seg.eventRange.def\n let eventInstance = seg.eventRange.instance\n let doAllDay = false\n let timeText: string\n\n if (eventDef.allDay) {\n doAllDay = true\n } else if (isMultiDayRange(seg.eventRange.range)) { // TODO: use (!isStart || !isEnd) instead?\n if (seg.isStart) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n eventInstance.range.start,\n seg.end,\n )\n } else if (seg.isEnd) {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n null,\n null,\n seg.start,\n eventInstance.range.end,\n )\n } else {\n doAllDay = true\n }\n } else {\n timeText = buildSegTimeText(\n seg,\n timeFormat,\n context,\n )\n }\n\n if (doAllDay) {\n let hookProps: AllDayContentArg = {\n text: context.options.allDayText,\n view: context.viewApi,\n }\n\n return (\n <RenderHook<AllDayContentArg> // needed?\n hookProps={hookProps}\n classNames={options.allDayClassNames}\n content={options.allDayContent}\n defaultContent={renderAllDayInner}\n didMount={options.allDayDidMount}\n willUnmount={options.allDayWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <td ref={rootElRef} headers={`${timeHeaderId} ${dateHeaderId}`} className={['fc-list-event-time'].concat(classNames).join(' ')}>\n {innerContent}\n </td>\n )}\n </RenderHook>\n )\n }\n\n return (\n <td className=\"fc-list-event-time\">\n {timeText}\n </td>\n )\n }\n\n return null\n}\n\nfunction renderAllDayInner(hookProps) {\n return hookProps.text\n}\n","import {\n createElement,\n ViewProps,\n Scroller,\n DateMarker,\n addDays,\n startOfDay,\n DateRange,\n intersectRanges,\n DateProfile,\n EventUiHash,\n EventRenderRange,\n sliceEventStore,\n EventStore,\n memoize,\n Seg,\n VNode,\n sortEventSegs,\n getSegMeta,\n NowTimer,\n ViewRoot,\n RenderHook,\n DateComponent,\n ViewApi,\n MountArg,\n getUniqueDomId,\n formatDayString,\n} from '@fullcalendar/common'\nimport { ListViewHeaderRow } from './ListViewHeaderRow'\nimport { ListViewEventRow } from './ListViewEventRow'\n\nexport interface NoEventsContentArg {\n text: string\n view: ViewApi\n}\n\nexport type NoEventsMountArg = MountArg<NoEventsContentArg>\n\n/*\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\n*/\nexport class ListView extends DateComponent<ViewProps> {\n private computeDateVars = memoize(computeDateVars)\n private eventStoreToSegs = memoize(this._eventStoreToSegs)\n state = {\n timeHeaderId: getUniqueDomId(),\n eventHeaderId: getUniqueDomId(),\n dateHeaderIdRoot: getUniqueDomId(),\n }\n\n render() {\n let { props, context } = this\n\n let extraClassNames = [\n 'fc-list',\n context.theme.getClass('table'), // just for the outer border. will be on div\n context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : '',\n ]\n\n let { dayDates, dayRanges } = this.computeDateVars(props.dateProfile)\n let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges)\n\n return (\n <ViewRoot viewSpec={context.viewSpec} elRef={this.setRootEl}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={extraClassNames.concat(classNames).join(' ')}>\n <Scroller\n liquid={!props.isHeightAuto}\n overflowX={props.isHeightAuto ? 'visible' : 'hidden'}\n overflowY={props.isHeightAuto ? 'visible' : 'auto'}\n >\n {eventSegs.length > 0 ?\n this.renderSegList(eventSegs, dayDates) :\n this.renderEmptyMessage()}\n </Scroller>\n </div>\n )}\n </ViewRoot>\n )\n }\n\n setRootEl = (rootEl: HTMLDivElement | null) => {\n if (rootEl) {\n this.context.registerInteractiveComponent(this, { // TODO: make aware that it doesn't do Hits\n el: rootEl,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n renderEmptyMessage() {\n let { options, viewApi } = this.context\n let hookProps: NoEventsContentArg = {\n text: options.noEventsText,\n view: viewApi,\n }\n\n return (\n <RenderHook<NoEventsContentArg> // needed???\n hookProps={hookProps}\n classNames={options.noEventsClassNames}\n content={options.noEventsContent}\n defaultContent={renderNoEventsInner}\n didMount={options.noEventsDidMount}\n willUnmount={options.noEventsWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div className={['fc-list-empty'].concat(classNames).join(' ')} ref={rootElRef}>\n <div className=\"fc-list-empty-cushion\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n )}\n </RenderHook>\n )\n }\n\n renderSegList(allSegs: Seg[], dayDates: DateMarker[]) {\n let { theme, options } = this.context\n let { timeHeaderId, eventHeaderId, dateHeaderIdRoot } = this.state\n let segsByDay = groupSegsByDay(allSegs) // sparse array\n\n return (\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => {\n let innerNodes: VNode[] = []\n\n for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {\n let daySegs = segsByDay[dayIndex]\n\n if (daySegs) { // sparse array, so might be undefined\n let dayStr = formatDayString(dayDates[dayIndex])\n let dateHeaderId = dateHeaderIdRoot + '-' + dayStr\n\n // append a day header\n innerNodes.push(\n <ListViewHeaderRow\n key={dayStr}\n cellId={dateHeaderId}\n dayDate={dayDates[dayIndex]}\n todayRange={todayRange}\n />,\n )\n\n daySegs = sortEventSegs(daySegs, options.eventOrder)\n\n for (let seg of daySegs) {\n innerNodes.push(\n <ListViewEventRow\n key={dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */}\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={false}\n timeHeaderId={timeHeaderId}\n eventHeaderId={eventHeaderId}\n dateHeaderId={dateHeaderId}\n {...getSegMeta(seg, todayRange, nowDate)}\n />,\n )\n }\n }\n }\n\n return (\n <table className={'fc-list-table ' + theme.getClass('table')}>\n <thead>\n <tr>\n <th scope=\"col\" id={timeHeaderId}>{options.timeHint}</th>\n <th scope=\"col\" aria-hidden />\n <th scope=\"col\" id={eventHeaderId}>{options.eventHint}</th>\n </tr>\n </thead>\n <tbody>{innerNodes}</tbody>\n </table>\n )\n }}\n </NowTimer>\n )\n }\n\n _eventStoreToSegs(eventStore: EventStore, eventUiBases: EventUiHash, dayRanges: DateRange[]): Seg[] {\n return this.eventRangesToSegs(\n sliceEventStore(\n eventStore,\n eventUiBases,\n this.props.dateProfile.activeRange,\n this.context.options.nextDayThreshold,\n ).fg,\n dayRanges,\n )\n }\n\n eventRangesToSegs(eventRanges: EventRenderRange[], dayRanges: DateRange[]) {\n let segs = []\n\n for (let eventRange of eventRanges) {\n segs.push(...this.eventRangeToSegs(eventRange, dayRanges))\n }\n\n return segs\n }\n\n eventRangeToSegs(eventRange: EventRenderRange, dayRanges: DateRange[]) {\n let { dateEnv } = this.context\n let { nextDayThreshold } = this.context.options\n let range = eventRange.range\n let allDay = eventRange.def.allDay\n let dayIndex\n let segRange\n let seg\n let segs = []\n\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {\n segRange = intersectRanges(range, dayRanges[dayIndex])\n\n if (segRange) {\n seg = {\n component: this,\n eventRange,\n start: segRange.start,\n end: segRange.end,\n isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),\n isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),\n dayIndex,\n }\n\n segs.push(seg)\n\n // detect when range won't go fully into the next day,\n // and mutate the latest seg to the be the end.\n if (\n !seg.isEnd && !allDay &&\n dayIndex + 1 < dayRanges.length &&\n range.end <\n dateEnv.add(\n dayRanges[dayIndex + 1].start,\n nextDayThreshold,\n )\n ) {\n seg.end = range.end\n seg.isEnd = true\n break\n }\n }\n }\n\n return segs\n }\n}\n\nfunction renderNoEventsInner(hookProps) {\n return hookProps.text\n}\n\nfunction computeDateVars(dateProfile: DateProfile) {\n let dayStart = startOfDay(dateProfile.renderRange.start)\n let viewEnd = dateProfile.renderRange.end\n let dayDates: DateMarker[] = []\n let dayRanges: DateRange[] = []\n\n while (dayStart < viewEnd) {\n dayDates.push(dayStart)\n\n dayRanges.push({\n start: dayStart,\n end: addDays(dayStart, 1),\n })\n\n dayStart = addDays(dayStart, 1)\n }\n\n return { dayDates, dayRanges }\n}\n\n// Returns a sparse array of arrays, segs grouped by their dayIndex\nfunction groupSegsByDay(segs): Seg[][] {\n let segsByDay = [] // sparse array\n let i\n let seg\n\n for (i = 0; i < segs.length; i += 1) {\n seg = segs[i];\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\n .push(seg)\n }\n\n return segsByDay\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","import {\n VNode, createElement,\n SimpleScrollGrid,\n SimpleScrollGridSection,\n ChunkContentCallbackArgs,\n createRef,\n ScrollGridSectionConfig,\n ViewRoot,\n DateComponent,\n ViewProps,\n RefObject,\n renderScrollShim,\n getStickyHeaderDates,\n getStickyFooterScrollbar,\n ChunkConfigRowContent,\n Dictionary,\n} from '@fullcalendar/common'\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\n\nexport abstract class TableView<State=Dictionary> extends DateComponent<ViewProps, State> {\n protected headerElRef: RefObject<HTMLTableCellElement> = createRef<HTMLTableCellElement>()\n\n renderSimpleLayout(\n headerRowContent: ChunkConfigRowContent,\n bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode,\n ) {\n let { props, context } = this\n let sections: SimpleScrollGridSection[] = []\n let stickyHeaderDates = getStickyHeaderDates(context.options)\n\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n })\n }\n\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunk: { content: bodyContent },\n })\n\n return (\n <ViewRoot viewSpec={context.viewSpec}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={['fc-daygrid'].concat(classNames).join(' ')}>\n <SimpleScrollGrid\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={props.forPrint}\n cols={[] /* TODO: make optional? */}\n sections={sections}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n\n renderHScrollLayout(\n headerRowContent: ChunkConfigRowContent,\n bodyContent: (contentArg: ChunkContentCallbackArgs) => VNode,\n colCnt: number,\n dayMinWidth: number,\n ) {\n let ScrollGrid = this.context.pluginHooks.scrollGridImpl\n\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation')\n }\n\n let { props, context } = this\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options)\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options)\n let sections: ScrollGridSectionConfig[] = []\n\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunks: [{\n key: 'main',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n }],\n })\n }\n\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunks: [{\n key: 'main',\n content: bodyContent,\n }],\n })\n\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [{\n key: 'main',\n content: renderScrollShim,\n }],\n })\n }\n\n return (\n <ViewRoot viewSpec={context.viewSpec}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={['fc-daygrid'].concat(classNames).join(' ')}>\n <ScrollGrid\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={props.forPrint}\n colGroups={[{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }]}\n sections={sections}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n}\n","import { EventSegUiInteractionState, Seg } from '@fullcalendar/common'\n\n// this is a DATA STRUCTURE, not a component\n\nexport interface TableSeg extends Seg {\n row: number\n firstCol: number\n lastCol: number\n}\n\nexport function splitSegsByRow(segs: TableSeg[], rowCnt: number) {\n let byRow: TableSeg[][] = []\n\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = []\n }\n\n for (let seg of segs) {\n byRow[seg.row].push(seg)\n }\n\n return byRow\n}\n\nexport function splitSegsByFirstCol(segs: TableSeg[], colCnt: number) {\n let byCol: TableSeg[][] = []\n\n for (let i = 0; i < colCnt; i += 1) {\n byCol[i] = []\n }\n\n for (let seg of segs) {\n byCol[seg.firstCol].push(seg)\n }\n\n return byCol\n}\n\nexport function splitInteractionByRow(ui: EventSegUiInteractionState | null, rowCnt: number) {\n let byRow: EventSegUiInteractionState[] = []\n\n if (!ui) {\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = null\n }\n } else {\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: [],\n }\n }\n\n for (let seg of ui.segs) {\n byRow[seg.row].segs.push(seg)\n }\n }\n\n return byRow\n}\n","import {\n createElement,\n DateMarker,\n DateRange,\n DayCellContentArg,\n DayCellContent,\n BaseComponent,\n DateProfile,\n Dictionary,\n Fragment,\n buildNavLinkAttrs,\n} from '@fullcalendar/common'\n\ninterface TableCellTopProps {\n date: DateMarker\n dateProfile: DateProfile\n showDayNumber: boolean\n dayNumberId: string\n forceDayTop: boolean // hack to force-create an element with height (created by a nbsp)\n todayRange: DateRange\n extraHookProps?: Dictionary\n}\n\nexport class TableCellTop extends BaseComponent<TableCellTopProps> {\n render() {\n let { props } = this\n let navLinkAttrs = buildNavLinkAttrs(this.context, props.date)\n\n return (\n <DayCellContent\n date={props.date}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n showDayNumber={props.showDayNumber}\n extraHookProps={props.extraHookProps}\n defaultContent={renderTopInner}\n >\n {(innerElRef, innerContent) => (\n (innerContent || props.forceDayTop) && (\n <div className=\"fc-daygrid-day-top\" ref={innerElRef}>\n <a\n id={props.dayNumberId}\n className=\"fc-daygrid-day-number\"\n {...navLinkAttrs}\n >\n {innerContent || <Fragment> </Fragment>}\n </a>\n </div>\n )\n )}\n </DayCellContent>\n )\n }\n}\n\nfunction renderTopInner(props: DayCellContentArg) {\n return props.dayNumberText\n}\n","import { createFormatter } from '@fullcalendar/common'\nimport { TableSeg } from './TableSeg'\n\nexport const DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow',\n})\n\nexport function hasListItemDisplay(seg: TableSeg) {\n let { display } = seg.eventRange.ui\n\n return display === 'list-item' || (\n display === 'auto' &&\n !seg.eventRange.def.allDay &&\n seg.firstCol === seg.lastCol && // can't be multi-day\n seg.isStart && // \"\n seg.isEnd // \"\n )\n}\n","import { createElement, StandardEvent, BaseComponent, MinimalEventProps } from '@fullcalendar/common'\nimport { DEFAULT_TABLE_EVENT_TIME_FORMAT } from './event-rendering'\n\nexport interface TableBlockEventProps extends MinimalEventProps {\n defaultDisplayEventEnd: boolean\n}\n\nexport class TableBlockEvent extends BaseComponent<TableBlockEventProps> {\n render() {\n let { props } = this\n\n return (\n <StandardEvent\n {...props}\n extraClassNames={['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event']}\n defaultTimeFormat={DEFAULT_TABLE_EVENT_TIME_FORMAT}\n defaultDisplayEventEnd={props.defaultDisplayEventEnd}\n disableResizing={!props.seg.eventRange.def.allDay}\n />\n )\n }\n}\n","import {\n createElement,\n BaseComponent,\n Seg,\n EventRoot,\n buildSegTimeText,\n EventContentArg,\n Fragment,\n getSegAnchorAttrs,\n} from '@fullcalendar/common'\nimport { DEFAULT_TABLE_EVENT_TIME_FORMAT } from './event-rendering'\n\nexport interface DotTableEventProps {\n seg: Seg\n isDragging: boolean\n isSelected: boolean\n isPast: boolean\n isFuture: boolean\n isToday: boolean\n defaultDisplayEventEnd: boolean\n}\n\nexport class TableListItemEvent extends BaseComponent<DotTableEventProps> {\n render() {\n let { props, context } = this\n let timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT\n let timeText = buildSegTimeText(\n props.seg,\n timeFormat,\n context,\n true,\n props.defaultDisplayEventEnd,\n )\n\n return (\n <EventRoot\n seg={props.seg}\n timeText={timeText}\n defaultContent={renderInnerContent}\n isDragging={props.isDragging}\n isResizing={false}\n isDateSelecting={false}\n isSelected={props.isSelected}\n isPast={props.isPast}\n isFuture={props.isFuture}\n isToday={props.isToday}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => ( // we don't use styles!\n <a\n className={['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' ')}\n ref={rootElRef}\n {...getSegAnchorAttrs(props.seg, context)}\n >\n {innerContent}\n </a>\n )}\n </EventRoot>\n )\n }\n}\n\nfunction renderInnerContent(innerProps: EventContentArg) {\n return (\n <Fragment>\n <div\n className=\"fc-daygrid-event-dot\"\n style={{ borderColor: innerProps.borderColor || innerProps.backgroundColor }}\n />\n {innerProps.timeText && (\n <div className=\"fc-event-time\">{innerProps.timeText}</div>\n )}\n <div className=\"fc-event-title\">\n {innerProps.event.title || <Fragment> </Fragment>}\n </div>\n </Fragment>\n )\n}\n","import {\n createElement,\n MoreLinkRoot,\n RefObject,\n BaseComponent,\n memoize,\n DateMarker,\n Dictionary,\n DateProfile,\n DateRange,\n EventSegUiInteractionState,\n getSegMeta,\n Fragment,\n createAriaClickAttrs,\n} from '@fullcalendar/common'\nimport { TableSegPlacement } from './event-placement'\nimport { hasListItemDisplay } from './event-rendering'\nimport { TableBlockEvent } from './TableBlockEvent'\nimport { TableListItemEvent } from './TableListItemEvent'\nimport { TableSeg } from './TableSeg'\n\nexport interface TableCellMoreLinkProps {\n allDayDate: DateMarker\n singlePlacements: TableSegPlacement[]\n moreCnt: number\n alignmentElRef: RefObject<HTMLElement> // for popover\n alignGridTop: boolean // for popover\n extraDateSpan?: Dictionary\n dateProfile: DateProfile\n todayRange: DateRange\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n}\n\nexport class TableCellMoreLink extends BaseComponent<TableCellMoreLinkProps> {\n compileSegs = memoize(compileSegs)\n\n render() {\n let { props } = this\n let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements)\n\n return (\n <MoreLinkRoot\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n allDayDate={props.allDayDate}\n moreCnt={props.moreCnt}\n allSegs={allSegs}\n hiddenSegs={invisibleSegs}\n alignmentElRef={props.alignmentElRef}\n alignGridTop={props.alignGridTop}\n extraDateSpan={props.extraDateSpan}\n popoverContent={() => {\n let isForcedInvisible =\n (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n (props.eventResize ? props.eventResize.affectedInstances : null) ||\n {}\n return (\n <Fragment>\n {allSegs.map((seg) => {\n let instanceId = seg.eventRange.instance.instanceId\n return (\n <div\n className=\"fc-daygrid-event-harness\"\n key={instanceId}\n style={{\n visibility: isForcedInvisible[instanceId] ? 'hidden' : ('' as any),\n }}\n >\n {hasListItemDisplay(seg) ? (\n <TableListItemEvent\n seg={seg}\n isDragging={false}\n isSelected={instanceId === props.eventSelection}\n defaultDisplayEventEnd={false}\n {...getSegMeta(seg, props.todayRange)}\n />\n ) : (\n <TableBlockEvent\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={instanceId === props.eventSelection}\n defaultDisplayEventEnd={false}\n {...getSegMeta(seg, props.todayRange)}\n />\n )}\n </div>\n )\n })}\n </Fragment>\n )\n }}\n >\n {(rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (\n <a\n ref={rootElRef}\n className={['fc-daygrid-more-link'].concat(classNames).join(' ')}\n title={title}\n aria-expanded={isExpanded}\n aria-controls={popoverId}\n {...createAriaClickAttrs(handleClick)}\n >\n {innerContent}\n </a>\n )}\n </MoreLinkRoot>\n )\n }\n}\n\nfunction compileSegs(singlePlacements: TableSegPlacement[]): {\n allSegs: TableSeg[]\n invisibleSegs: TableSeg[]\n} {\n let allSegs: TableSeg[] = []\n let invisibleSegs: TableSeg[] = []\n\n for (let placement of singlePlacements) {\n allSegs.push(placement.seg)\n\n if (!placement.isVisible) {\n invisibleSegs.push(placement.seg)\n }\n }\n\n return { allSegs, invisibleSegs }\n}\n","import {\n Ref,\n ComponentChildren,\n createElement,\n DateMarker,\n DateComponent,\n DateRange,\n buildNavLinkAttrs,\n WeekNumberRoot,\n DayCellRoot,\n DateProfile,\n setRef,\n createFormatter,\n Dictionary,\n createRef,\n EventSegUiInteractionState,\n getUniqueDomId,\n} from '@fullcalendar/common'\nimport { TableCellTop } from './TableCellTop'\nimport { TableCellMoreLink } from './TableCellMoreLink'\nimport { TableSegPlacement } from './event-placement'\n\nexport interface TableCellProps {\n date: DateMarker\n dateProfile: DateProfile\n extraHookProps?: Dictionary\n extraDataAttrs?: Dictionary\n extraClassNames?: string[]\n extraDateSpan?: Dictionary\n elRef?: Ref<HTMLTableCellElement>\n innerElRef?: Ref<HTMLDivElement>\n bgContent: ComponentChildren\n fgContentElRef?: Ref<HTMLDivElement> // TODO: rename!!! classname confusion. is the \"event\" div\n fgContent: ComponentChildren\n moreCnt: number\n moreMarginTop: number\n showDayNumber: boolean\n showWeekNumber: boolean\n forceDayTop: boolean\n todayRange: DateRange\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n singlePlacements: TableSegPlacement[]\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' })\n\nexport class TableCell extends DateComponent<TableCellProps> {\n private rootElRef = createRef<HTMLElement>()\n state = {\n dayNumberId: getUniqueDomId(),\n }\n\n render() {\n let { context, props, state, rootElRef } = this\n let { date, dateProfile } = props\n let navLinkAttrs = buildNavLinkAttrs(context, date, 'week')\n\n return (\n <DayCellRoot\n date={date}\n dateProfile={dateProfile}\n todayRange={props.todayRange}\n showDayNumber={props.showDayNumber}\n extraHookProps={props.extraHookProps}\n elRef={this.handleRootEl}\n >\n {(dayElRef, dayClassNames, rootDataAttrs, isDisabled) => (\n <td\n ref={dayElRef}\n role=\"gridcell\"\n className={['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ')}\n {...rootDataAttrs}\n {...props.extraDataAttrs}\n {...(props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})}\n >\n <div className=\"fc-daygrid-day-frame fc-scrollgrid-sync-inner\" ref={props.innerElRef /* different from hook system! RENAME */}>\n {props.showWeekNumber && (\n <WeekNumberRoot date={date} defaultFormat={DEFAULT_WEEK_NUM_FORMAT}>\n {(weekElRef, weekClassNames, innerElRef, innerContent) => (\n <a\n ref={weekElRef}\n className={['fc-daygrid-week-number'].concat(weekClassNames).join(' ')}\n {...navLinkAttrs}\n >\n {innerContent}\n </a>\n )}\n </WeekNumberRoot>\n )}\n {!isDisabled && (\n <TableCellTop\n date={date}\n dateProfile={dateProfile}\n showDayNumber={props.showDayNumber}\n dayNumberId={state.dayNumberId}\n forceDayTop={props.forceDayTop}\n todayRange={props.todayRange}\n extraHookProps={props.extraHookProps}\n />\n )}\n <div\n className=\"fc-daygrid-day-events\"\n ref={props.fgContentElRef}\n >\n {props.fgContent}\n <div className=\"fc-daygrid-day-bottom\" style={{ marginTop: props.moreMarginTop }}>\n <TableCellMoreLink\n allDayDate={date}\n singlePlacements={props.singlePlacements}\n moreCnt={props.moreCnt}\n alignmentElRef={rootElRef}\n alignGridTop={!props.showDayNumber}\n extraDateSpan={props.extraDateSpan}\n dateProfile={props.dateProfile}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n todayRange={props.todayRange}\n />\n </div>\n </div>\n <div className=\"fc-daygrid-day-bg\">\n {props.bgContent}\n </div>\n </div>\n </td>\n )}\n </DayCellRoot>\n )\n }\n\n handleRootEl = (el: HTMLElement) => {\n setRef(this.rootElRef, el)\n setRef(this.props.elRef, el)\n }\n}\n","import {\n EventSegUiInteractionState,\n VNode,\n DateComponent,\n createElement,\n PositionCache,\n RefMap,\n CssDimValue,\n DateRange,\n getSegMeta,\n DateProfile,\n Fragment,\n BgEvent,\n renderFill,\n isPropsEqual,\n createRef,\n buildEventRangeKey,\n sortEventSegs,\n DayTableCell,\n} from '@fullcalendar/common'\nimport { TableSeg, splitSegsByFirstCol } from './TableSeg'\nimport { TableCell } from './TableCell'\nimport { TableListItemEvent } from './TableListItemEvent'\nimport { TableBlockEvent } from './TableBlockEvent'\nimport { computeFgSegPlacement, TableSegPlacement } from './event-placement'\nimport { hasListItemDisplay } from './event-rendering'\n\n// TODO: attach to window resize?\n\nexport interface TableRowProps {\n cells: DayTableCell[]\n renderIntro?: () => VNode\n businessHourSegs: TableSeg[]\n bgEventSegs: TableSeg[]\n fgEventSegs: TableSeg[]\n dateSelectionSegs: TableSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n dayMaxEvents: boolean | number\n dayMaxEventRows: boolean | number\n clientWidth: number | null\n clientHeight: number | null // simply for causing an updateSize, for when liquid height\n dateProfile: DateProfile\n todayRange: DateRange\n showDayNumbers: boolean\n showWeekNumbers: boolean\n forPrint: boolean\n}\n\ninterface TableRowState {\n framePositions: PositionCache\n maxContentHeight: number | null\n eventInstanceHeights: { [instanceId: string]: number } // integers\n}\n\nexport class TableRow extends DateComponent<TableRowProps, TableRowState> {\n private cellElRefs = new RefMap<HTMLTableCellElement>() // the <td>\n private frameElRefs = new RefMap<HTMLElement>() // the fc-daygrid-day-frame\n private fgElRefs = new RefMap<HTMLDivElement>() // the fc-daygrid-day-events\n private segHarnessRefs = new RefMap<HTMLDivElement>() // indexed by \"instanceId:firstCol\"\n private rootElRef = createRef<HTMLTableRowElement>()\n\n state: TableRowState = {\n framePositions: null,\n maxContentHeight: null,\n eventInstanceHeights: {},\n }\n\n render() {\n let { props, state, context } = this\n let { options } = context\n let colCnt = props.cells.length\n\n let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt)\n let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt)\n let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt)\n let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt)\n\n let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(\n sortEventSegs(props.fgEventSegs, options.eventOrder) as TableSeg[],\n props.dayMaxEvents,\n props.dayMaxEventRows,\n options.eventOrderStrict,\n state.eventInstanceHeights,\n state.maxContentHeight,\n props.cells,\n )\n\n let isForcedInvisible = // TODO: messy way to compute this\n (props.eventDrag && props.eventDrag.affectedInstances) ||\n (props.eventResize && props.eventResize.affectedInstances) ||\n {}\n\n return (\n <tr ref={this.rootElRef} role=\"row\">\n {props.renderIntro && props.renderIntro()}\n {props.cells.map((cell, col) => {\n let normalFgNodes = this.renderFgSegs(\n col,\n props.forPrint ? singleColPlacements[col] : multiColPlacements[col],\n props.todayRange,\n isForcedInvisible,\n )\n\n let mirrorFgNodes = this.renderFgSegs(\n col,\n buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements),\n props.todayRange,\n {},\n Boolean(props.eventDrag),\n Boolean(props.eventResize),\n false, // date-selecting (because mirror is never drawn for date selection)\n )\n\n return (\n <TableCell\n key={cell.key}\n elRef={this.cellElRefs.createRef(cell.key)}\n innerElRef={this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */}\n dateProfile={props.dateProfile}\n date={cell.date}\n showDayNumber={props.showDayNumbers}\n showWeekNumber={props.showWeekNumbers && col === 0}\n forceDayTop={props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */}\n todayRange={props.todayRange}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n extraHookProps={cell.extraHookProps}\n extraDataAttrs={cell.extraDataAttrs}\n extraClassNames={cell.extraClassNames}\n extraDateSpan={cell.extraDateSpan}\n moreCnt={moreCnts[col]}\n moreMarginTop={moreMarginTops[col]}\n singlePlacements={singleColPlacements[col]}\n fgContentElRef={this.fgElRefs.createRef(cell.key)}\n fgContent={( // Fragment scopes the keys\n <Fragment>\n <Fragment>{normalFgNodes}</Fragment>\n <Fragment>{mirrorFgNodes}</Fragment>\n </Fragment>\n )}\n bgContent={( // Fragment scopes the keys\n <Fragment>\n {this.renderFillSegs(highlightSegsByCol[col], 'highlight')}\n {this.renderFillSegs(businessHoursByCol[col], 'non-business')}\n {this.renderFillSegs(bgEventSegsByCol[col], 'bg-event')}\n </Fragment>\n )}\n />\n )\n })}\n </tr>\n )\n }\n\n componentDidMount() {\n this.updateSizing(true)\n }\n\n componentDidUpdate(prevProps: TableRowProps, prevState: TableRowState) {\n let currentProps = this.props\n\n this.updateSizing(\n !isPropsEqual(prevProps, currentProps),\n )\n }\n\n getHighlightSegs(): TableSeg[] {\n let { props } = this\n\n if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n return props.eventDrag.segs as TableSeg[]\n }\n\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs as TableSeg[]\n }\n\n return props.dateSelectionSegs\n }\n\n getMirrorSegs(): TableSeg[] {\n let { props } = this\n\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs as TableSeg[]\n }\n\n return []\n }\n\n renderFgSegs(\n col: number,\n segPlacements: TableSegPlacement[],\n todayRange: DateRange,\n isForcedInvisible: { [instanceId: string]: any },\n isDragging?: boolean,\n isResizing?: boolean,\n isDateSelecting?: boolean,\n ): VNode[] {\n let { context } = this\n let { eventSelection } = this.props\n let { framePositions } = this.state\n let defaultDisplayEventEnd = this.props.cells.length === 1 // colCnt === 1\n let isMirror = isDragging || isResizing || isDateSelecting\n let nodes: VNode[] = []\n\n if (framePositions) {\n for (let placement of segPlacements) {\n let { seg } = placement\n let { instanceId } = seg.eventRange.instance\n let key = instanceId + ':' + col\n let isVisible = placement.isVisible && !isForcedInvisible[instanceId]\n let isAbsolute = placement.isAbsolute\n let left: CssDimValue = ''\n let right: CssDimValue = ''\n\n if (isAbsolute) {\n if (context.isRtl) {\n right = 0\n left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]\n } else {\n left = 0\n right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol]\n }\n }\n\n /*\n known bug: events that are force to be list-item but span multiple days still take up space in later columns\n todo: in print view, for multi-day events, don't display title within non-start/end segs\n */\n nodes.push(\n <div\n className={'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : '')}\n key={key}\n ref={isMirror ? null : this.segHarnessRefs.createRef(key)}\n style={{\n visibility: isVisible ? ('' as any) : 'hidden',\n marginTop: isAbsolute ? '' : placement.marginTop,\n top: isAbsolute ? placement.absoluteTop : '',\n left,\n right,\n }}\n >\n {hasListItemDisplay(seg) ? (\n <TableListItemEvent\n seg={seg}\n isDragging={isDragging}\n isSelected={instanceId === eventSelection}\n defaultDisplayEventEnd={defaultDisplayEventEnd}\n {...getSegMeta(seg, todayRange)}\n />\n ) : (\n <TableBlockEvent\n seg={seg}\n isDragging={isDragging}\n isResizing={isResizing}\n isDateSelecting={isDateSelecting}\n isSelected={instanceId === eventSelection}\n defaultDisplayEventEnd={defaultDisplayEventEnd}\n {...getSegMeta(seg, todayRange)}\n />\n )}\n </div>,\n )\n }\n }\n\n return nodes\n }\n\n renderFillSegs(segs: TableSeg[], fillType: string): VNode {\n let { isRtl } = this.context\n let { todayRange } = this.props\n let { framePositions } = this.state\n let nodes: VNode[] = []\n\n if (framePositions) {\n for (let seg of segs) {\n let leftRightCss = isRtl ? {\n right: 0,\n left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n } : {\n left: 0,\n right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n }\n\n nodes.push(\n <div\n key={buildEventRangeKey(seg.eventRange)}\n className=\"fc-daygrid-bg-harness\"\n style={leftRightCss}\n >\n {fillType === 'bg-event' ?\n <BgEvent seg={seg} {...getSegMeta(seg, todayRange)} /> :\n renderFill(fillType)}\n </div>,\n )\n }\n }\n\n return createElement(Fragment, {}, ...nodes)\n }\n\n updateSizing(isExternalSizingChange) {\n let { props, frameElRefs } = this\n\n if (\n !props.forPrint &&\n props.clientWidth !== null // positioning ready?\n ) {\n if (isExternalSizingChange) {\n let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key])\n\n if (frameEls.length) {\n let originEl = this.rootElRef.current\n\n this.setState({ // will trigger isCellPositionsChanged...\n framePositions: new PositionCache(\n originEl,\n frameEls,\n true, // isHorizontal\n false,\n ),\n })\n }\n }\n\n const oldInstanceHeights = this.state.eventInstanceHeights\n const newInstanceHeights = this.queryEventInstanceHeights()\n const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true\n\n this.safeSetState({\n // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n // Essentially, once you compute an element's height, never null-out.\n // TODO: always display all events, as visibility:hidden?\n eventInstanceHeights: { ...oldInstanceHeights, ...newInstanceHeights },\n\n maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n })\n }\n }\n\n queryEventInstanceHeights() {\n let segElMap = this.segHarnessRefs.currentMap\n let eventInstanceHeights: { [key: string]: number } = {}\n\n // get the max height amongst instance segs\n for (let key in segElMap) {\n let height = Math.round(segElMap[key].getBoundingClientRect().height)\n let instanceId = key.split(':')[0] // deconstruct how renderFgSegs makes the key\n eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height)\n }\n\n return eventInstanceHeights\n }\n\n computeMaxContentHeight() {\n let firstKey = this.props.cells[0].key\n let cellEl = this.cellElRefs.currentMap[firstKey]\n let fcContainerEl = this.fgElRefs.currentMap[firstKey]\n\n return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top\n }\n\n public getCellEls() {\n let elMap = this.cellElRefs.currentMap\n\n return this.props.cells.map((cell) => elMap[cell.key])\n }\n}\n\nTableRow.addStateEquality({\n eventInstanceHeights: isPropsEqual,\n})\n\nfunction buildMirrorPlacements(mirrorSegs: TableSeg[], colPlacements: TableSegPlacement[][]): TableSegPlacement[] {\n if (!mirrorSegs.length) {\n return []\n }\n let topsByInstanceId = buildAbsoluteTopHash(colPlacements) // TODO: cache this at first render?\n return mirrorSegs.map((seg: TableSeg) => ({\n seg,\n isVisible: true,\n isAbsolute: true,\n absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n marginTop: 0,\n }))\n}\n\nfunction buildAbsoluteTopHash(colPlacements: TableSegPlacement[][]): { [instanceId: string]: number } {\n let topsByInstanceId: { [instanceId: string]: number } = {}\n\n for (let placements of colPlacements) {\n for (let placement of placements) {\n topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop\n }\n }\n\n return topsByInstanceId\n}\n","import {\n EventSegUiInteractionState,\n VNode,\n DateComponent,\n RefObject,\n CssDimValue,\n createElement,\n PositionCache,\n memoize,\n addDays,\n RefMap,\n DateRange,\n NowTimer,\n DateMarker,\n DateProfile,\n Fragment,\n Hit,\n DayTableCell,\n} from '@fullcalendar/common'\nimport { TableSeg, splitSegsByRow, splitInteractionByRow } from './TableSeg'\nimport { TableRow } from './TableRow'\n\nexport interface TableProps {\n dateProfile: DateProfile\n cells: DayTableCell[][] // cells-BY-ROW\n renderRowIntro?: () => VNode\n colGroupNode: VNode\n tableMinWidth: CssDimValue\n expandRows: boolean\n showWeekNumbers: boolean\n clientWidth: number | null\n clientHeight: number | null\n businessHourSegs: TableSeg[]\n bgEventSegs: TableSeg[]\n fgEventSegs: TableSeg[]\n dateSelectionSegs: TableSeg[]\n eventSelection: string\n eventDrag: EventSegUiInteractionState | null\n eventResize: EventSegUiInteractionState | null\n dayMaxEvents: boolean | number\n dayMaxEventRows: boolean | number\n headerAlignElRef?: RefObject<HTMLElement>\n forPrint: boolean\n isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean\n}\n\nexport class Table extends DateComponent<TableProps> {\n private splitBusinessHourSegs = memoize(splitSegsByRow)\n private splitBgEventSegs = memoize(splitSegsByRow)\n private splitFgEventSegs = memoize(splitSegsByRow)\n private splitDateSelectionSegs = memoize(splitSegsByRow)\n private splitEventDrag = memoize(splitInteractionByRow)\n private splitEventResize = memoize(splitInteractionByRow)\n private rootEl: HTMLElement\n private rowRefs = new RefMap<TableRow>()\n private rowPositions: PositionCache\n private colPositions: PositionCache\n\n render() {\n let { props } = this\n let { dateProfile, dayMaxEventRows, dayMaxEvents, expandRows } = props\n let rowCnt = props.cells.length\n\n let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt)\n let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt)\n let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt)\n let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt)\n let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt)\n let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt)\n\n let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true\n\n // if rows can't expand to fill fixed height, can't do balanced-height event limit\n // TODO: best place to normalize these options?\n if (limitViaBalanced && !expandRows) {\n limitViaBalanced = false\n dayMaxEventRows = null\n dayMaxEvents = null\n }\n\n let classNames = [\n 'fc-daygrid-body',\n limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', // will all row heights be equal?\n expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n ]\n\n return (\n <div\n className={classNames.join(' ')}\n ref={this.handleRootEl}\n style={{\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n }}\n >\n <NowTimer unit=\"day\">\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <Fragment>\n <table\n role=\"presentation\"\n className=\"fc-scrollgrid-sync-table\"\n style={{\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n height: expandRows ? props.clientHeight : '',\n }}\n >\n {props.colGroupNode}\n <tbody role=\"presentation\">\n {props.cells.map((cells, row) => (\n <TableRow\n ref={this.rowRefs.createRef(row)}\n key={\n cells.length\n ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n : row // in case there are no cells (like when resource view is loading)\n }\n showDayNumbers={rowCnt > 1}\n showWeekNumbers={props.showWeekNumbers}\n todayRange={todayRange}\n dateProfile={dateProfile}\n cells={cells}\n renderIntro={props.renderRowIntro}\n businessHourSegs={businessHourSegsByRow[row]}\n eventSelection={props.eventSelection}\n bgEventSegs={bgEventSegsByRow[row].filter(isSegAllDay) /* hack */}\n fgEventSegs={fgEventSegsByRow[row]}\n dateSelectionSegs={dateSelectionSegsByRow[row]}\n eventDrag={eventDragByRow[row]}\n eventResize={eventResizeByRow[row]}\n dayMaxEvents={dayMaxEvents}\n dayMaxEventRows={dayMaxEventRows}\n clientWidth={props.clientWidth}\n clientHeight={props.clientHeight}\n forPrint={props.forPrint}\n />\n ))}\n </tbody>\n </table>\n </Fragment>\n )}\n </NowTimer>\n </div>\n )\n }\n\n handleRootEl = (rootEl: HTMLElement | null) => {\n this.rootEl = rootEl\n\n if (rootEl) {\n this.context.registerInteractiveComponent(this, {\n el: rootEl,\n isHitComboAllowed: this.props.isHitComboAllowed,\n })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n // Hit System\n // ----------------------------------------------------------------------------------------------------\n\n prepareHits() {\n this.rowPositions = new PositionCache(\n this.rootEl,\n this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n false,\n true, // vertical\n )\n\n this.colPositions = new PositionCache(\n this.rootEl,\n this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n true, // horizontal\n false,\n )\n }\n\n queryHit(positionLeft: number, positionTop: number): Hit {\n let { colPositions, rowPositions } = this\n let col = colPositions.leftToIndex(positionLeft)\n let row = rowPositions.topToIndex(positionTop)\n\n if (row != null && col != null) {\n let cell = this.props.cells[row][col]\n\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: {\n range: this.getCellRange(row, col),\n allDay: true,\n ...cell.extraDateSpan,\n },\n dayEl: this.getCellEl(row, col),\n rect: {\n left: colPositions.lefts[col],\n right: colPositions.rights[col],\n top: rowPositions.tops[row],\n bottom: rowPositions.bottoms[row],\n },\n layer: 0,\n }\n }\n\n return null\n }\n\n private getCellEl(row, col) {\n return this.rowRefs.currentMap[row].getCellEls()[col] // TODO: not optimal\n }\n\n private getCellRange(row, col) {\n let start = this.props.cells[row][col].date\n let end = addDays(start, 1)\n return { start, end }\n }\n}\n\nfunction isSegAllDay(seg: TableSeg) {\n return seg.eventRange.def.allDay\n}\n","import { DayTableModel, DateRange, Slicer } from '@fullcalendar/common'\nimport { TableSeg } from './TableSeg'\n\nexport class DayTableSlicer extends Slicer<TableSeg, [DayTableModel]> {\n forceDayIfListItem = true\n\n sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): TableSeg[] {\n return dayTableModel.sliceRange(dateRange)\n }\n}\n","import {\n createElement, createRef, VNode,\n EventStore,\n EventUiHash,\n DateSpan,\n EventInteractionState,\n DayTableModel,\n Duration,\n DateComponent,\n ViewContext,\n RefObject,\n CssDimValue,\n DateProfile,\n} from '@fullcalendar/common'\nimport { Table } from './Table'\nimport { DayTableSlicer } from './DayTableSlicer'\n\nexport interface DayTableProps {\n dateProfile: DateProfile,\n dayTableModel: DayTableModel\n nextDayThreshold: Duration\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n colGroupNode: VNode\n tableMinWidth: CssDimValue\n renderRowIntro?: () => VNode\n dayMaxEvents: boolean | number\n dayMaxEventRows: boolean | number\n expandRows: boolean\n showWeekNumbers: boolean\n headerAlignElRef?: RefObject<HTMLElement> // for more popover alignment\n clientWidth: number | null\n clientHeight: number | null\n forPrint: boolean\n}\n\nexport class DayTable extends DateComponent<DayTableProps, ViewContext> {\n private slicer = new DayTableSlicer()\n private tableRef = createRef<Table>()\n\n render() {\n let { props, context } = this\n\n return (\n <Table\n ref={this.tableRef}\n {...this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel)}\n dateProfile={props.dateProfile}\n cells={props.dayTableModel.cells}\n colGroupNode={props.colGroupNode}\n tableMinWidth={props.tableMinWidth}\n renderRowIntro={props.renderRowIntro}\n dayMaxEvents={props.dayMaxEvents}\n dayMaxEventRows={props.dayMaxEventRows}\n showWeekNumbers={props.showWeekNumbers}\n expandRows={props.expandRows}\n headerAlignElRef={props.headerAlignElRef}\n clientWidth={props.clientWidth}\n clientHeight={props.clientHeight}\n forPrint={props.forPrint}\n />\n )\n }\n}\n","import {\n createElement, createRef,\n DayHeader,\n DateProfileGenerator,\n DateProfile,\n memoize,\n DaySeriesModel,\n DayTableModel,\n ChunkContentCallbackArgs,\n} from '@fullcalendar/common'\nimport { TableView } from './TableView'\nimport { DayTable } from './DayTable'\n\nexport class DayTableView extends TableView {\n private buildDayTableModel = memoize(buildDayTableModel)\n private headerRef = createRef<DayHeader>()\n private tableRef = createRef<DayTable>()\n\n render() {\n let { options, dateProfileGenerator } = this.context\n let { props } = this\n let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator)\n\n let headerContent = options.dayHeaders && (\n <DayHeader\n ref={this.headerRef}\n dateProfile={props.dateProfile}\n dates={dayTableModel.headerDates}\n datesRepDistinctDays={dayTableModel.rowCnt === 1}\n />\n )\n\n let bodyContent = (contentArg: ChunkContentCallbackArgs) => (\n <DayTable\n ref={this.tableRef}\n dateProfile={props.dateProfile}\n dayTableModel={dayTableModel}\n businessHours={props.businessHours}\n dateSelection={props.dateSelection}\n eventStore={props.eventStore}\n eventUiBases={props.eventUiBases}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n nextDayThreshold={options.nextDayThreshold}\n colGroupNode={contentArg.tableColGroupNode}\n tableMinWidth={contentArg.tableMinWidth}\n dayMaxEvents={options.dayMaxEvents}\n dayMaxEventRows={options.dayMaxEventRows}\n showWeekNumbers={options.weekNumbers}\n expandRows={!props.isHeightAuto}\n headerAlignElRef={this.headerElRef}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n forPrint={props.forPrint}\n />\n )\n\n return options.dayMinWidth\n ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n : this.renderSimpleLayout(headerContent, bodyContent)\n }\n}\n\nexport function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {\n let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator)\n\n return new DayTableModel(\n daySeries,\n /year|month|week/.test(dateProfile.currentRangeUnit),\n )\n}\n","import {\n DateProfileGenerator,\n addWeeks, diffWeeks,\n DateRange,\n} from '@fullcalendar/common'\n\nexport class TableDateProfileGenerator extends DateProfileGenerator {\n // Computes the date range that will be rendered.\n buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay): DateRange {\n let { dateEnv } = this.props\n let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay)\n let start = renderRange.start\n let end = renderRange.end\n let endOfWeek\n\n // year and month views should be aligned with weeks. this is already done for week\n if (/^(year|month)$/.test(currentRangeUnit)) {\n start = dateEnv.startOfWeek(start)\n\n // make end-of-week if not already\n endOfWeek = dateEnv.startOfWeek(end)\n if (endOfWeek.valueOf() !== end.valueOf()) {\n end = addWeeks(endOfWeek, 1)\n }\n }\n\n // ensure 6 weeks\n if (\n this.props.monthMode &&\n this.props.fixedWeekCount\n ) {\n let rowCnt = Math.ceil( // could be partial weeks due to hiddenDays\n diffWeeks(start, end),\n )\n end = addWeeks(end, 6 - rowCnt)\n }\n\n return { start, end }\n }\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\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","import { config, isValidDate, addDays, createElement, CalendarContext, Fragment } from '@fullcalendar/common'\n\nconst RELEASE_DATE = '<%= releaseDate %>' // for Scheduler\nconst UPGRADE_WINDOW = 365 + 7 // days. 1 week leeway, for tz shift reasons too\nconst INVALID_LICENSE_URL = 'http://fullcalendar.io/docs/schedulerLicenseKey#invalid'\nconst OUTDATED_LICENSE_URL = 'http://fullcalendar.io/docs/schedulerLicenseKey#outdated'\nconst PRESET_LICENSE_KEYS = [\n 'GPL-My-Project-Is-Open-Source',\n 'CC-Attribution-NonCommercial-NoDerivatives',\n]\nconst CSS = {\n position: 'absolute' as 'absolute', // for TS+React. ugh.\n zIndex: 99999,\n bottom: '1px',\n left: '1px',\n background: '#eee',\n borderColor: '#ddd',\n borderStyle: 'solid',\n borderWidth: '1px 1px 0 0',\n padding: '2px 4px',\n fontSize: '12px',\n borderTopRightRadius: '3px',\n}\n\nexport function buildLicenseWarning(context: CalendarContext) {\n let key = context.options.schedulerLicenseKey\n let currentUrl = typeof window !== 'undefined' ? window.location.href : ''\n\n if (!isImmuneUrl(currentUrl)) {\n let status = processLicenseKey(key)\n\n if (status !== 'valid') {\n return (\n <div className=\"fc-license-message\" style={CSS}>\n {(status === 'outdated') ? (\n <Fragment>\n {'Your license key is too old to work with this version. '}\n <a href={OUTDATED_LICENSE_URL}>More Info</a>\n </Fragment>\n ) : (\n <Fragment>\n {'Your license key is invalid. '}\n <a href={INVALID_LICENSE_URL}>More Info</a>\n </Fragment>\n )}\n </div>\n )\n }\n }\n\n return null\n}\n\n/*\nThis decryption is not meant to be bulletproof. Just a way to remind about an upgrade.\n*/\nfunction processLicenseKey(key) {\n if (PRESET_LICENSE_KEYS.indexOf(key) !== -1) {\n return 'valid'\n }\n\n const parts = (key || '').match(/^(\\d+)-fcs-(\\d+)$/)\n\n if (parts && (parts[1].length === 10)) {\n const purchaseDate = new Date(parseInt(parts[2], 10) * 1000)\n const releaseDate = new Date(config.mockSchedulerReleaseDate || RELEASE_DATE)\n\n if (isValidDate(releaseDate)) { // token won't be replaced in dev mode\n const minPurchaseDate = addDays(releaseDate, -UPGRADE_WINDOW)\n\n if (minPurchaseDate < purchaseDate) {\n return 'valid'\n }\n\n return 'outdated'\n }\n }\n\n return 'invalid'\n}\n\nfunction isImmuneUrl(url) {\n return /\\w+:\\/\\/fullcalendar\\.io\\/|\\/examples\\/[\\w-]+\\.html$/.test(url)\n}\n","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: <http://docs.python.org/library/functions.html#divmod>\n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","/* eslint-disable @typescript-eslint/no-namespace */\nimport { padStart } from './helpers';\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var dateutil;\n(function (dateutil) {\n dateutil.MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n /**\n * Number of milliseconds of one day\n */\n dateutil.ONE_DAY = 1000 * 60 * 60 * 24;\n /**\n * @see: <http://docs.python.org/library/datetime.html#datetime.MAXYEAR>\n */\n dateutil.MAXYEAR = 9999;\n /**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\n dateutil.ORDINAL_BASE = new Date(Date.UTC(1970, 0, 1));\n /**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\n dateutil.PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n /**\n * py_date.timetuple()[7]\n */\n dateutil.getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() -\n new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n dateutil.ONE_DAY) + 1);\n };\n dateutil.isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n };\n dateutil.isDate = function (value) {\n return value instanceof Date;\n };\n dateutil.isValidDate = function (value) {\n return dateutil.isDate(value) && !isNaN(value.getTime());\n };\n /**\n * @return {Number} the date's timezone offset in ms\n */\n dateutil.tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n };\n /**\n * @see: <http://www.mcfedries.com/JavaScript/DaysBetween.asp>\n */\n dateutil.daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime() - dateutil.tzOffset(date1);\n var date2ms = date2.getTime() - dateutil.tzOffset(date2);\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / dateutil.ONE_DAY);\n };\n /**\n * @see: <http://docs.python.org/library/datetime.html#datetime.date.toordinal>\n */\n dateutil.toOrdinal = function (date) {\n return dateutil.daysBetween(date, dateutil.ORDINAL_BASE);\n };\n /**\n * @see - <http://docs.python.org/library/datetime.html#datetime.date.fromordinal>\n */\n dateutil.fromOrdinal = function (ordinal) {\n return new Date(dateutil.ORDINAL_BASE.getTime() + ordinal * dateutil.ONE_DAY);\n };\n dateutil.getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && dateutil.isLeapYear(date.getUTCFullYear())\n ? 29\n : dateutil.MONTH_DAYS[month];\n };\n /**\n * @return {Number} python-like weekday\n */\n dateutil.getWeekday = function (date) {\n return dateutil.PY_WEEKDAYS[date.getUTCDay()];\n };\n /**\n * @see: <http://docs.python.org/library/calendar.html#calendar.monthrange>\n */\n dateutil.monthRange = function (year, month) {\n var date = new Date(Date.UTC(year, month, 1));\n return [dateutil.getWeekday(date), dateutil.getMonthDays(date)];\n };\n /**\n * @see: <http://docs.python.org/library/datetime.html#datetime.datetime.combine>\n */\n dateutil.combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n };\n dateutil.clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n };\n dateutil.cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(dateutil.clone(dates[i]));\n }\n return clones;\n };\n /**\n * Sorts an array of Date or dateutil.Time objects\n */\n dateutil.sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n };\n dateutil.timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n };\n dateutil.untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n };\n})(dateutil || (dateutil = {}));\nexport default dateutil;\n//# sourceMappingURL=dateutil.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth <weekday> | <weekday>\n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // <weekday>\n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { dateutil } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return dateutil.getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = dateutil.monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > dateutil.MAXYEAR) {\n return;\n }\n }\n daysinmonth = dateutil.monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport dateutil from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (dateutil.isDate(options[key]) && !dateutil.isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [dateutil.getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport dateutil from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = dateutil.untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = dateutil.untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import dateutil from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = dateutil.timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n var _a;\n if (this.isUTC) {\n return this.date;\n }\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n var dateInLocalTZ = new Date(this.date.toLocaleString(undefined, { timeZone: localTimeZone }));\n var dateInTargetTZ = new Date(this.date.toLocaleString(undefined, { timeZone: (_a = this.tzid) !== null && _a !== void 0 ? _a : 'UTC' }));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(this.date.getTime() - tzOffset);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport dateutil from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = dateutil.timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport dateutil from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value =\n value instanceof Date\n ? dateutil.clone(value)\n : dateutil.cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? dateutil.cloneDates(cached)\n : cached instanceof Date\n ? dateutil.clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport dateutil from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = new Date(Date.UTC(year, 0, 1));\n var yearlen = dateutil.isLeapYear(year) ? 366 : 365;\n var nextyearlen = dateutil.isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = dateutil.toOrdinal(firstyday);\n var yearweekday = dateutil.getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = dateutil.getWeekday(new Date(Date.UTC(year - 1, 0, 1)));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = dateutil.isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = dateutil.isLeapYear(year) ? 366 : 365;\n var firstyday = new Date(Date.UTC(year, 0, 1));\n var wday = dateutil.getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import dateutil from '../dateutil';\nimport { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = dateutil.toOrdinal(new Date(Date.UTC(year, month - 1, day))) -\n this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = dateutil.toOrdinal(new Date(Date.UTC(year, month - 1, day))) -\n this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n dateutil.sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n dateutil.sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import dateutil from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = dateutil.fromOrdinal(ii.yearordinal + i);\n var res = dateutil.combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n dateutil.sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport dateutil from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = dateutil.fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = dateutil.combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > dateutil.MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import dateutil from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see <http://labix.org/python-dateutil/#head-cf004ee9a75592797e076752b2a889c10f445418>\n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(after) || !dateutil.isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see <http://www.ietf.org/rfc/rfc2445.txt>\n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport dateutil from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval\n .split(',')\n .map(function (datestr) { return dateutil.untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport dateutil from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n dateutil.sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return dateutil.timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport dateutil from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n dateutil.sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { createDuration, DateInput, identity, Identity } from '@fullcalendar/common'\nimport { Options as RRuleOptions } from 'rrule'\n\nexport type RRuleInputObjectFull = Omit<RRuleOptions, 'dtstart' | 'until' | 'freq' | 'wkst' | 'byweekday'> & {\n dtstart: RRuleOptions['dtstart'] | DateInput\n until: RRuleOptions['until'] | DateInput\n freq: RRuleOptions['freq'] | string\n wkst: RRuleOptions['wkst'] | string\n byweekday: RRuleOptions['byweekday'] | string | string[]\n}\n\nexport type RRuleInputObject = Partial<RRuleInputObjectFull>\nexport type RRuleInput = RRuleInputObject | string\n\nexport const RRULE_EVENT_REFINERS = {\n rrule: identity as Identity<RRuleInput>,\n exrule: identity as Identity<RRuleInputObject | RRuleInputObject[]>,\n exdate: identity as Identity<DateInput | DateInput[]>,\n duration: createDuration,\n}\n","import { removeElement, computeEdges } from '@fullcalendar/common'\n\n// TODO: assume the el has no borders?\nexport function getScrollCanvasOrigin(scrollEl: HTMLElement) { // best place for this?\n let rect = scrollEl.getBoundingClientRect()\n let edges = computeEdges(scrollEl) // TODO: pass in isRtl?\n\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n }\n}\n\nexport function getScrollFromLeftEdge(el: HTMLElement) {\n let scrollLeft = el.scrollLeft\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1 // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth\n }\n }\n\n return scrollLeft\n}\n\nexport function setScrollFromLeftEdge(el: HTMLElement, scrollLeft: number) {\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft\n break\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft)\n break\n }\n }\n\n el.scrollLeft = scrollLeft\n}\n\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\n\nlet _rtlScrollSystem\n\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem())\n}\n\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div')\n el.style.position = 'absolute'\n el.style.top = '-1000px'\n el.style.width = '1px'\n el.style.height = '1px'\n el.style.overflow = 'scroll'\n el.style.direction = 'rtl'\n el.style.fontSize = '100px'\n el.innerHTML = 'A'\n\n document.body.appendChild(el)\n\n let system\n if (el.scrollLeft > 0) {\n system = 'positive' // scroll is a positive number from the left edge\n } else {\n el.scrollLeft = 1\n if (el.scrollLeft > 0) {\n system = 'reverse' // scroll is a positive number from the right edge\n } else {\n system = 'negative' // scroll is a negative number from the right edge\n }\n }\n\n removeElement(el)\n return system\n}\n","import { Emitter, DelayedRunner } from '@fullcalendar/common'\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ')\n\n/*\nALSO, with the ability to disable touch\n*/\nexport class ScrollListener {\n emitter = new Emitter()\n private isScrolling = false\n private isTouching = false // user currently has finger down?\n private isRecentlyWheeled = false\n private isRecentlyScrolled = false\n private wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this))\n private scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this))\n\n constructor(public el: HTMLElement) {\n el.addEventListener('scroll', this.handleScroll)\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true })\n el.addEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel)\n }\n }\n\n destroy() {\n let { el } = this\n el.removeEventListener('scroll', this.handleScroll)\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true } as AddEventListenerOptions)\n el.removeEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel)\n }\n }\n\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n\n private startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching)\n }\n }\n\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd')\n this.isScrolling = false\n this.isRecentlyScrolled = true\n this.isRecentlyWheeled = false\n this.scrollWaiter.clear()\n this.wheelWaiter.clear()\n }\n }\n\n // Handlers\n // ----------------------------------------------------------------------------------------------\n\n handleScroll = () => {\n this.startScroll()\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching)\n this.isRecentlyScrolled = true\n this.scrollWaiter.request(500)\n }\n\n _handleScrollWaited() {\n this.isRecentlyScrolled = false\n\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll() // won't fire if already ended\n }\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleWheel = () => {\n this.isRecentlyWheeled = true\n this.wheelWaiter.request(500)\n }\n\n _handleWheelWaited() {\n this.isRecentlyWheeled = false\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleTouchStart = () => {\n this.isTouching = true\n }\n\n handleTouchEnd = () => {\n this.isTouching = false\n\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll() // won't fire if already ended\n }\n }\n}\n","import {\n applyStyle,\n translateRect, Rect, Point,\n findElements,\n computeInnerRect,\n CssDimValue,\n removeElement,\n} from '@fullcalendar/common'\nimport { ScrollListener } from './ScrollListener'\nimport { getScrollCanvasOrigin, getScrollFromLeftEdge } from './scroll-left-norm'\n\ninterface ElementGeom {\n parentBound: Rect // relative to the canvas origin\n naturalBound: Rect | null // of the el itself\n elWidth: number\n elHeight: number\n textAlign: string\n}\n\nconst IS_MS_EDGE = typeof navigator !== 'undefined' && /Edge/.test(navigator.userAgent) // TODO: what about Chromeum-based Edge?\nconst STICKY_SELECTOR = '.fc-sticky'\n\n/*\nuseful beyond the native position:sticky for these reasons:\n- support in IE11\n- nice centering support\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nexport class StickyScrolling {\n listener?: ScrollListener\n usingRelative: boolean | null = null\n\n constructor(\n private scrollEl: HTMLElement,\n private isRtl: boolean,\n ) {\n this.usingRelative =\n !getStickySupported() || // IE11\n // https://stackoverflow.com/questions/56835658/in-microsoft-edge-sticky-positioning-doesnt-work-when-combined-with-dir-rtl\n (IS_MS_EDGE && isRtl)\n\n if (this.usingRelative) {\n this.listener = new ScrollListener(scrollEl)\n this.listener.emitter.on('scrollEnd', this.updateSize)\n }\n }\n\n destroy() {\n if (this.listener) {\n this.listener.destroy()\n }\n }\n\n updateSize = () => {\n let { scrollEl } = this\n let els = findElements(scrollEl, STICKY_SELECTOR)\n let elGeoms = this.queryElGeoms(els)\n let viewportWidth = scrollEl.clientWidth\n let viewportHeight = scrollEl.clientHeight\n\n if (this.usingRelative) {\n let elDestinations = this.computeElDestinations(elGeoms, viewportWidth) // read before prepPositioning\n\n assignRelativePositions(els, elGeoms, elDestinations, viewportWidth, viewportHeight)\n } else {\n assignStickyPositions(els, elGeoms, viewportWidth)\n }\n }\n\n queryElGeoms(els: HTMLElement[]): ElementGeom[] {\n let { scrollEl, isRtl } = this\n let canvasOrigin = getScrollCanvasOrigin(scrollEl)\n let elGeoms: ElementGeom[] = []\n\n for (let el of els) {\n let parentBound = translateRect(\n computeInnerRect(el.parentNode as HTMLElement, true, true), // weird way to call this!!!\n -canvasOrigin.left,\n -canvasOrigin.top,\n )\n\n let elRect = el.getBoundingClientRect()\n let computedStyles = window.getComputedStyle(el)\n let textAlign = window.getComputedStyle(el.parentNode as HTMLElement).textAlign // ask the parent\n let naturalBound = null\n\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left'\n } else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right'\n }\n\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(\n elRect,\n -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0),\n )\n }\n\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n })\n }\n\n return elGeoms\n }\n\n // only for IE\n computeElDestinations(elGeoms: ElementGeom[], viewportWidth: number): Point[] {\n let { scrollEl } = this\n let viewportTop = scrollEl.scrollTop\n let viewportLeft = getScrollFromLeftEdge(scrollEl)\n let viewportRight = viewportLeft + viewportWidth\n\n return elGeoms.map((elGeom) => {\n let { elWidth, elHeight, parentBound, naturalBound } = elGeom\n let destLeft // relative to canvas topleft\n let destTop // \"\n\n switch (elGeom.textAlign) {\n case 'left':\n destLeft = viewportLeft\n break\n case 'right':\n destLeft = viewportRight - elWidth\n break\n case 'center':\n destLeft = (viewportLeft + viewportRight) / 2 - elWidth / 2 /// noooo, use half-width insteadddddddd\n break\n }\n\n destLeft = Math.min(destLeft, parentBound.right - elWidth)\n destLeft = Math.max(destLeft, parentBound.left)\n\n destTop = viewportTop\n destTop = Math.min(destTop, parentBound.bottom - elHeight)\n destTop = Math.max(destTop, naturalBound.top) // better to use natural top for upper bound\n\n return { left: destLeft, top: destTop }\n })\n }\n}\n\nfunction assignRelativePositions(\n els: HTMLElement[],\n elGeoms: ElementGeom[],\n elDestinations: Point[],\n viewportWidth: number,\n viewportHeight: number,\n) {\n els.forEach((el, i) => {\n let { naturalBound, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let parentHeight = parentBound.bottom - parentBound.bottom\n let left: CssDimValue\n let top: CssDimValue\n\n if (\n parentWidth > viewportWidth ||\n parentHeight > viewportHeight\n ) {\n left = elDestinations[i].left - naturalBound.left\n top = elDestinations[i].top - naturalBound.top\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n top = ''\n }\n\n applyStyle(el, {\n position: 'relative',\n left,\n right: -left, // for rtl\n top,\n })\n })\n}\n\nfunction assignStickyPositions(els: HTMLElement[], elGeoms: ElementGeom[], viewportWidth: number) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let left: CssDimValue\n\n if (\n textAlign === 'center' &&\n parentWidth > viewportWidth\n ) {\n left = (viewportWidth - elWidth) / 2\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n }\n\n applyStyle(el, { // will already have fc-sticky class which makes it sticky\n left,\n right: left, // for when centered\n top: 0,\n })\n })\n}\n\nlet _isStickySupported\n\nfunction getStickySupported() {\n if (_isStickySupported == null) {\n _isStickySupported = computeStickySupported()\n }\n return _isStickySupported\n}\n\nfunction computeStickySupported() {\n let el = document.createElement('div')\n el.style.position = 'sticky'\n document.body.appendChild(el)\n let val = window.getComputedStyle(el).position\n removeElement(el)\n return val === 'sticky'\n}\n","import {\n createElement, ComponentChildren, createRef, Ref, BaseComponent, setRef,\n ScrollerLike,\n Scroller, OverflowValue,\n getIsRtlScrollbarOnLeft,\n isPropsEqual,\n} from '@fullcalendar/common'\n\nexport type ClippedOverflowValue = OverflowValue | 'scroll-hidden'\n\nexport interface ClippedScrollerProps {\n overflowX: ClippedOverflowValue\n overflowY: ClippedOverflowValue\n liquid: boolean\n maxHeight?: number // incompatible with liquid\n children?: ComponentChildren\n scrollerRef?: Ref<Scroller>\n scrollerElRef?: Ref<HTMLElement>\n}\n\ninterface ClippedScrollerState {\n yScrollbarWidth?: number\n xScrollbarWidth?: number\n}\n\nexport class ClippedScroller extends BaseComponent<ClippedScrollerProps, ClippedScrollerState> implements ScrollerLike {\n private elRef = createRef<HTMLDivElement>()\n private scroller: Scroller\n\n state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n }\n\n render() {\n let { props, state, context } = this\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft()\n let overcomeLeft = 0\n let overcomeRight = 0\n let overcomeBottom = 0\n\n if (props.overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth\n }\n\n if (props.overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth\n } else {\n overcomeRight = state.yScrollbarWidth\n }\n }\n }\n\n return (\n <div\n ref={this.elRef}\n className={'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '')}\n >\n <Scroller\n ref={this.handleScroller}\n elRef={this.props.scrollerElRef}\n overflowX={props.overflowX === 'scroll-hidden' ? 'scroll' : props.overflowX}\n overflowY={props.overflowY === 'scroll-hidden' ? 'scroll' : props.overflowY}\n overcomeLeft={overcomeLeft}\n overcomeRight={overcomeRight}\n overcomeBottom={overcomeBottom}\n maxHeight={\n typeof props.maxHeight === 'number'\n ? (props.maxHeight + (props.overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : ''\n }\n liquid={props.liquid}\n liquidIsAbsolute\n >\n {props.children}\n </Scroller>\n </div>\n )\n }\n\n handleScroller = (scroller: Scroller) => {\n this.scroller = scroller\n setRef(this.props.scrollerRef, scroller)\n }\n\n componentDidMount() {\n this.handleSizing()\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ClippedScrollerProps) {\n if (!isPropsEqual(prevProps, this.props)) { // an external change?\n this.handleSizing()\n }\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n }\n\n handleSizing = () => {\n let { props } = this\n\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() })\n }\n\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() })\n }\n }\n\n needsXScrolling() {\n return this.scroller.needsXScrolling()\n }\n\n needsYScrolling() {\n return this.scroller.needsYScrolling()\n }\n}\n","import { ScrollListener } from './ScrollListener'\nimport { setScrollFromLeftEdge } from './scroll-left-norm'\n\nexport class ScrollSyncer {\n private masterEl: HTMLElement\n private scrollListeners: ScrollListener[]\n private isPaused: boolean = false\n\n constructor(\n private isVertical: boolean,\n private scrollEls: HTMLElement[],\n ) {\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el))\n }\n\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy()\n }\n }\n\n bindScroller(el: HTMLElement) {\n let { scrollEls, isVertical } = this\n let scrollListener = new ScrollListener(el)\n\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el)\n }\n\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop\n } else {\n otherEl.scrollLeft = el.scrollLeft\n }\n }\n }\n }\n }\n }\n\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null\n }\n }\n\n scrollListener.emitter.on('scroll', onScroll)\n scrollListener.emitter.on('scrollEnd', onScrollEnd)\n\n return scrollListener\n }\n\n assignMaster(el: HTMLElement) {\n this.masterEl = el\n\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll() // to prevent residual scrolls from reclaiming master\n }\n }\n }\n\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft)\n }\n\n this.isPaused = false\n }\n\n forceScrollTop(top: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top\n }\n\n this.isPaused = false\n }\n}\n","import {\n createElement, VNode, Fragment,\n BaseComponent,\n isArraysEqual,\n findElements,\n mapHash,\n RefMap,\n ColProps, CssDimValue, hasShrinkWidth, renderMicroColGroup,\n ScrollGridProps, ScrollGridSectionConfig, ColGroupConfig,\n getScrollGridClassNames, getSectionClassNames, getSectionHasLiquidHeight, getAllowYScrolling, renderChunkContent, computeShrinkWidth,\n getIsRtlScrollbarOnLeft,\n setRef,\n sanitizeShrinkWidth,\n isPropsEqual,\n compareObjs,\n isColPropsEqual,\n getScrollbarWidths,\n memoizeArraylike,\n MemoiseArrayFunc,\n collectFromHash,\n memoizeHashlike,\n MemoizeHashFunc,\n ScrollGridChunkConfig,\n getCanVGrowWithinCell,\n config,\n} from '@fullcalendar/common'\nimport { StickyScrolling } from './StickyScrolling'\nimport { ClippedScroller, ClippedOverflowValue } from './ClippedScroller'\nimport { ScrollSyncer } from './ScrollSyncer'\n\ninterface ScrollGridState {\n shrinkWidths: number[] // for only one col within each vertical stack of chunks\n forceYScrollbars: boolean // null means not computed yet\n forceXScrollbars: boolean // \"\n scrollerClientWidths: { [index: string]: number } // why not use array?\n scrollerClientHeights: { [index: string]: number }\n sectionRowMaxHeights: number[][][]\n}\n\ninterface ColGroupStat {\n hasShrinkCol: boolean\n totalColWidth: number\n totalColMinWidth: number\n allowXScrolling: boolean\n width?: CssDimValue\n cols: ColProps[]\n}\n\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nexport class ScrollGrid extends BaseComponent<ScrollGridProps, ScrollGridState> {\n private compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual)\n private renderMicroColGroups = memoizeArraylike(renderMicroColGroup) // yucky to memoize VNodes, but much more efficient for consumers\n private clippedScrollerRefs = new RefMap<ClippedScroller>()\n\n // doesn't hold non-scrolling els used just for padding\n private scrollerElRefs = new RefMap<HTMLElement>(this._handleScrollerEl.bind(this))\n\n private chunkElRefs = new RefMap<HTMLTableCellElement>(this._handleChunkEl.bind(this))\n private getStickyScrolling: MemoiseArrayFunc<[HTMLElement, boolean], StickyScrolling>\n private getScrollSyncersBySection: MemoizeHashFunc<HTMLElement[], ScrollSyncer>\n private getScrollSyncersByColumn: MemoizeHashFunc<HTMLElement[], ScrollSyncer>\n private stickyScrollings: StickyScrolling[] = []\n private scrollSyncersBySection: { [sectionI: string]: ScrollSyncer } = {}\n private scrollSyncersByColumn: { [columnI: string]: ScrollSyncer } = {}\n\n // for row-height-syncing\n private rowUnstableMap = new Map<HTMLTableRowElement, boolean>() // no need to groom. always self-cancels\n private rowInnerMaxHeightMap = new Map<HTMLTableRowElement, number>()\n private anyRowHeightsChanged = false\n\n private lastSizingDate: Date\n private recentSizingCnt = 0\n\n state: ScrollGridState = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n }\n\n render(): VNode {\n let { props, state, context } = this\n let { shrinkWidths } = state\n\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]))\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]))\n let classNames = getScrollGridClassNames(props.liquid, context)\n\n // yuck\n let indices: [ number, number ][] = []\n let [sectionCnt, chunksPerSection] = this.getDims()\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n indices.push([sectionI, chunkI])\n }\n }\n\n // TODO: make DRY\n let sectionConfigs = props.sections\n let configCnt = sectionConfigs.length\n let configI = 0\n let currentConfig: ScrollGridSectionConfig\n let headSectionNodes: VNode[] = []\n let bodySectionNodes: VNode[] = []\n let footSectionNodes: VNode[] = []\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n true,\n ))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n false,\n ))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n true,\n ))\n configI += 1\n }\n\n const isBuggy = !getCanVGrowWithinCell() // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' }\n\n return createElement(\n 'table',\n {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n },\n renderMacroColGroup(colGroupStats, shrinkWidths),\n Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes),\n Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes),\n Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes),\n isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes),\n )\n }\n\n renderSection(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStats: ColGroupStat[],\n microColGroupNodes: VNode[],\n sectionRowMaxHeights: number[][][],\n isHeader: boolean,\n ): VNode {\n if ('outerContent' in sectionConfig) {\n return (\n <Fragment key={sectionConfig.key}>\n {sectionConfig.outerContent}\n </Fragment>\n )\n }\n\n return (\n <tr\n key={sectionConfig.key}\n role=\"presentation\"\n className={getSectionClassNames(sectionConfig, this.props.liquid).join(' ')}\n >\n {sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(\n sectionConfig,\n sectionIndex,\n colGroupStats[i],\n microColGroupNodes[i],\n chunkConfig,\n i,\n (sectionRowMaxHeights[sectionIndex] || [])[i] || [],\n isHeader,\n ))}\n </tr>\n )\n }\n\n renderChunk(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStat: ColGroupStat | undefined,\n microColGroupNode: VNode | undefined,\n chunkConfig: ScrollGridChunkConfig,\n chunkIndex: number,\n rowHeights: number[],\n isHeader: boolean,\n ): VNode {\n if ('outerContent' in chunkConfig) {\n return (\n <Fragment key={chunkConfig.key}>\n {chunkConfig.outerContent}\n </Fragment>\n )\n }\n\n let { state } = this\n let { scrollerClientWidths, scrollerClientHeights } = state\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let index = sectionIndex * chunksPerSection + chunkIndex\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let isVScrollSide = chunkIndex === sideScrollIndex\n let isLastSection = sectionIndex === sectionCnt - 1\n\n let forceXScrollbars = isLastSection && state.forceXScrollbars // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars // NOOOO can result in `null`\n\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig) // rename? do in section func?\n\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig) // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || ''\n\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader)\n\n let overflowX: ClippedOverflowValue =\n forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden')\n\n let overflowY: ClippedOverflowValue =\n forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden')\n\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (\n <ClippedScroller\n ref={this.clippedScrollerRefs.createRef(index)}\n scrollerElRef={this.scrollerElRefs.createRef(index)}\n overflowX={overflowX}\n overflowY={overflowY}\n liquid={chunkVGrow}\n maxHeight={sectionConfig.maxHeight}\n >\n {content}\n </ClippedScroller>\n )\n\n return createElement(\n isHeader ? 'th' : 'td',\n {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index) as any,\n role: 'presentation',\n },\n content,\n )\n }\n\n componentDidMount() {\n this.getStickyScrolling = memoizeArraylike(initStickyScrolling, null, destroyStickyScrolling)\n this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer)\n this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer)\n\n this.updateScrollSyncers()\n this.handleSizing(false)\n\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ScrollGridProps, prevState: ScrollGridState) {\n this.updateScrollSyncers()\n\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights)\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n\n this.destroyStickyScrolling()\n this.destroyScrollSyncers()\n }\n\n handleSizing = (isForcedResize: boolean, sectionRowMaxHeightsChanged?: boolean) => {\n if (!this.allowSizing()) {\n return\n }\n\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true\n }\n\n let otherState: Partial<ScrollGridState> = {}\n\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights()\n }\n\n this.setState({\n shrinkWidths: this.computeShrinkWidths(),\n ...this.computeScrollerDims(),\n ...(otherState as any), // wtf\n }, () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling() // needs to happen AFTER final positioning committed to DOM\n }\n })\n }\n\n allowSizing() {\n let now = new Date()\n\n if (\n !this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL\n ) {\n this.lastSizingDate = now\n this.recentSizingCnt = 0\n return true\n }\n\n return (this.recentSizingCnt += 1) <= 10\n }\n\n handleRowHeightChange = (rowEl: HTMLTableRowElement, isStable: boolean) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this\n\n if (!isStable) {\n rowUnstableMap.set(rowEl, true)\n } else {\n rowUnstableMap.delete(rowEl)\n\n let innerMaxHeight = getRowInnerMaxHeight(rowEl)\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight)\n this.anyRowHeightsChanged = true\n }\n\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n })\n }\n }\n }\n\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]))\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let shrinkWidths: number[] = []\n\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection) // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls)\n }\n })\n\n return shrinkWidths\n }\n\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n private computeSectionRowMaxHeights() {\n let newHeightMap = new Map<HTMLTableRowElement, number>()\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sectionRowMaxHeights: number[][][] = []\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI]\n let assignableHeights: number[][] = [] // chunk, row\n\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk: number[][] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let rowHeights: number[] = []\n\n let chunkEl = this.chunkElRefs.currentMap[index]\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl: HTMLTableRowElement) => {\n let max = getRowInnerMaxHeight(rowEl)\n newHeightMap.set(rowEl, max)\n return max\n })\n } else {\n rowHeights = []\n }\n\n rowHeightsByChunk.push(rowHeights)\n }\n\n let rowCnt = rowHeightsByChunk[0].length\n let isEqualRowCnt = true\n\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined // can be null\n\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false\n break\n }\n }\n\n if (!isEqualRowCnt) {\n let chunkHeightSums: number[] = []\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(\n sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length, // add in border\n )\n }\n\n let maxTotalSum = Math.max(...chunkHeightSums)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt // subtract border\n\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt)\n\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1)\n\n let rowInChunkHeights: number[] = []\n let row = 0\n\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst)\n row += 1\n }\n\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers)\n row += 1\n }\n\n assignableHeights.push(rowInChunkHeights)\n }\n } else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([])\n }\n\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks: number[] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row]\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h)\n }\n }\n\n let maxHeight = Math.max(...rowHeightsAcrossChunks)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight)\n }\n }\n }\n }\n\n sectionRowMaxHeights.push(assignableHeights)\n }\n\n this.rowInnerMaxHeightMap = newHeightMap\n\n return sectionRowMaxHeights\n }\n\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths()\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let lastSectionI = sectionCnt - 1\n let currentScrollers = this.clippedScrollerRefs.currentMap\n let scrollerEls = this.scrollerElRefs.currentMap\n let forceYScrollbars = false\n let forceXScrollbars = false\n let scrollerClientWidths: { [index: string]: number } = {}\n let scrollerClientHeights: { [index: string]: number } = {}\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true\n break\n }\n }\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true\n break\n }\n }\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let scrollerEl = scrollerEls[index]\n\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode as HTMLElement\n\n scrollerClientWidths[index] = Math.floor(\n harnessEl.getBoundingClientRect().width - (\n (chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n\n scrollerClientHeights[index] = Math.floor(\n harnessEl.getBoundingClientRect().height - (\n (sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n }\n }\n }\n\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights }\n }\n\n updateStickyScrolling() {\n let { isRtl } = this.context\n let argsByKey = this.scrollerElRefs.getAll().map(\n (scrollEl) => [scrollEl, isRtl] as [ HTMLElement, boolean ],\n )\n\n let stickyScrollings = this.getStickyScrolling(argsByKey)\n\n stickyScrollings.forEach((stickyScrolling) => stickyScrolling.updateSize())\n\n this.stickyScrollings = stickyScrollings\n }\n\n destroyStickyScrolling() {\n this.stickyScrollings.forEach(destroyStickyScrolling)\n }\n\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let scrollElsBySection: { [sectionI: string]: HTMLElement[] } = {}\n let scrollElsByColumn: { [colI: string]: HTMLElement[] } = {}\n let scrollElMap = this.scrollerElRefs.currentMap\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection\n let endIndex = startIndex + chunksPerSection\n\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1) // use the filtered\n }\n\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection) // DON'T use the filtered\n }\n\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection)\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn)\n }\n\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer)\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer)\n }\n\n getChunkConfigByIndex(index: number) { // somewhat expensive for something so simple\n let chunksPerSection = this.getDims()[1]\n let sectionI = Math.floor(index / chunksPerSection)\n let chunkI = index % chunksPerSection\n let sectionConfig = this.props.sections[sectionI]\n\n return sectionConfig && sectionConfig.chunks[chunkI]\n }\n\n forceScrollLeft(col: number, scrollLeft: number) {\n let scrollSyncer = this.scrollSyncersByColumn[col]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft)\n }\n }\n\n forceScrollTop(sectionI: number, scrollTop: number) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop)\n }\n }\n\n _handleChunkEl(chunkEl: HTMLTableCellElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl)\n }\n }\n\n _handleScrollerEl(scrollerEl: HTMLElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl)\n }\n }\n\n getDims() {\n let sectionCnt = this.props.sections.length\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0\n\n return [sectionCnt, chunksPerSection]\n }\n}\n\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n})\n\nfunction sumNumbers(numbers: number[]) { // TODO: general util\n let sum = 0\n\n for (let n of numbers) {\n sum += n\n }\n\n return sum\n}\n\nfunction getRowInnerMaxHeight(rowEl: HTMLElement) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight)\n\n if (innerHeights.length) {\n return Math.max(...innerHeights)\n }\n\n return 0\n}\n\nfunction getElHeight(el: HTMLElement) {\n return el.offsetHeight // better to deal with integers, for rounding, for PureComponent\n}\n\nfunction renderMacroColGroup(colGroupStats: ColGroupStat[], shrinkWidths: number[]) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width\n\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1 // +1 for border :(\n }\n\n return ( // eslint-disable-next-line react/jsx-key\n <col style={{ width }} />\n )\n })\n\n return createElement('colgroup', {}, ...children)\n}\n\nfunction compileColGroupStat(colGroupConfig: ColGroupConfig): ColGroupStat {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width') // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth')\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols)\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol)\n\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n }\n}\n\nfunction sumColProp(cols: ColProps[], propName: string) {\n let total = 0\n\n for (let col of cols) {\n let val = col[propName]\n\n if (typeof val === 'number') {\n total += val * (col.span || 1)\n }\n }\n\n return total\n}\n\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n}\n\nfunction isColGroupStatsEqual(stat0: ColGroupStat, stat1: ColGroupStat): boolean {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY)\n}\n\n// for memoizers...\n\nfunction initScrollSyncer(isVertical: boolean, ...scrollEls: HTMLElement[]) {\n return new ScrollSyncer(isVertical, scrollEls)\n}\n\nfunction destroyScrollSyncer(scrollSyncer: ScrollSyncer) {\n scrollSyncer.destroy()\n}\n\nfunction initStickyScrolling(scrollEl: HTMLElement, isRtl: boolean) {\n return new StickyScrolling(scrollEl, isRtl)\n}\n\nfunction destroyStickyScrolling(stickyScrolling: StickyScrolling) {\n stickyScrolling.destroy()\n}\n","import {\n config, computeVisibleDayRange, Duration, DateProfile, asCleanDays, addDays, wholeDivideDurations, DateMarker,\n startOfDay, createDuration, DateEnv, diffWholeDays, asRoughMs, createFormatter, greatestDurationDenominator,\n asRoughMinutes, padStart, asRoughSeconds, DateRange, isInt, DateProfileGenerator, BaseOptionsRefined,\n} from '@fullcalendar/common'\n\nexport interface TimelineDateProfile {\n labelInterval: Duration\n slotDuration: Duration\n slotsPerLabel: number\n headerFormats: any\n isTimeScale: boolean\n largeUnit: string\n emphasizeWeeks: boolean\n snapDuration: Duration\n snapsPerSlot: number\n normalizedRange: DateRange // snaps to unit. adds in slotMinTime/slotMaxTime\n timeWindowMs: number\n slotDates: DateMarker[]\n isWeekStarts: boolean[]\n snapDiffToIndex: number[]\n snapIndexToDiff: number[]\n snapCnt: number\n slotCnt: number\n cellRows: TimelineHeaderCell[][]\n}\n\nexport interface TimelineHeaderCell {\n date: DateMarker\n text: string\n rowUnit: string\n colspan: number\n isWeekStart: boolean\n}\n\nconst MIN_AUTO_LABELS = 18 // more than `12` months but less that `24` hours\nconst MAX_AUTO_SLOTS_PER_LABEL = 6 // allows 6 10-min slots in an hour\nconst MAX_AUTO_CELLS = 200 // allows 4-days to have a :30 slot duration\nconfig.MAX_TIMELINE_SLOTS = 1000\n\n// potential nice values for slot-duration and interval-duration\nconst STOCK_SUB_DURATIONS = [ // from largest to smallest\n { years: 1 },\n { months: 1 },\n { days: 1 },\n { hours: 1 },\n { minutes: 30 },\n { minutes: 15 },\n { minutes: 10 },\n { minutes: 5 },\n { minutes: 1 },\n { seconds: 30 },\n { seconds: 15 },\n { seconds: 10 },\n { seconds: 5 },\n { seconds: 1 },\n { milliseconds: 500 },\n { milliseconds: 100 },\n { milliseconds: 10 },\n { milliseconds: 1 },\n]\n\nexport function buildTimelineDateProfile(\n dateProfile: DateProfile,\n dateEnv: DateEnv,\n allOptions: BaseOptionsRefined,\n dateProfileGenerator: DateProfileGenerator,\n): TimelineDateProfile {\n let tDateProfile = {\n labelInterval: allOptions.slotLabelInterval,\n slotDuration: allOptions.slotDuration,\n } as TimelineDateProfile\n\n validateLabelAndSlot(tDateProfile, dateProfile, dateEnv) // validate after computed grid duration\n ensureLabelInterval(tDateProfile, dateProfile, dateEnv)\n ensureSlotDuration(tDateProfile, dateProfile, dateEnv)\n\n let input = allOptions.slotLabelFormat\n let rawFormats =\n Array.isArray(input) ? input :\n (input != null) ? [input] :\n computeHeaderFormats(tDateProfile, dateProfile, dateEnv, allOptions)\n\n tDateProfile.headerFormats = rawFormats.map((rawFormat) => createFormatter(rawFormat))\n\n tDateProfile.isTimeScale = Boolean(tDateProfile.slotDuration.milliseconds)\n\n let largeUnit = null\n if (!tDateProfile.isTimeScale) {\n const slotUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit\n if (/year|month|week/.test(slotUnit)) {\n largeUnit = slotUnit\n }\n }\n\n tDateProfile.largeUnit = largeUnit\n\n tDateProfile.emphasizeWeeks =\n asCleanDays(tDateProfile.slotDuration) === 1 &&\n currentRangeAs('weeks', dateProfile, dateEnv) >= 2 &&\n !allOptions.businessHours\n\n /*\n console.log('label interval =', timelineView.labelInterval.humanize())\n console.log('slot duration =', timelineView.slotDuration.humanize())\n console.log('header formats =', timelineView.headerFormats)\n console.log('isTimeScale', timelineView.isTimeScale)\n console.log('largeUnit', timelineView.largeUnit)\n */\n\n let rawSnapDuration = allOptions.snapDuration\n let snapDuration\n let snapsPerSlot\n\n if (rawSnapDuration) {\n snapDuration = createDuration(rawSnapDuration)\n snapsPerSlot = wholeDivideDurations(tDateProfile.slotDuration, snapDuration)\n // ^ TODO: warning if not whole?\n }\n\n if (snapsPerSlot == null) {\n snapDuration = tDateProfile.slotDuration\n snapsPerSlot = 1\n }\n\n tDateProfile.snapDuration = snapDuration\n tDateProfile.snapsPerSlot = snapsPerSlot\n\n // more...\n\n let timeWindowMs = asRoughMs(dateProfile.slotMaxTime) - asRoughMs(dateProfile.slotMinTime)\n\n // TODO: why not use normalizeRange!?\n let normalizedStart = normalizeDate(dateProfile.renderRange.start, tDateProfile, dateEnv)\n let normalizedEnd = normalizeDate(dateProfile.renderRange.end, tDateProfile, dateEnv)\n\n // apply slotMinTime/slotMaxTime\n // TODO: View should be responsible.\n if (tDateProfile.isTimeScale) {\n normalizedStart = dateEnv.add(normalizedStart, dateProfile.slotMinTime)\n normalizedEnd = dateEnv.add(\n addDays(normalizedEnd, -1),\n dateProfile.slotMaxTime,\n )\n }\n\n tDateProfile.timeWindowMs = timeWindowMs\n tDateProfile.normalizedRange = { start: normalizedStart, end: normalizedEnd }\n\n let slotDates = []\n let date = normalizedStart\n while (date < normalizedEnd) {\n if (isValidDate(date, tDateProfile, dateProfile, dateProfileGenerator)) {\n slotDates.push(date)\n }\n date = dateEnv.add(date, tDateProfile.slotDuration)\n }\n\n tDateProfile.slotDates = slotDates\n\n // more...\n\n let snapIndex = -1\n let snapDiff = 0 // index of the diff :(\n const snapDiffToIndex = []\n const snapIndexToDiff = []\n\n date = normalizedStart\n while (date < normalizedEnd) {\n if (isValidDate(date, tDateProfile, dateProfile, dateProfileGenerator)) {\n snapIndex += 1\n snapDiffToIndex.push(snapIndex)\n snapIndexToDiff.push(snapDiff)\n } else {\n snapDiffToIndex.push(snapIndex + 0.5)\n }\n date = dateEnv.add(date, tDateProfile.snapDuration)\n snapDiff += 1\n }\n\n tDateProfile.snapDiffToIndex = snapDiffToIndex\n tDateProfile.snapIndexToDiff = snapIndexToDiff\n\n tDateProfile.snapCnt = snapIndex + 1 // is always one behind\n tDateProfile.slotCnt = tDateProfile.snapCnt / tDateProfile.snapsPerSlot\n\n // more...\n\n tDateProfile.isWeekStarts = buildIsWeekStarts(tDateProfile, dateEnv)\n tDateProfile.cellRows = buildCellRows(tDateProfile, dateEnv)\n tDateProfile.slotsPerLabel = wholeDivideDurations(tDateProfile.labelInterval, tDateProfile.slotDuration)\n\n return tDateProfile\n}\n\n/*\nsnaps to appropriate unit\n*/\nexport function normalizeDate(date: DateMarker, tDateProfile: TimelineDateProfile, dateEnv: DateEnv): DateMarker {\n let normalDate = date\n\n if (!tDateProfile.isTimeScale) {\n normalDate = startOfDay(normalDate)\n\n if (tDateProfile.largeUnit) {\n normalDate = dateEnv.startOf(normalDate, tDateProfile.largeUnit)\n }\n }\n\n return normalDate\n}\n\n/*\nsnaps to appropriate unit\n*/\nexport function normalizeRange(range: DateRange, tDateProfile: TimelineDateProfile, dateEnv: DateEnv): DateRange {\n if (!tDateProfile.isTimeScale) {\n range = computeVisibleDayRange(range)\n\n if (tDateProfile.largeUnit) {\n let dayRange = range // preserve original result\n\n range = {\n start: dateEnv.startOf(range.start, tDateProfile.largeUnit),\n end: dateEnv.startOf(range.end, tDateProfile.largeUnit),\n }\n\n // if date is partially through the interval, or is in the same interval as the start,\n // make the exclusive end be the *next* interval\n if (range.end.valueOf() !== dayRange.end.valueOf() || range.end <= range.start) {\n range = {\n start: range.start,\n end: dateEnv.add(range.end, tDateProfile.slotDuration),\n }\n }\n }\n }\n\n return range\n}\n\nexport function isValidDate(\n date: DateMarker,\n tDateProfile: TimelineDateProfile,\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n) {\n if (dateProfileGenerator.isHiddenDay(date)) {\n return false\n }\n\n if (tDateProfile.isTimeScale) {\n // determine if the time is within slotMinTime/slotMaxTime, which may have wacky values\n let day = startOfDay(date)\n let timeMs = date.valueOf() - day.valueOf()\n let ms = timeMs - asRoughMs(dateProfile.slotMinTime) // milliseconds since slotMinTime\n ms = ((ms % 86400000) + 86400000) % 86400000 // make negative values wrap to 24hr clock\n return ms < tDateProfile.timeWindowMs // before the slotMaxTime?\n }\n\n return true\n}\n\nfunction validateLabelAndSlot(tDateProfile: TimelineDateProfile, dateProfile: DateProfile, dateEnv: DateEnv) {\n const { currentRange } = dateProfile\n\n // make sure labelInterval doesn't exceed the max number of cells\n if (tDateProfile.labelInterval) {\n const labelCnt = dateEnv.countDurationsBetween(\n currentRange.start,\n currentRange.end,\n tDateProfile.labelInterval,\n )\n if (labelCnt > config.MAX_TIMELINE_SLOTS) {\n console.warn('slotLabelInterval results in too many cells')\n tDateProfile.labelInterval = null\n }\n }\n\n // make sure slotDuration doesn't exceed the maximum number of cells\n if (tDateProfile.slotDuration) {\n const slotCnt = dateEnv.countDurationsBetween(\n currentRange.start,\n currentRange.end,\n tDateProfile.slotDuration,\n )\n if (slotCnt > config.MAX_TIMELINE_SLOTS) {\n console.warn('slotDuration results in too many cells')\n tDateProfile.slotDuration = null\n }\n }\n\n // make sure labelInterval is a multiple of slotDuration\n if (tDateProfile.labelInterval && tDateProfile.slotDuration) {\n const slotsPerLabel = wholeDivideDurations(tDateProfile.labelInterval, tDateProfile.slotDuration)\n if (slotsPerLabel === null || slotsPerLabel < 1) {\n console.warn('slotLabelInterval must be a multiple of slotDuration')\n tDateProfile.slotDuration = null\n }\n }\n}\n\nfunction ensureLabelInterval(tDateProfile: TimelineDateProfile, dateProfile: DateProfile, dateEnv: DateEnv) {\n const { currentRange } = dateProfile\n let { labelInterval } = tDateProfile\n\n if (!labelInterval) {\n // compute based off the slot duration\n // find the largest label interval with an acceptable slots-per-label\n let input\n if (tDateProfile.slotDuration) {\n for (input of STOCK_SUB_DURATIONS) {\n const tryLabelInterval = createDuration(input)\n const slotsPerLabel = wholeDivideDurations(tryLabelInterval, tDateProfile.slotDuration)\n if (slotsPerLabel !== null && slotsPerLabel <= MAX_AUTO_SLOTS_PER_LABEL) {\n labelInterval = tryLabelInterval\n break\n }\n }\n\n // use the slot duration as a last resort\n if (!labelInterval) {\n labelInterval = tDateProfile.slotDuration\n }\n\n // compute based off the view's duration\n // find the largest label interval that yields the minimum number of labels\n } else {\n for (input of STOCK_SUB_DURATIONS) {\n labelInterval = createDuration(input)\n const labelCnt = dateEnv.countDurationsBetween(\n currentRange.start,\n currentRange.end,\n labelInterval,\n )\n if (labelCnt >= MIN_AUTO_LABELS) {\n break\n }\n }\n }\n\n tDateProfile.labelInterval = labelInterval\n }\n\n return labelInterval\n}\n\nfunction ensureSlotDuration(tDateProfile: TimelineDateProfile, dateProfile: DateProfile, dateEnv: DateEnv) {\n const { currentRange } = dateProfile\n let { slotDuration } = tDateProfile\n\n if (!slotDuration) {\n const labelInterval = ensureLabelInterval(tDateProfile, dateProfile, dateEnv) // will compute if necessary\n\n // compute based off the label interval\n // find the largest slot duration that is different from labelInterval, but still acceptable\n for (let input of STOCK_SUB_DURATIONS) {\n const trySlotDuration = createDuration(input)\n const slotsPerLabel = wholeDivideDurations(labelInterval, trySlotDuration)\n if (slotsPerLabel !== null && slotsPerLabel > 1 && slotsPerLabel <= MAX_AUTO_SLOTS_PER_LABEL) {\n slotDuration = trySlotDuration\n break\n }\n }\n\n // only allow the value if it won't exceed the view's # of slots limit\n if (slotDuration) {\n const slotCnt = dateEnv.countDurationsBetween(\n currentRange.start,\n currentRange.end,\n slotDuration,\n )\n if (slotCnt > MAX_AUTO_CELLS) {\n slotDuration = null\n }\n }\n\n // use the label interval as a last resort\n if (!slotDuration) {\n slotDuration = labelInterval\n }\n\n tDateProfile.slotDuration = slotDuration\n }\n\n return slotDuration\n}\n\nfunction computeHeaderFormats(\n tDateProfile: TimelineDateProfile,\n dateProfile: DateProfile,\n dateEnv: DateEnv,\n allOptions: BaseOptionsRefined,\n) {\n let format1\n let format2\n const { labelInterval } = tDateProfile\n let unit = greatestDurationDenominator(labelInterval).unit\n const weekNumbersVisible = allOptions.weekNumbers\n let format0 = (format1 = (format2 = null))\n\n // NOTE: weekNumber computation function wont work\n\n if ((unit === 'week') && !weekNumbersVisible) {\n unit = 'day'\n }\n\n switch (unit) {\n case 'year':\n format0 = { year: 'numeric' } // '2015'\n break\n\n case 'month':\n if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n format0 = { year: 'numeric' } // '2015'\n }\n\n format1 = { month: 'short' } // 'Jan'\n break\n\n case 'week':\n if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n format0 = { year: 'numeric' } // '2015'\n }\n\n format1 = { week: 'narrow' } // 'Wk4'\n break\n\n case 'day':\n if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n format0 = { year: 'numeric', month: 'long' } // 'January 2014'\n } else if (currentRangeAs('months', dateProfile, dateEnv) > 1) {\n format0 = { month: 'long' } // 'January'\n }\n\n if (weekNumbersVisible) {\n format1 = { week: 'short' } // 'Wk 4'\n }\n\n format2 = { weekday: 'narrow', day: 'numeric' } // 'Su 9'\n break\n\n case 'hour':\n if (weekNumbersVisible) {\n format0 = { week: 'short' } // 'Wk 4'\n }\n\n if (currentRangeAs('days', dateProfile, dateEnv) > 1) {\n format1 = { weekday: 'short', day: 'numeric', month: 'numeric', omitCommas: true } // Sat 4/7\n }\n\n format2 = {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'short',\n }\n break\n\n case 'minute':\n // sufficiently large number of different minute cells?\n if ((asRoughMinutes(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {\n format0 = {\n hour: 'numeric',\n meridiem: 'short',\n }\n format1 = (params) => (\n ':' + padStart(params.date.minute, 2) // ':30'\n )\n } else {\n format0 = {\n hour: 'numeric',\n minute: 'numeric',\n meridiem: 'short',\n }\n }\n break\n\n case 'second':\n // sufficiently large number of different second cells?\n if ((asRoughSeconds(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {\n format0 = { hour: 'numeric', minute: '2-digit', meridiem: 'lowercase' } // '8:30 PM'\n format1 = (params) => (\n ':' + padStart(params.date.second, 2) // ':30'\n )\n } else {\n format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' } // '8:30:45 PM'\n }\n break\n\n case 'millisecond':\n format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' } // '8:30:45 PM'\n format1 = (params) => (\n '.' + padStart(params.millisecond, 3)\n )\n break\n }\n\n return [].concat(format0 || [], format1 || [], format2 || [])\n}\n\n// Compute the number of the give units in the \"current\" range.\n// Won't go more precise than days.\n// Will return `0` if there's not a clean whole interval.\nfunction currentRangeAs(unit: string, dateProfile: DateProfile, dateEnv: DateEnv) {\n let range = dateProfile.currentRange\n let res = null\n\n if (unit === 'years') {\n res = dateEnv.diffWholeYears(range.start, range.end)\n } else if (unit === 'months') {\n res = dateEnv.diffWholeMonths(range.start, range.end)\n } else if (unit === 'weeks') {\n res = dateEnv.diffWholeMonths(range.start, range.end)\n } else if (unit === 'days') {\n res = diffWholeDays(range.start, range.end)\n }\n\n return res || 0\n}\n\nfunction buildIsWeekStarts(tDateProfile: TimelineDateProfile, dateEnv: DateEnv) {\n let { slotDates, emphasizeWeeks } = tDateProfile\n let prevWeekNumber = null\n let isWeekStarts: boolean[] = []\n\n for (let slotDate of slotDates) {\n let weekNumber = dateEnv.computeWeekNumber(slotDate)\n let isWeekStart = emphasizeWeeks && (prevWeekNumber !== null) && (prevWeekNumber !== weekNumber)\n prevWeekNumber = weekNumber\n\n isWeekStarts.push(isWeekStart)\n }\n\n return isWeekStarts\n}\n\nfunction buildCellRows(tDateProfile: TimelineDateProfile, dateEnv: DateEnv) {\n let slotDates = tDateProfile.slotDates\n let formats = tDateProfile.headerFormats\n let cellRows = formats.map(() => []) // indexed by row,col\n let slotAsDays = asCleanDays(tDateProfile.slotDuration)\n let guessedSlotUnit =\n slotAsDays === 7 ? 'week' :\n slotAsDays === 1 ? 'day' :\n null\n\n // specifically for navclicks\n let rowUnitsFromFormats = formats.map(\n (format) => (format.getLargestUnit ? format.getLargestUnit() : null),\n )\n\n // builds cellRows and slotCells\n for (let i = 0; i < slotDates.length; i += 1) {\n let date = slotDates[i]\n let isWeekStart = tDateProfile.isWeekStarts[i]\n\n for (let row = 0; row < formats.length; row += 1) {\n let format = formats[row]\n let rowCells = cellRows[row]\n let leadingCell = rowCells[rowCells.length - 1]\n let isLastRow = row === formats.length - 1\n let isSuperRow = formats.length > 1 && !isLastRow // more than one row and not the last\n let newCell = null\n let rowUnit = rowUnitsFromFormats[row] || (isLastRow ? guessedSlotUnit : null)\n\n if (isSuperRow) {\n let text = dateEnv.format(date, format)\n if (!leadingCell || (leadingCell.text !== text)) {\n newCell = buildCellObject(date, text, rowUnit)\n } else {\n leadingCell.colspan += 1\n }\n } else if (\n !leadingCell ||\n isInt(dateEnv.countDurationsBetween(\n tDateProfile.normalizedRange.start,\n date,\n tDateProfile.labelInterval,\n ))\n ) {\n let text = dateEnv.format(date, format)\n newCell = buildCellObject(date, text, rowUnit)\n } else {\n leadingCell.colspan += 1\n }\n\n if (newCell) {\n newCell.weekStart = isWeekStart\n rowCells.push(newCell)\n }\n }\n }\n\n return cellRows\n}\n\nfunction buildCellObject(date: DateMarker, text, rowUnit): TimelineHeaderCell {\n return { date, text, rowUnit, colspan: 1, isWeekStart: false }\n}\n","import { createElement, BaseComponent, DateMarker, ContentHook, ViewApi, DateEnv } from '@fullcalendar/common'\n\nexport interface TimelineHeaderThInnerProps {\n hookProps: HookProps\n isSticky: boolean\n navLinkAttrs: object | null\n}\n\nexport class TimelineHeaderThInner extends BaseComponent<TimelineHeaderThInnerProps> {\n render() {\n let { props, context } = this\n\n return (\n <ContentHook hookProps={props.hookProps} content={context.options.slotLabelContent} defaultContent={renderInnerContent}>\n {(innerElRef, innerContent) => (\n <a\n ref={innerElRef}\n className={'fc-timeline-slot-cushion fc-scrollgrid-sync-inner' + (props.isSticky ? ' fc-sticky' : '')}\n {...props.navLinkAttrs}\n >\n {innerContent}\n </a>\n )}\n </ContentHook>\n )\n }\n}\n\nfunction renderInnerContent(props) { // TODO: add types\n return props.text\n}\n\n// hook props\n// ----------\n\nexport interface HookPropsInput {\n level: number\n dateMarker: DateMarker\n text: string\n dateEnv: DateEnv\n viewApi: ViewApi\n}\n\nexport interface HookProps {\n level: number\n date: DateMarker // localized\n view: ViewApi\n text: string\n}\n\nexport function refineHookProps(input: HookPropsInput): HookProps {\n return {\n level: input.level,\n date: input.dateEnv.toDate(input.dateMarker),\n view: input.viewApi,\n text: input.text,\n }\n}\n","import {\n createElement, BaseComponent, DateRange, DateMarker, getDateMeta, getSlotClassNames,\n buildNavLinkAttrs, buildClassNameNormalizer, MountHook,\n getDayClassNames, DateProfile, memoizeObjArg, ViewContext, memoize,\n} from '@fullcalendar/common'\nimport { TimelineDateProfile, TimelineHeaderCell } from './timeline-date-profile'\nimport { TimelineHeaderThInner, refineHookProps, HookProps } from './TimelineHeaderThInner'\n\nexport interface TimelineHeaderThProps {\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n rowLevel: number\n cell: TimelineHeaderCell\n todayRange: DateRange\n nowDate: DateMarker\n rowInnerHeight?: number\n isSticky: boolean\n}\n\nexport class TimelineHeaderTh extends BaseComponent<TimelineHeaderThProps> {\n refineHookProps = memoizeObjArg(refineHookProps)\n normalizeClassNames = buildClassNameNormalizer<HookProps>()\n buildCellNavLinkAttrs = memoize(buildCellNavLinkAttrs)\n\n render() {\n let { props, context } = this\n let { dateEnv, options } = context\n let { cell, dateProfile, tDateProfile } = props\n\n // the cell.rowUnit is f'd\n // giving 'month' for a 3-day view\n // workaround: to infer day, do NOT time\n\n let dateMeta = getDateMeta(cell.date, props.todayRange, props.nowDate, dateProfile)\n\n let classNames = ['fc-timeline-slot', 'fc-timeline-slot-label'].concat(\n cell.rowUnit === 'time' // TODO: so slot classnames for week/month/bigger. see note above about rowUnit\n ? getSlotClassNames(dateMeta, context.theme)\n : getDayClassNames(dateMeta, context.theme),\n )\n\n if (cell.isWeekStart) {\n classNames.push('fc-timeline-slot-em')\n }\n\n let hookProps = this.refineHookProps({\n level: props.rowLevel,\n dateMarker: cell.date,\n text: cell.text,\n dateEnv: context.dateEnv,\n viewApi: context.viewApi,\n })\n\n let customClassNames = this.normalizeClassNames(options.slotLabelClassNames, hookProps)\n\n return (\n <MountHook hookProps={hookProps} didMount={options.slotLabelDidMount} willUnmount={options.slotLabelWillUnmount}>\n {(rootElRef) => (\n <th\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n data-date={dateEnv.formatIso(cell.date, { omitTime: !tDateProfile.isTimeScale, omitTimeZoneOffset: true })}\n colSpan={cell.colspan}\n >\n <div className=\"fc-timeline-slot-frame\" style={{ height: props.rowInnerHeight }}>\n <TimelineHeaderThInner\n hookProps={hookProps}\n isSticky={props.isSticky}\n navLinkAttrs={this.buildCellNavLinkAttrs(context, cell.date, cell.rowUnit)}\n />\n </div>\n </th>\n )}\n </MountHook>\n )\n }\n}\n\nfunction buildCellNavLinkAttrs(context: ViewContext, cellDate: DateMarker, rowUnit: string): object {\n return (rowUnit && rowUnit !== 'time')\n ? buildNavLinkAttrs(context, cellDate, rowUnit)\n : {}\n}\n","import { createElement, BaseComponent, Fragment, DateRange, DateMarker, DateProfile } from '@fullcalendar/common'\nimport { TimelineDateProfile } from './timeline-date-profile'\nimport { TimelineHeaderTh } from './TimelineHeaderTh'\n\nexport interface TimelineHeaderRowsProps {\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n nowDate: DateMarker\n todayRange: DateRange\n rowInnerHeights?: number[]\n}\n\nexport class TimelineHeaderRows extends BaseComponent<TimelineHeaderRowsProps> {\n render() {\n let { dateProfile, tDateProfile, rowInnerHeights, todayRange, nowDate } = this.props\n let { cellRows } = tDateProfile\n\n return (\n <Fragment>\n {cellRows.map((rowCells, rowLevel) => {\n let isLast = rowLevel === cellRows.length - 1\n let isChrono = tDateProfile.isTimeScale && isLast // the final row, with times?\n let classNames = [\n 'fc-timeline-header-row',\n isChrono ? 'fc-timeline-header-row-chrono' : '',\n ]\n\n return ( // eslint-disable-next-line react/no-array-index-key\n <tr key={rowLevel} className={classNames.join(' ')}>\n {rowCells.map((cell) => (\n <TimelineHeaderTh\n key={cell.date.toISOString()}\n cell={cell}\n rowLevel={rowLevel}\n dateProfile={dateProfile}\n tDateProfile={tDateProfile}\n todayRange={todayRange}\n nowDate={nowDate}\n rowInnerHeight={rowInnerHeights && rowInnerHeights[rowLevel]}\n isSticky={!isLast}\n />\n ))}\n </tr>\n )\n })}\n </Fragment>\n )\n }\n}\n","import {\n PositionCache, findDirectChildren,\n isInt, DateProfile,\n DateMarker, DateEnv, Duration, startOfDay, rangeContainsMarker, CssDimValue, DateRange, SegSpan,\n} from '@fullcalendar/common'\nimport { TimelineDateProfile } from './timeline-date-profile'\n\nexport class TimelineCoords { // TODO: rename to \"slat\" coords?\n outerCoordCache: PositionCache\n innerCoordCache: PositionCache\n\n constructor(\n public slatRootEl: HTMLElement, // okay to expose?\n slatEls: HTMLElement[],\n public dateProfile: DateProfile,\n private tDateProfile: TimelineDateProfile,\n private dateEnv: DateEnv,\n public isRtl: boolean,\n ) {\n this.outerCoordCache = new PositionCache(\n slatRootEl,\n slatEls,\n true, // isHorizontal\n false, // isVertical\n )\n\n // for the inner divs within the slats\n // used for event rendering and scrollTime, to disregard slat border\n this.innerCoordCache = new PositionCache(\n slatRootEl,\n findDirectChildren(slatEls, 'div'),\n true, // isHorizontal\n false, // isVertical\n )\n }\n\n isDateInRange(date: DateMarker) {\n return rangeContainsMarker(this.dateProfile.currentRange, date)\n }\n\n // results range from negative width of area to 0\n dateToCoord(date: DateMarker): number {\n let { tDateProfile } = this\n let snapCoverage = this.computeDateSnapCoverage(date)\n let slotCoverage = snapCoverage / tDateProfile.snapsPerSlot\n let slotIndex = Math.floor(slotCoverage)\n slotIndex = Math.min(slotIndex, tDateProfile.slotCnt - 1)\n let partial = slotCoverage - slotIndex\n let { innerCoordCache, outerCoordCache } = this\n\n if (this.isRtl) {\n return outerCoordCache.originClientRect.width - (\n outerCoordCache.rights[slotIndex] -\n (innerCoordCache.getWidth(slotIndex) * partial)\n )\n }\n\n return (\n outerCoordCache.lefts[slotIndex] +\n (innerCoordCache.getWidth(slotIndex) * partial)\n )\n }\n\n rangeToCoords(range: DateRange): SegSpan {\n return {\n start: this.dateToCoord(range.start),\n end: this.dateToCoord(range.end),\n }\n }\n\n durationToCoord(duration: Duration): number {\n let { dateProfile, tDateProfile, dateEnv, isRtl } = this\n let coord = 0\n\n if (dateProfile) {\n let date = dateEnv.add(dateProfile.activeRange.start, duration)\n\n if (!tDateProfile.isTimeScale) {\n date = startOfDay(date)\n }\n\n coord = this.dateToCoord(date)\n\n // hack to overcome the left borders of non-first slat\n if (!isRtl && coord) {\n coord += 1\n }\n }\n\n return coord\n }\n\n coordFromLeft(coord: number) {\n if (this.isRtl) {\n return this.outerCoordCache.originClientRect.width - coord\n }\n return coord\n }\n\n // returned value is between 0 and the number of snaps\n computeDateSnapCoverage(date: DateMarker): number {\n return computeDateSnapCoverage(date, this.tDateProfile, this.dateEnv)\n }\n}\n\n// returned value is between 0 and the number of snaps\nexport function computeDateSnapCoverage(date: DateMarker, tDateProfile: TimelineDateProfile, dateEnv: DateEnv): number {\n let snapDiff = dateEnv.countDurationsBetween(\n tDateProfile.normalizedRange.start,\n date,\n tDateProfile.snapDuration,\n )\n\n if (snapDiff < 0) {\n return 0\n }\n\n if (snapDiff >= tDateProfile.snapDiffToIndex.length) {\n return tDateProfile.snapCnt\n }\n\n let snapDiffInt = Math.floor(snapDiff)\n let snapCoverage = tDateProfile.snapDiffToIndex[snapDiffInt]\n\n if (isInt(snapCoverage)) { // not an in-between value\n snapCoverage += snapDiff - snapDiffInt // add the remainder\n } else {\n // a fractional value, meaning the date is not visible\n // always round up in this case. works for start AND end dates in a range.\n snapCoverage = Math.ceil(snapCoverage)\n }\n\n return snapCoverage\n}\n\nexport function coordToCss(\n hcoord: number | null,\n isRtl: boolean,\n): { left: CssDimValue, right: CssDimValue } {\n if (hcoord === null) {\n return { left: '', right: '' }\n }\n if (isRtl) {\n return { right: hcoord, left: '' }\n }\n return { left: hcoord, right: '' }\n}\n\nexport function coordsToCss(\n hcoords: SegSpan | null,\n isRtl: boolean,\n): { left: CssDimValue, right: CssDimValue } {\n if (!hcoords) {\n return { left: '', right: '' }\n }\n if (isRtl) {\n return { right: hcoords.start, left: -hcoords.end }\n }\n return { left: hcoords.start, right: -hcoords.end }\n}\n","import {\n createElement, BaseComponent, CssDimValue, VNode, DateMarker, NowTimer,\n greatestDurationDenominator, DateRange, NowIndicatorRoot, createRef,\n findElements, RefObject, DateProfile,\n} from '@fullcalendar/common'\nimport { TimelineHeaderRows } from './TimelineHeaderRows'\nimport { coordToCss, TimelineCoords } from './TimelineCoords'\nimport { TimelineDateProfile } from './timeline-date-profile'\n\nexport interface TimelineHeaderProps {\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n clientWidth: number | null\n clientHeight: number | null\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n slatCoords: TimelineCoords\n rowInnerHeights?: number[]\n onMaxCushionWidth?: (number) => void\n}\n\nexport class TimelineHeader extends BaseComponent<TimelineHeaderProps> {\n rootElRef: RefObject<HTMLDivElement> = createRef<HTMLDivElement>()\n\n render() {\n let { props, context } = this\n\n // TODO: very repetitive\n // TODO: make part of tDateProfile?\n let timerUnit = greatestDurationDenominator(props.tDateProfile.slotDuration).unit\n\n // WORKAROUND: make ignore slatCoords when out of sync with dateProfile\n let slatCoords = props.slatCoords && props.slatCoords.dateProfile === props.dateProfile ? props.slatCoords : null\n\n return (\n <NowTimer unit={timerUnit}>\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <div className=\"fc-timeline-header\" ref={this.rootElRef}>\n <table\n aria-hidden\n className=\"fc-scrollgrid-sync-table\"\n style={{ minWidth: props.tableMinWidth, width: props.clientWidth }}\n >\n {props.tableColGroupNode}\n <tbody>\n <TimelineHeaderRows\n dateProfile={props.dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={nowDate}\n todayRange={todayRange}\n rowInnerHeights={props.rowInnerHeights}\n />\n </tbody>\n </table>\n {context.options.nowIndicator && (\n // need to have a container regardless of whether the current view has a visible now indicator\n // because apparently removal of the element resets the scroll for some reasons (issue #5351).\n // this issue doesn't happen for the timeline body however (\n <div className=\"fc-timeline-now-indicator-container\">\n {(slatCoords && slatCoords.isDateInRange(nowDate)) && (\n <NowIndicatorRoot isAxis date={nowDate}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timeline-now-indicator-arrow'].concat(classNames).join(' ')}\n style={coordToCss(slatCoords.dateToCoord(nowDate), context.isRtl)}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n )}\n </div>\n )}\n </div>\n )}\n </NowTimer>\n )\n }\n\n componentDidMount() {\n this.updateSize()\n }\n\n componentDidUpdate() {\n this.updateSize()\n }\n\n updateSize() {\n if (this.props.onMaxCushionWidth) {\n this.props.onMaxCushionWidth(this.computeMaxCushionWidth())\n }\n }\n\n computeMaxCushionWidth() { // TODO: called way too often\n return Math.max(\n ...findElements(this.rootElRef.current, '.fc-timeline-header-row:last-child .fc-timeline-slot-cushion').map(\n (el) => el.getBoundingClientRect().width,\n ),\n )\n }\n}\n","import {\n createElement, isInt, BaseComponent, DateMarker, Ref, DateRange, getDateMeta, getSlotClassNames,\n RenderHook, getDayClassNames, SlotLaneContentArg, DateProfile,\n} from '@fullcalendar/common'\nimport { TimelineDateProfile } from './timeline-date-profile'\n\nexport interface TimelineSlatCellProps {\n date: DateMarker\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n nowDate: DateMarker\n todayRange: DateRange\n isDay: boolean\n isEm: boolean\n elRef?: Ref<HTMLTableCellElement>\n}\n\nexport class TimelineSlatCell extends BaseComponent<TimelineSlatCellProps> {\n render() {\n let { props, context } = this\n let { dateEnv, options, theme } = context\n let { date, tDateProfile, isEm } = props\n let dateMeta = getDateMeta(props.date, props.todayRange, props.nowDate, props.dateProfile)\n let classNames = ['fc-timeline-slot', 'fc-timeline-slot-lane']\n let dataAttrs = { 'data-date': dateEnv.formatIso(date, { omitTimeZoneOffset: true, omitTime: !tDateProfile.isTimeScale }) }\n let hookProps: SlotLaneContentArg = {\n date: dateEnv.toDate(props.date),\n ...dateMeta,\n view: context.viewApi,\n }\n\n if (isEm) {\n classNames.push('fc-timeline-slot-em')\n }\n\n if (tDateProfile.isTimeScale) {\n classNames.push(\n isInt(dateEnv.countDurationsBetween(\n tDateProfile.normalizedRange.start,\n props.date,\n tDateProfile.labelInterval,\n )) ?\n 'fc-timeline-slot-major' :\n 'fc-timeline-slot-minor',\n )\n }\n\n classNames.push(...(\n props.isDay\n ? getDayClassNames(dateMeta, theme)\n : getSlotClassNames(dateMeta, theme)\n ))\n\n return (\n <RenderHook\n hookProps={hookProps}\n classNames={options.slotLaneClassNames}\n content={options.slotLaneContent}\n didMount={options.slotLaneDidMount}\n willUnmount={options.slotLaneWillUnmount}\n elRef={props.elRef}\n >\n {(rootElRef, customClassNames, innerElRef, innerContent) => (\n <td\n ref={rootElRef}\n className={classNames.concat(customClassNames).join(' ')}\n {...dataAttrs}\n >\n <div ref={innerElRef}>{innerContent}</div>\n </td>\n )}\n </RenderHook>\n )\n }\n}\n","import { createElement, BaseComponent, RefMap, DateMarker, DateRange, DateProfile } from '@fullcalendar/common'\nimport { TimelineDateProfile } from './timeline-date-profile'\nimport { TimelineSlatCell } from './TimelineSlatCell'\n\nexport interface TimelineSlatsContentProps {\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n nowDate: DateMarker\n todayRange: DateRange\n}\n\nexport interface TimelineSlatsBodyProps extends TimelineSlatsContentProps {\n cellElRefs: RefMap<HTMLTableCellElement>\n}\n\nexport class TimelineSlatsBody extends BaseComponent<TimelineSlatsBodyProps> {\n render() {\n let { props } = this\n let { tDateProfile, cellElRefs } = props\n let { slotDates, isWeekStarts } = tDateProfile\n let isDay = !tDateProfile.isTimeScale && !tDateProfile.largeUnit\n\n return (\n <tbody>\n <tr>\n {slotDates.map((slotDate, i) => {\n let key = slotDate.toISOString()\n\n return (\n <TimelineSlatCell\n key={key}\n elRef={cellElRefs.createRef(key)}\n date={slotDate}\n dateProfile={props.dateProfile}\n tDateProfile={tDateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n isEm={isWeekStarts[i]}\n isDay={isDay}\n />\n )\n })}\n </tr>\n </tbody>\n )\n }\n}\n","import {\n createElement, BaseComponent, multiplyDuration, RefMap, CssDimValue, VNode,\n createRef, ScrollResponder, ScrollRequest, DateMarker,\n} from '@fullcalendar/common'\nimport { TimelineCoords } from './TimelineCoords'\nimport { TimelineSlatsBody, TimelineSlatsContentProps } from './TimelineSlatsBody'\n\nexport interface TimelineSlatsProps extends TimelineSlatsContentProps {\n clientWidth: number | null\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n onCoords?: (coord: TimelineCoords | null) => void\n onScrollLeftRequest?: (scrollLeft: number) => void\n}\n\nexport class TimelineSlats extends BaseComponent<TimelineSlatsProps> {\n private rootElRef = createRef<HTMLDivElement>()\n private cellElRefs = new RefMap<HTMLTableCellElement>()\n private coords: TimelineCoords // for positionToHit\n private scrollResponder: ScrollResponder\n\n render() {\n let { props, context } = this\n\n return (\n <div className=\"fc-timeline-slots\" ref={this.rootElRef}>\n <table\n aria-hidden\n className={context.theme.getClass('table')}\n style={{\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n }}\n >\n {props.tableColGroupNode}\n <TimelineSlatsBody\n cellElRefs={this.cellElRefs}\n dateProfile={props.dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n />\n </table>\n </div>\n )\n }\n\n componentDidMount() {\n this.updateSizing()\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest)\n }\n\n componentDidUpdate(prevProps: TimelineSlatsProps) {\n this.updateSizing()\n\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile)\n }\n\n componentWillUnmount() {\n this.scrollResponder.detach()\n\n if (this.props.onCoords) {\n this.props.onCoords(null)\n }\n }\n\n updateSizing() {\n let { props, context } = this\n\n if (\n props.clientWidth !== null && // is sizing stable?\n this.scrollResponder\n // ^it's possible to have clientWidth immediately after mount (when returning from print view), but w/o scrollResponder\n ) {\n let rootEl = this.rootElRef.current\n\n if (rootEl.offsetWidth) { // not hidden by css\n this.coords = new TimelineCoords(\n this.rootElRef.current,\n collectCellEls(this.cellElRefs.currentMap, props.tDateProfile.slotDates),\n props.dateProfile,\n props.tDateProfile,\n context.dateEnv,\n context.isRtl,\n )\n\n if (props.onCoords) {\n props.onCoords(this.coords)\n }\n\n this.scrollResponder.update(false) // TODO: wouldn't have to do this if coords were in state\n }\n }\n }\n\n handleScrollRequest = (request: ScrollRequest) => {\n let { onScrollLeftRequest } = this.props\n let { coords } = this\n\n if (onScrollLeftRequest && coords) {\n if (request.time) {\n let scrollLeft = coords.coordFromLeft(coords.durationToCoord(request.time))\n onScrollLeftRequest(scrollLeft)\n }\n return true\n }\n\n return null // best?\n }\n\n positionToHit(leftPosition) { // TODO: kill somehow\n let { outerCoordCache } = this.coords\n let { dateEnv, isRtl } = this.context\n let { tDateProfile } = this.props\n let slatIndex = outerCoordCache.leftToIndex(leftPosition)\n\n if (slatIndex != null) {\n // somewhat similar to what TimeGrid does. consolidate?\n let slatWidth = outerCoordCache.getWidth(slatIndex)\n let partial = isRtl ?\n (outerCoordCache.rights[slatIndex] - leftPosition) / slatWidth :\n (leftPosition - outerCoordCache.lefts[slatIndex]) / slatWidth\n let localSnapIndex = Math.floor(partial * tDateProfile.snapsPerSlot)\n let start = dateEnv.add(\n tDateProfile.slotDates[slatIndex],\n multiplyDuration(tDateProfile.snapDuration, localSnapIndex),\n )\n let end = dateEnv.add(start, tDateProfile.snapDuration)\n\n return {\n dateSpan: {\n range: { start, end },\n allDay: !this.props.tDateProfile.isTimeScale,\n },\n dayEl: this.cellElRefs.currentMap[slatIndex],\n left: outerCoordCache.lefts[slatIndex], // TODO: make aware of snaps?\n right: outerCoordCache.rights[slatIndex],\n }\n }\n\n return null\n }\n}\n\nfunction collectCellEls(elMap: { [key: string]: HTMLElement }, slotDates: DateMarker[]) {\n return slotDates.map((slotDate) => {\n let key = slotDate.toISOString()\n return elMap[key]\n })\n}\n","import {\n BaseComponent, createElement, Fragment, BgEvent, renderFill,\n getSegMeta, DateRange, DateMarker, buildEventRangeKey,\n} from '@fullcalendar/common'\nimport { computeSegHCoords } from './event-placement'\nimport { coordsToCss, TimelineCoords } from './TimelineCoords'\nimport { TimelineLaneSeg } from './TimelineLaneSlicer'\n\nexport interface TimelineLaneBgProps {\n businessHourSegs: TimelineLaneSeg[] | null // can be null :(\n bgEventSegs: TimelineLaneSeg[] | null // can be null :(\n dateSelectionSegs: TimelineLaneSeg[]\n eventResizeSegs: TimelineLaneSeg[]\n timelineCoords: TimelineCoords | null\n todayRange: DateRange\n nowDate: DateMarker\n}\n\nexport class TimelineLaneBg extends BaseComponent<TimelineLaneBgProps> {\n render() {\n let { props } = this\n let highlightSeg = [].concat(props.eventResizeSegs, props.dateSelectionSegs)\n\n return props.timelineCoords && (\n <div className=\"fc-timeline-bg\">\n {/* Fragments contain the keys */}\n {this.renderSegs(props.businessHourSegs || [], props.timelineCoords, 'non-business')}\n {this.renderSegs(props.bgEventSegs || [], props.timelineCoords, 'bg-event')}\n {this.renderSegs(highlightSeg, props.timelineCoords, 'highlight')}\n </div>\n )\n }\n\n renderSegs(segs: TimelineLaneSeg[], timelineCoords: TimelineCoords | null, fillType: string) {\n let { todayRange, nowDate } = this.props\n let { isRtl } = this.context\n let segHCoords = computeSegHCoords(segs, 0, timelineCoords)\n\n let children = segs.map((seg, i) => {\n let hcoords = segHCoords[i]\n let hStyle = coordsToCss(hcoords, isRtl)\n\n return (\n <div\n key={buildEventRangeKey(seg.eventRange)}\n className=\"fc-timeline-bg-harness\"\n style={hStyle}\n >\n {fillType === 'bg-event' ?\n <BgEvent seg={seg} {...getSegMeta(seg, todayRange, nowDate)} /> :\n renderFill(fillType)}\n </div>\n )\n })\n\n return <Fragment>{children}</Fragment>\n }\n}\n","import {\n DateRange, intersectRanges, addMs, DateProfile, Slicer,\n DateProfileGenerator, DateEnv, DateMarker, Seg,\n} from '@fullcalendar/common'\nimport { normalizeRange, isValidDate, TimelineDateProfile } from './timeline-date-profile'\nimport { computeDateSnapCoverage } from './TimelineCoords'\n\nexport interface TimelineLaneSeg extends Seg {\n // the point of this range is because it might be different than seg.eventRange.range\n // because the date might have been rounded to the start of a week or a month\n start: DateMarker\n end: DateMarker\n}\n\nexport class TimelineLaneSlicer extends Slicer<\n TimelineLaneSeg,\n [DateProfile, DateProfileGenerator, TimelineDateProfile, DateEnv]\n> {\n sliceRange(\n origRange: DateRange,\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n tDateProfile: TimelineDateProfile,\n dateEnv: DateEnv,\n ): TimelineLaneSeg[] {\n let normalRange = normalizeRange(origRange, tDateProfile, dateEnv)\n let segs: TimelineLaneSeg[] = []\n\n // protect against when the span is entirely in an invalid date region\n if (\n computeDateSnapCoverage(normalRange.start, tDateProfile, dateEnv)\n < computeDateSnapCoverage(normalRange.end, tDateProfile, dateEnv)\n ) {\n // intersect the footprint's range with the grid's range\n let slicedRange = intersectRanges(normalRange, tDateProfile.normalizedRange)\n\n if (slicedRange) {\n segs.push({\n start: slicedRange.start,\n end: slicedRange.end,\n isStart: slicedRange.start.valueOf() === normalRange.start.valueOf()\n && isValidDate(slicedRange.start, tDateProfile, dateProfile, dateProfileGenerator),\n isEnd: slicedRange.end.valueOf() === normalRange.end.valueOf()\n && isValidDate(addMs(slicedRange.end, -1), tDateProfile, dateProfile, dateProfileGenerator),\n })\n }\n }\n\n return segs\n }\n}\n","import { StandardEvent, MinimalEventProps, createElement, BaseComponent, createFormatter } from '@fullcalendar/common'\n\nexport interface TimelineEventProps extends MinimalEventProps {\n isTimeScale: boolean\n}\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow',\n})\n\nexport class TimelineEvent extends BaseComponent<TimelineEventProps> {\n render() {\n let { props } = this\n\n return (\n <StandardEvent\n {...props}\n extraClassNames={['fc-timeline-event', 'fc-h-event']}\n defaultTimeFormat={DEFAULT_TIME_FORMAT}\n defaultDisplayEventTime={!props.isTimeScale}\n />\n )\n }\n}\n","import {\n createElement, BaseComponent, Ref, createRef, MoreLinkRoot,\n setRef, DateProfile, DateRange, DateMarker, Fragment, getSegMeta,\n} from '@fullcalendar/common'\nimport { TimelineSegPlacement } from './event-placement'\nimport { coordsToCss } from './TimelineCoords'\nimport { TimelineEvent } from './TimelineEvent'\nimport { TimelineLaneSeg } from './TimelineLaneSlicer'\n\nexport interface TimelineLaneMoreLinkProps {\n elRef: Ref<HTMLElement>\n hiddenSegs: TimelineLaneSeg[]\n placement: TimelineSegPlacement\n dateProfile: DateProfile\n nowDate: DateMarker\n todayRange: DateRange\n isTimeScale: boolean\n eventSelection: string\n resourceId?: string\n isForcedInvisible: { [instanceId: string]: any }\n}\n\nexport class TimelineLaneMoreLink extends BaseComponent<TimelineLaneMoreLinkProps> {\n rootElRef = createRef<HTMLElement>()\n\n render() {\n let { props, context } = this\n let { hiddenSegs, elRef, placement, resourceId } = props\n let { top, hcoords } = placement\n let isVisible = hcoords && top !== null\n let hStyle = coordsToCss(hcoords, context.isRtl)\n let extraDateSpan = resourceId ? { resourceId } : {}\n\n return (\n <MoreLinkRoot\n allDayDate={null}\n moreCnt={hiddenSegs.length}\n allSegs={hiddenSegs}\n hiddenSegs={hiddenSegs}\n alignmentElRef={this.rootElRef}\n dateProfile={props.dateProfile}\n todayRange={props.todayRange}\n extraDateSpan={extraDateSpan}\n popoverContent={() => (\n <Fragment>\n {hiddenSegs.map((seg) => {\n let instanceId = seg.eventRange.instance.instanceId\n return (\n <div\n key={instanceId}\n style={{ visibility: props.isForcedInvisible[instanceId] ? 'hidden' : ('' as any) }}\n >\n <TimelineEvent\n isTimeScale={props.isTimeScale}\n seg={seg}\n isDragging={false}\n isResizing={false}\n isDateSelecting={false}\n isSelected={instanceId === props.eventSelection}\n {...getSegMeta(seg, props.todayRange, props.nowDate)}\n />\n </div>\n )\n })}\n </Fragment>\n )}\n >\n {(rootElRef, classNames, innerElRef, innerContent, handleClick, title, isExpanded, popoverId) => (\n <a\n ref={(el: HTMLElement | null) => {\n setRef(rootElRef, el) // for MoreLinkRoot\n setRef(elRef, el) // for props props\n setRef(this.rootElRef, el) // for this component\n }}\n className={['fc-timeline-more-link'].concat(classNames).join(' ')}\n style={{\n visibility: isVisible ? ('' as any) : 'hidden',\n top: top || 0,\n ...hStyle,\n }}\n onClick={handleClick}\n title={title}\n aria-expanded={isExpanded}\n aria-controls={popoverId}\n >\n <div ref={innerElRef} className=\"fc-timeline-more-link-inner fc-sticky\">\n {innerContent}\n </div>\n </a>\n )}\n </MoreLinkRoot>\n )\n }\n}\n","import {\n Duration, EventStore, EventUiHash, DateSpan, EventInteractionState,\n BaseComponent, createElement, memoize, Fragment, RefMap, mapHash, createRef,\n getSegMeta, DateMarker, DateRange, DateProfile, sortEventSegs, isPropsEqual, buildIsoString,\n computeEarliestSegStart,\n} from '@fullcalendar/common'\nimport { TimelineDateProfile } from './timeline-date-profile'\nimport { coordsToCss, TimelineCoords } from './TimelineCoords'\nimport { TimelineLaneBg } from './TimelineLaneBg'\nimport { TimelineLaneSlicer, TimelineLaneSeg } from './TimelineLaneSlicer'\nimport { TimelineEvent } from './TimelineEvent'\nimport { TimelineLaneMoreLink } from './TimelineLaneMoreLink'\nimport { computeFgSegPlacements, computeSegHCoords, TimelineSegPlacement } from './event-placement'\n\nexport interface TimelineLaneProps extends TimelineLaneCoreProps {\n onHeightChange?: (innerEl: HTMLElement, isStable: boolean) => void\n}\n\nexport interface TimelineLaneCoreProps {\n nowDate: DateMarker\n todayRange: DateRange\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n nextDayThreshold: Duration\n businessHours: EventStore | null\n eventStore: EventStore | null\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n timelineCoords: TimelineCoords | null // TODO: renamt to SLAT coords?\n resourceId?: string // hack\n syncParentMinHeight?: boolean // hack\n}\n\ninterface TimelineLaneState {\n eventInstanceHeights: { [instanceId: string]: number } // integers\n moreLinkHeights: { [isoStr: string]: number } // integers\n}\n\nexport class TimelineLane extends BaseComponent<TimelineLaneProps, TimelineLaneState> {\n private slicer = new TimelineLaneSlicer()\n private sortEventSegs = memoize(sortEventSegs)\n private harnessElRefs = new RefMap<HTMLDivElement>()\n private moreElRefs = new RefMap<HTMLDivElement>()\n private innerElRef = createRef<HTMLDivElement>()\n // TODO: memoize event positioning\n\n state: TimelineLaneState = {\n eventInstanceHeights: {},\n moreLinkHeights: {},\n }\n\n render() {\n let { props, state, context } = this\n let { options } = context\n let { dateProfile, tDateProfile } = props\n\n let slicedProps = this.slicer.sliceProps(\n props,\n dateProfile,\n tDateProfile.isTimeScale ? null : props.nextDayThreshold,\n context, // wish we didn't have to pass in the rest of the args...\n dateProfile,\n context.dateProfileGenerator,\n tDateProfile,\n context.dateEnv,\n )\n\n let mirrorSegs =\n (slicedProps.eventDrag ? slicedProps.eventDrag.segs as TimelineLaneSeg[] : null) ||\n (slicedProps.eventResize ? slicedProps.eventResize.segs as TimelineLaneSeg[] : null) ||\n []\n\n let fgSegs = this.sortEventSegs(slicedProps.fgEventSegs, options.eventOrder) as TimelineLaneSeg[]\n let fgSegHCoords = computeSegHCoords(fgSegs, options.eventMinWidth, props.timelineCoords)\n let [fgPlacements, fgHeight] = computeFgSegPlacements(\n fgSegs,\n fgSegHCoords,\n state.eventInstanceHeights,\n state.moreLinkHeights,\n options.eventOrderStrict,\n options.eventMaxStack,\n )\n\n let isForcedInvisible = // TODO: more convenient\n (slicedProps.eventDrag ? slicedProps.eventDrag.affectedInstances : null) ||\n (slicedProps.eventResize ? slicedProps.eventResize.affectedInstances : null) ||\n {}\n\n return (\n <Fragment>\n <TimelineLaneBg\n businessHourSegs={slicedProps.businessHourSegs}\n bgEventSegs={slicedProps.bgEventSegs}\n timelineCoords={props.timelineCoords}\n eventResizeSegs={slicedProps.eventResize ? slicedProps.eventResize.segs as TimelineLaneSeg[] : [] /* bad new empty array? */}\n dateSelectionSegs={slicedProps.dateSelectionSegs}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n />\n <div\n className=\"fc-timeline-events fc-scrollgrid-sync-inner\"\n ref={this.innerElRef}\n style={{ height: fgHeight }}\n >\n {this.renderFgSegs(\n fgPlacements,\n isForcedInvisible,\n false,\n false,\n false,\n )}\n {this.renderFgSegs(\n buildMirrorPlacements(mirrorSegs, props.timelineCoords, fgPlacements),\n {},\n Boolean(slicedProps.eventDrag),\n Boolean(slicedProps.eventResize),\n false, // because mirror is never drawn for date selection\n )}\n </div>\n </Fragment>\n )\n }\n\n componentDidMount() {\n this.updateSize()\n }\n\n componentDidUpdate(prevProps: TimelineLaneProps, prevState: TimelineLaneState) {\n if (\n prevProps.eventStore !== this.props.eventStore || // external thing changed?\n prevProps.timelineCoords !== this.props.timelineCoords || // external thing changed?\n prevState.moreLinkHeights !== this.state.moreLinkHeights // HACK. see addStateEquality\n ) {\n this.updateSize()\n }\n }\n\n updateSize() {\n let { props } = this\n let { timelineCoords } = props\n const innerEl = this.innerElRef.current\n\n if (props.onHeightChange) {\n props.onHeightChange(innerEl, false)\n }\n\n if (timelineCoords) {\n this.setState({\n eventInstanceHeights: mapHash(this.harnessElRefs.currentMap, (harnessEl) => (\n Math.round(harnessEl.getBoundingClientRect().height)\n )),\n moreLinkHeights: mapHash(this.moreElRefs.currentMap, (moreEl) => (\n Math.round(moreEl.getBoundingClientRect().height)\n )),\n }, () => {\n if (props.onHeightChange) {\n props.onHeightChange(innerEl, true)\n }\n })\n }\n\n // hack\n if (props.syncParentMinHeight) {\n innerEl.parentElement.style.minHeight = innerEl.style.height\n }\n }\n\n renderFgSegs(\n segPlacements: TimelineSegPlacement[],\n isForcedInvisible: { [instanceId: string]: any },\n isDragging: boolean,\n isResizing: boolean,\n isDateSelecting: boolean,\n ) {\n let { harnessElRefs, moreElRefs, props, context } = this\n let isMirror = isDragging || isResizing || isDateSelecting\n\n return (\n <Fragment>\n {segPlacements.map((segPlacement) => {\n let { seg, hcoords, top } = segPlacement\n\n if (Array.isArray(seg)) { // a more-link\n let isoStr = buildIsoString(computeEarliestSegStart(seg))\n return (\n <TimelineLaneMoreLink\n key={'m:' + isoStr /* \"m\" for \"more\" */}\n elRef={moreElRefs.createRef(isoStr)}\n hiddenSegs={seg}\n placement={segPlacement}\n dateProfile={props.dateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n isTimeScale={props.tDateProfile.isTimeScale}\n eventSelection={props.eventSelection}\n resourceId={props.resourceId}\n isForcedInvisible={isForcedInvisible}\n />\n )\n }\n\n let instanceId = seg.eventRange.instance.instanceId\n let isVisible = isMirror || Boolean(!isForcedInvisible[instanceId] && hcoords && top !== null)\n let hStyle = coordsToCss(hcoords, context.isRtl)\n\n return (\n <div\n key={'e:' + instanceId /* \"e\" for \"event\" */}\n ref={isMirror ? null : harnessElRefs.createRef(instanceId)}\n className=\"fc-timeline-event-harness\"\n style={{\n visibility: isVisible ? ('' as any) : 'hidden',\n top: top || 0,\n ...hStyle,\n }}\n >\n <TimelineEvent\n isTimeScale={props.tDateProfile.isTimeScale}\n seg={seg}\n isDragging={isDragging}\n isResizing={isResizing}\n isDateSelecting={isDateSelecting}\n isSelected={instanceId === props.eventSelection /* TODO: bad for mirror? */}\n {...getSegMeta(seg, props.todayRange, props.nowDate)}\n />\n </div>\n )\n })}\n </Fragment>\n )\n }\n}\n\nTimelineLane.addStateEquality({\n eventInstanceHeights: isPropsEqual,\n moreLinkHeights: isPropsEqual,\n})\n\nfunction buildMirrorPlacements(\n mirrorSegs: TimelineLaneSeg[],\n timelineCoords: TimelineCoords | null,\n fgPlacements: TimelineSegPlacement[],\n): TimelineSegPlacement[] {\n if (!mirrorSegs.length || !timelineCoords) {\n return []\n }\n let topsByInstanceId = buildAbsoluteTopHash(fgPlacements) // TODO: cache this at first render?\n return mirrorSegs.map((seg) => ({\n seg,\n hcoords: timelineCoords.rangeToCoords(seg),\n top: topsByInstanceId[seg.eventRange.instance.instanceId],\n }))\n}\n\nfunction buildAbsoluteTopHash(placements: TimelineSegPlacement[]) {\n let topsByInstanceId: { [instanceId: string]: number } = {}\n\n for (let placement of placements) {\n let { seg } = placement\n if (!Array.isArray(seg)) { // doesn't represent a more-link\n topsByInstanceId[seg.eventRange.instance.instanceId] = placement.top\n }\n }\n\n return topsByInstanceId\n}\n","import {\n createElement, createRef, ViewProps, Hit, DateComponent, CssDimValue, VNode, DateMarker, NowTimer,\n greatestDurationDenominator, DateRange, NowIndicatorRoot, Fragment,\n} from '@fullcalendar/common'\nimport { coordToCss, TimelineCoords } from './TimelineCoords'\nimport { TimelineSlats } from './TimelineSlats'\nimport { TimelineLane } from './TimelineLane'\nimport { TimelineDateProfile } from './timeline-date-profile'\n\nexport interface TimelinGridProps extends ViewProps {\n tDateProfile: TimelineDateProfile\n clientWidth: number | null\n clientHeight: number | null\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n onSlatCoords?: (coords: TimelineCoords) => void\n onScrollLeftRequest?: (scrollLeft: number) => void\n}\n\ninterface TimelineGridState {\n coords: TimelineCoords | null\n}\n\nexport class TimelineGrid extends DateComponent<TimelinGridProps, TimelineGridState> {\n private slatsRef = createRef<TimelineSlats>()\n\n state: TimelineGridState = {\n coords: null,\n }\n\n render() {\n let { props, state, context } = this\n let { options } = context\n let { dateProfile, tDateProfile } = props\n let timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit\n\n return (\n <div\n className=\"fc-timeline-body\"\n ref={this.handeEl}\n style={{\n minWidth: props.tableMinWidth,\n height: props.clientHeight,\n width: props.clientWidth,\n }}\n >\n <NowTimer unit={timerUnit}>\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <Fragment>\n <TimelineSlats\n ref={this.slatsRef}\n dateProfile={dateProfile}\n tDateProfile={tDateProfile}\n nowDate={nowDate}\n todayRange={todayRange}\n clientWidth={props.clientWidth}\n tableColGroupNode={props.tableColGroupNode}\n tableMinWidth={props.tableMinWidth}\n onCoords={this.handleCoords}\n onScrollLeftRequest={props.onScrollLeftRequest}\n />\n <TimelineLane\n dateProfile={dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={nowDate}\n todayRange={todayRange}\n nextDayThreshold={options.nextDayThreshold}\n businessHours={props.businessHours}\n eventStore={props.eventStore}\n eventUiBases={props.eventUiBases}\n dateSelection={props.dateSelection}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n timelineCoords={state.coords}\n syncParentMinHeight\n />\n {(options.nowIndicator && state.coords && state.coords.isDateInRange(nowDate)) && (\n <div className=\"fc-timeline-now-indicator-container\">\n <NowIndicatorRoot isAxis={false} date={nowDate}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timeline-now-indicator-line'].concat(classNames).join(' ')}\n style={coordToCss(state.coords.dateToCoord(nowDate), context.isRtl)}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n </div>\n )}\n </Fragment>\n )}\n </NowTimer>\n </div>\n )\n }\n\n handeEl = (el: HTMLElement | null) => {\n if (el) {\n this.context.registerInteractiveComponent(this, { el })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n handleCoords = (coords: TimelineCoords) => {\n this.setState({ coords })\n\n if (this.props.onSlatCoords) {\n this.props.onSlatCoords(coords)\n }\n }\n\n // Hit System\n // ------------------------------------------------------------------------------------------\n\n queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit {\n let slats = this.slatsRef.current\n let slatHit = slats.positionToHit(positionLeft)\n\n if (slatHit) {\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: slatHit.dateSpan,\n rect: {\n left: slatHit.left,\n right: slatHit.right,\n top: 0,\n bottom: elHeight,\n },\n dayEl: slatHit.dayEl,\n layer: 0,\n }\n }\n\n return null\n }\n}\n","import {\n createElement, ViewProps, memoize, ChunkContentCallbackArgs, createRef, ViewRoot,\n DateComponent, ScrollGridSectionConfig, renderScrollShim, getStickyHeaderDates, getStickyFooterScrollbar,\n} from '@fullcalendar/common'\nimport { ScrollGrid } from '@fullcalendar/scrollgrid'\nimport { buildTimelineDateProfile, TimelineDateProfile } from './timeline-date-profile'\nimport { TimelineHeader } from './TimelineHeader'\nimport { TimelineGrid } from './TimelineGrid'\nimport { TimelineCoords } from './TimelineCoords'\n\ninterface TimelineViewState {\n slatCoords: TimelineCoords | null\n slotCushionMaxWidth: number | null\n}\n\nexport class TimelineView extends DateComponent<ViewProps, TimelineViewState> { // would make this abstract, but TS complains\n private buildTimelineDateProfile = memoize(buildTimelineDateProfile)\n private scrollGridRef = createRef<ScrollGrid>()\n\n state = {\n slatCoords: null,\n slotCushionMaxWidth: null,\n }\n\n render() {\n let { props, state, context } = this\n let { options } = context\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(options)\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(options)\n\n let tDateProfile = this.buildTimelineDateProfile(\n props.dateProfile,\n context.dateEnv,\n options,\n context.dateProfileGenerator,\n )\n\n let extraClassNames = [\n 'fc-timeline',\n options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : '',\n ]\n\n let { slotMinWidth } = options\n let slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile))\n\n let sections: ScrollGridSectionConfig[] = [\n {\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunks: [{\n key: 'timeline',\n content: (contentArg: ChunkContentCallbackArgs) => (\n <TimelineHeader\n dateProfile={props.dateProfile}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n tableMinWidth={contentArg.tableMinWidth}\n tableColGroupNode={contentArg.tableColGroupNode}\n tDateProfile={tDateProfile}\n slatCoords={state.slatCoords}\n onMaxCushionWidth={slotMinWidth ? null : this.handleMaxCushionWidth}\n />\n ),\n }],\n },\n {\n type: 'body',\n key: 'body',\n liquid: true,\n chunks: [{\n key: 'timeline',\n content: (contentArg: ChunkContentCallbackArgs) => (\n <TimelineGrid\n {...props}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n tableMinWidth={contentArg.tableMinWidth}\n tableColGroupNode={contentArg.tableColGroupNode}\n tDateProfile={tDateProfile}\n onSlatCoords={this.handleSlatCoords}\n onScrollLeftRequest={this.handleScrollLeftRequest}\n />\n ),\n }],\n },\n ]\n\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [{\n key: 'timeline',\n content: renderScrollShim,\n }],\n })\n }\n\n return (\n <ViewRoot viewSpec={context.viewSpec}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={extraClassNames.concat(classNames).join(' ')}>\n <ScrollGrid\n ref={this.scrollGridRef}\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={false}\n colGroups={[\n { cols: slatCols },\n ]}\n sections={sections}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n\n handleSlatCoords = (slatCoords: TimelineCoords | null) => {\n this.setState({ slatCoords })\n }\n\n handleScrollLeftRequest = (scrollLeft: number) => {\n let scrollGrid = this.scrollGridRef.current\n scrollGrid.forceScrollLeft(0, scrollLeft)\n }\n\n handleMaxCushionWidth = (slotCushionMaxWidth) => {\n this.setState({\n slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth), // for less rerendering TODO: DRY\n })\n }\n\n computeFallbackSlotMinWidth(tDateProfile: TimelineDateProfile) { // TODO: duplicate definition\n return Math.max(30, ((this.state.slotCushionMaxWidth || 0) / tDateProfile.slotsPerLabel))\n }\n}\n\nexport function buildSlatCols(tDateProfile: TimelineDateProfile, slotMinWidth?: number) {\n return [{\n span: tDateProfile.slotCnt,\n minWidth: slotMinWidth || 1, // needs to be a non-zero number to trigger horizontal scrollbars!??????\n }]\n}\n","import { createElement, VNode, Fragment } from '@fullcalendar/common'\n\n/*\nRenders the DOM responsible for the subrow expander area,\nas well as the space before it (used to align expanders of similar depths)\n*/\nexport function ExpanderIcon({ depth, hasChildren, isExpanded, onExpanderClick }): VNode {\n let nodes: VNode[] = []\n\n for (let i = 0; i < depth; i += 1) {\n nodes.push(\n <span className=\"fc-icon\" />,\n )\n }\n\n let iconClassNames = ['fc-icon']\n if (hasChildren) {\n if (isExpanded) {\n iconClassNames.push('fc-icon-minus-square')\n } else {\n iconClassNames.push('fc-icon-plus-square')\n }\n }\n\n nodes.push(\n <span\n className={'fc-datagrid-expander' + (hasChildren ? '' : ' fc-datagrid-expander-placeholder')}\n onClick={onExpanderClick}\n >\n <span className={iconClassNames.join(' ')} />\n </span>,\n )\n\n return createElement(Fragment, {}, ...nodes)\n}\n","import { ViewContext, ViewApi } from '@fullcalendar/common'\nimport { Resource, ResourceApi } from '@fullcalendar/resource-common'\n\n// hook props\n// ----------\n\nexport interface HookPropsInput {\n resource: Resource\n fieldValue: any\n context: ViewContext\n}\n\nexport interface HookProps {\n resource: ResourceApi\n fieldValue: any\n view: ViewApi\n}\n\nexport function refineHookProps(raw: HookPropsInput): HookProps {\n return {\n resource: new ResourceApi(raw.context, raw.resource),\n fieldValue: raw.fieldValue,\n view: raw.context.viewApi,\n }\n}\n","import { createElement, BaseComponent, Fragment, ContentHook } from '@fullcalendar/common'\nimport { ColSpec } from '@fullcalendar/resource-common'\nimport { HookProps } from './spreadsheet-cell-util'\n\nexport interface SpreadsheetIndividualCellInnerProps {\n hookProps: HookProps\n colSpec: ColSpec\n}\n\nexport class SpreadsheetIndividualCellInner extends BaseComponent<SpreadsheetIndividualCellInnerProps> { // doesn't need context?\n render() {\n let { props } = this\n\n return (\n <ContentHook hookProps={props.hookProps} content={props.colSpec.cellContent} defaultContent={renderResourceInner}>\n {(innerElRef, innerContent) => (\n <span className=\"fc-datagrid-cell-main\" ref={innerElRef}>\n {innerContent}\n </span>\n )}\n </ContentHook>\n )\n }\n}\n\nfunction renderResourceInner(hookProps) {\n return hookProps.fieldValue || <Fragment> </Fragment>\n}\n","import {\n createElement, BaseComponent, CssDimValue, MountHook,\n buildClassNameNormalizer, memoizeObjArg,\n} from '@fullcalendar/common'\nimport { Resource, ColSpec } from '@fullcalendar/resource-common'\nimport { ExpanderIcon } from './ExpanderIcon'\nimport { refineHookProps, HookProps } from './spreadsheet-cell-util'\nimport { SpreadsheetIndividualCellInner } from './SpreadsheetIndividualCellInner'\n\nexport interface SpreadsheetIndividualCellProps {\n colSpec: ColSpec\n resource: Resource\n fieldValue: any\n depth: number\n hasChildren: boolean\n isExpanded: boolean\n innerHeight: CssDimValue\n}\n\n// worth making a PureComponent? (because of innerHeight)\nexport class SpreadsheetIndividualCell extends BaseComponent<SpreadsheetIndividualCellProps> {\n refineHookProps = memoizeObjArg(refineHookProps)\n normalizeClassNames = buildClassNameNormalizer<HookProps>()\n\n render() {\n let { props, context } = this\n let { colSpec } = props\n\n let hookProps = this.refineHookProps({\n resource: props.resource,\n fieldValue: props.fieldValue,\n context,\n })\n let customClassNames = this.normalizeClassNames(colSpec.cellClassNames, hookProps)\n\n return (\n <MountHook hookProps={hookProps} didMount={colSpec.cellDidMount} willUnmount={colSpec.cellWillUnmount}>\n {(rootElRef) => (\n <td\n ref={rootElRef}\n role=\"gridcell\"\n data-resource-id={props.resource.id}\n className={[\n 'fc-datagrid-cell',\n 'fc-resource',\n ].concat(customClassNames).join(' ')}\n >\n <div className=\"fc-datagrid-cell-frame\" style={{ height: props.innerHeight }}>\n <div className=\"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\">\n {colSpec.isMain && (\n <ExpanderIcon\n depth={props.depth}\n hasChildren={props.hasChildren}\n isExpanded={props.isExpanded}\n onExpanderClick={this.onExpanderClick}\n />\n )}\n <SpreadsheetIndividualCellInner hookProps={hookProps} colSpec={colSpec} />\n </div>\n </div>\n </td>\n )}\n </MountHook>\n )\n }\n\n onExpanderClick = (ev: UIEvent) => {\n let { props } = this\n\n if (props.hasChildren) {\n this.context.dispatch({\n type: 'SET_RESOURCE_ENTITY_EXPANDED',\n id: props.resource.id,\n isExpanded: !props.isExpanded,\n })\n }\n }\n}\n","import { createElement, BaseComponent, Fragment, RenderHook } from '@fullcalendar/common'\nimport { ColSpec, ColCellContentArg } from '@fullcalendar/resource-common'\n\nexport interface SpreadsheetGroupCellProps {\n colSpec: ColSpec\n fieldValue: any\n rowSpan: number\n}\n\n// for VERTICAL cell grouping, in spreadsheet area\nexport class SpreadsheetGroupCell extends BaseComponent<SpreadsheetGroupCellProps> {\n render() {\n let { props, context } = this\n let { colSpec } = props\n let hookProps: ColCellContentArg = {\n groupValue: props.fieldValue,\n view: context.viewApi,\n }\n\n // a grouped cell. no data that is specific to this specific resource\n // `colSpec` is for the group. a GroupSpec :(\n return (\n <RenderHook<ColCellContentArg>\n hookProps={hookProps}\n classNames={colSpec.cellClassNames}\n content={colSpec.cellContent}\n defaultContent={renderGroupInner}\n didMount={colSpec.cellDidMount}\n willUnmount={colSpec.cellWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n // TODO: make data-attr with group value?\n <td\n ref={rootElRef}\n role=\"gridcell\"\n rowSpan={props.rowSpan}\n className={['fc-datagrid-cell', 'fc-resource-group'].concat(classNames).join(' ')}\n >\n <div className=\"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid\">\n {/* ^needed for stickiness in some browsers */}\n <div className=\"fc-datagrid-cell-cushion fc-sticky\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n </td>\n )}\n </RenderHook>\n )\n }\n}\n\nfunction renderGroupInner(hookProps) {\n return hookProps.groupValue || <Fragment> </Fragment>\n}\n","import { createElement, BaseComponent, ViewContext, isArraysEqual, CssDimValue } from '@fullcalendar/common'\nimport { Resource, buildResourceFields, ColSpec, getPublicId } from '@fullcalendar/resource-common'\nimport { SpreadsheetIndividualCell } from './SpreadsheetIndividualCell'\nimport { SpreadsheetGroupCell } from './SpreadsheetGroupCell'\n\nexport interface SpreadsheetRowProps {\n colSpecs: ColSpec[]\n rowSpans: number[]\n depth: number\n isExpanded: boolean\n hasChildren: boolean\n resource: Resource\n innerHeight: CssDimValue // bad name! inner vs innerinner\n}\n\nexport class SpreadsheetRow extends BaseComponent<SpreadsheetRowProps, ViewContext> {\n render() {\n let { props } = this\n let { resource, rowSpans, depth } = props\n let resourceFields = buildResourceFields(resource) // slightly inefficient. already done up the call stack\n\n return (\n <tr role=\"row\">\n {props.colSpecs.map((colSpec, i) => {\n let rowSpan = rowSpans[i]\n\n if (rowSpan === 0) { // not responsible for group-based rows. VRowGroup is\n return null\n }\n\n if (rowSpan == null) {\n rowSpan = 1\n }\n\n let fieldValue = colSpec.field ? resourceFields[colSpec.field] :\n (resource.title || getPublicId(resource.id))\n\n if (rowSpan > 1) {\n return (\n <SpreadsheetGroupCell\n key={i} // eslint-disable-line react/no-array-index-key\n colSpec={colSpec}\n fieldValue={fieldValue}\n rowSpan={rowSpan}\n />\n )\n }\n\n return (\n <SpreadsheetIndividualCell\n key={i} // eslint-disable-line react/no-array-index-key\n colSpec={colSpec}\n resource={resource}\n fieldValue={fieldValue}\n depth={depth}\n hasChildren={props.hasChildren}\n isExpanded={props.isExpanded}\n innerHeight={props.innerHeight}\n />\n )\n })}\n </tr>\n )\n }\n}\n\nSpreadsheetRow.addPropsEquality({\n rowSpans: isArraysEqual,\n})\n","import { createElement, Fragment, BaseComponent, ViewContext, CssDimValue, createRef, RenderHook, RefObject } from '@fullcalendar/common'\nimport { Group, isGroupsEqual, ColCellContentArg } from '@fullcalendar/resource-common'\nimport { ExpanderIcon } from './ExpanderIcon'\n\nexport interface SpreadsheetGroupRowProps {\n spreadsheetColCnt: number\n id: string // 'field:value'\n isExpanded: boolean\n group: Group\n innerHeight: CssDimValue\n}\n\n// for HORIZONTAL cell grouping, in spreadsheet area\nexport class SpreadsheetGroupRow extends BaseComponent<SpreadsheetGroupRowProps, ViewContext> {\n innerInnerRef: RefObject<HTMLDivElement> = createRef<HTMLDivElement>()\n\n render() {\n let { props, context } = this\n let hookProps: ColCellContentArg = { groupValue: props.group.value, view: context.viewApi }\n let spec = props.group.spec\n\n return (\n <tr role=\"row\">\n <RenderHook<ColCellContentArg>\n hookProps={hookProps}\n classNames={spec.labelClassNames}\n content={spec.labelContent}\n defaultContent={renderCellInner}\n didMount={spec.labelDidMount}\n willUnmount={spec.labelWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n // ARIA TODO: not really a columnheader\n // extremely tedious to make this aria-compliant,\n // to assign multiple headers to each cell\n // https://www.w3.org/WAI/tutorials/tables/multi-level/\n role=\"columnheader\"\n scope=\"colgroup\"\n colSpan={props.spreadsheetColCnt}\n className={\n [\n 'fc-datagrid-cell',\n 'fc-resource-group',\n context.theme.getClass('tableCellShaded'),\n ].concat(classNames).join(' ')\n }\n >\n <div className=\"fc-datagrid-cell-frame\" style={{ height: props.innerHeight }}>\n <div className=\"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" ref={this.innerInnerRef}>\n <ExpanderIcon\n depth={0}\n hasChildren\n isExpanded={props.isExpanded}\n onExpanderClick={this.onExpanderClick}\n />\n <span className=\"fc-datagrid-cell-main\" ref={innerElRef}>\n {innerContent}\n </span>\n </div>\n </div>\n </th>\n )}\n </RenderHook>\n </tr>\n )\n }\n\n onExpanderClick = () => {\n let { props } = this\n\n this.context.dispatch({\n type: 'SET_RESOURCE_ENTITY_EXPANDED',\n id: props.id,\n isExpanded: !props.isExpanded,\n })\n }\n}\n\nSpreadsheetGroupRow.addPropsEquality({\n group: isGroupsEqual,\n})\n\nfunction renderCellInner(hookProps) {\n return hookProps.groupValue || <Fragment> </Fragment>\n}\n","import {\n VNode, createElement, Fragment,\n BaseComponent, ElementDragging, elementClosest, PointerDragEvent, RefMap, findElements, RenderHook,\n} from '@fullcalendar/common'\nimport { ColSpec, ColHeaderContentArg, ColHeaderRenderHooks } from '@fullcalendar/resource-common'\n\nexport interface SpreadsheetHeaderProps {\n superHeaderRendering: ColHeaderRenderHooks\n colSpecs: ColSpec[]\n rowInnerHeights: number[]\n onColWidthChange?: (colWidths: number[]) => void\n}\n\nconst SPREADSHEET_COL_MIN_WIDTH = 20\n\nexport class SpreadsheetHeader extends BaseComponent<SpreadsheetHeaderProps> {\n private resizerElRefs = new RefMap<HTMLElement>(this._handleColResizerEl.bind(this))\n private colDraggings: { [index: string]: ElementDragging } = {}\n\n render() {\n let { colSpecs, superHeaderRendering, rowInnerHeights } = this.props\n let hookProps: ColHeaderContentArg = { view: this.context.viewApi }\n let rowNodes: VNode[] = []\n\n rowInnerHeights = rowInnerHeights.slice() // copy, because we're gonna pop\n\n if (superHeaderRendering) {\n let rowInnerHeight = rowInnerHeights.shift()\n rowNodes.push(\n <tr key=\"row-super\" role=\"row\">\n <RenderHook\n hookProps={hookProps}\n classNames={superHeaderRendering.headerClassNames}\n content={superHeaderRendering.headerContent}\n didMount={superHeaderRendering.headerDidMount}\n willUnmount={superHeaderRendering.headerWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n role=\"columnheader\"\n scope=\"colgroup\"\n colSpan={colSpecs.length}\n className={[\n 'fc-datagrid-cell',\n 'fc-datagrid-cell-super',\n ].concat(classNames).join(' ')}\n >\n <div className=\"fc-datagrid-cell-frame\" style={{ height: rowInnerHeight }}>\n <div className=\"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" ref={innerElRef}>\n {innerContent}\n </div>\n </div>\n </th>\n )}\n </RenderHook>\n </tr>,\n )\n }\n\n let rowInnerHeight = rowInnerHeights.shift()\n rowNodes.push(\n <tr key=\"row\" role=\"row\">\n {colSpecs.map((colSpec, i) => {\n let isLastCol = i === (colSpecs.length - 1)\n\n // need empty inner div for abs positioning for resizer\n return (\n <RenderHook\n key={i} // eslint-disable-line react/no-array-index-key\n hookProps={hookProps}\n classNames={colSpec.headerClassNames}\n content={colSpec.headerContent}\n didMount={colSpec.headerDidMount}\n willUnmount={colSpec.headerWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <th\n ref={rootElRef}\n role=\"columnheader\"\n className={['fc-datagrid-cell'].concat(classNames).join(' ')}\n >\n <div className=\"fc-datagrid-cell-frame\" style={{ height: rowInnerHeight }}>\n <div className=\"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\">\n {colSpec.isMain && (\n <span className=\"fc-datagrid-expander fc-datagrid-expander-placeholder\">\n <span className=\"fc-icon\" />\n </span>\n )}\n <span className=\"fc-datagrid-cell-main\" ref={innerElRef}>\n {innerContent}\n </span>\n </div>\n {!isLastCol &&\n <div className=\"fc-datagrid-cell-resizer\" ref={this.resizerElRefs.createRef(i)} />}\n </div>\n </th>\n )}\n </RenderHook>\n )\n })}\n </tr>,\n )\n\n return (<Fragment>{rowNodes}</Fragment>)\n }\n\n _handleColResizerEl(resizerEl: HTMLElement | null, index: string) {\n let { colDraggings } = this\n\n if (!resizerEl) {\n let dragging = colDraggings[index]\n\n if (dragging) {\n dragging.destroy()\n delete colDraggings[index]\n }\n } else {\n let dragging = this.initColResizing(resizerEl, parseInt(index, 10))\n\n if (dragging) {\n colDraggings[index] = dragging\n }\n }\n }\n\n initColResizing(resizerEl: HTMLElement, index: number) {\n let { pluginHooks, isRtl } = this.context\n let { onColWidthChange } = this.props\n let ElementDraggingImpl = pluginHooks.elementDraggingImpl\n\n if (ElementDraggingImpl) {\n let dragging = new ElementDraggingImpl(resizerEl)\n let startWidth: number // of just the single column\n let currentWidths: number[] // of all columns\n\n dragging.emitter.on('dragstart', () => {\n let allCells = findElements(elementClosest(resizerEl, 'tr'), 'th')\n\n currentWidths = allCells.map((cellEl) => (\n cellEl.getBoundingClientRect().width\n ))\n startWidth = currentWidths[index]\n })\n\n dragging.emitter.on('dragmove', (pev: PointerDragEvent) => {\n currentWidths[index] = Math.max(startWidth + pev.deltaX * (isRtl ? -1 : 1), SPREADSHEET_COL_MIN_WIDTH)\n\n if (onColWidthChange) {\n onColWidthChange(currentWidths.slice()) // send a copy since currentWidths continues to be mutated\n }\n })\n\n dragging.setAutoScrollEnabled(false) // because gets weird with auto-scrolling time area\n\n return dragging\n }\n\n return null\n }\n}\n","import { createElement, BaseComponent, ContentHook } from '@fullcalendar/common'\nimport { Resource, ResourceApi, ResourceLaneContentArg } from '@fullcalendar/resource-common'\n\nexport interface ResourceTimelineLaneMiscProps {\n resource: Resource\n}\n\nexport class ResourceTimelineLaneMisc extends BaseComponent<ResourceTimelineLaneMiscProps> {\n render() {\n let { props, context } = this\n let hookProps: ResourceLaneContentArg = { resource: new ResourceApi(context, props.resource) } // just easier to make directly\n\n return (\n <ContentHook hookProps={hookProps} content={context.options.resourceLaneContent}>\n {(innerElRef, innerContent) => (\n innerContent && // TODO: test how this would interfere with height\n <div className=\"fc-timeline-lane-misc\" ref={innerElRef}>{innerContent}</div>\n )}\n </ContentHook>\n )\n }\n}\n","import {\n createElement, Ref, BaseComponent, CssDimValue,\n buildClassNameNormalizer, MountHook, elementClosest, memoizeObjArg,\n} from '@fullcalendar/common'\nimport { Resource, ResourceApi, ResourceLaneContentArg, ResourceLaneHookPropsInput } from '@fullcalendar/resource-common'\nimport { TimelineLane, TimelineLaneCoreProps } from '@fullcalendar/timeline'\nimport { ResourceTimelineLaneMisc } from './ResourceTimelineLaneMisc'\n\nexport interface ResourceTimelineLaneProps extends TimelineLaneCoreProps {\n elRef: Ref<HTMLTableRowElement>\n resource: Resource\n innerHeight: CssDimValue\n onHeightChange?: (rowEl: HTMLTableRowElement, isStable: boolean) => void\n}\n\nexport class ResourceTimelineLane extends BaseComponent<ResourceTimelineLaneProps> {\n refineHookProps = memoizeObjArg(refineHookProps)\n normalizeClassNames = buildClassNameNormalizer<ResourceLaneContentArg>()\n\n render() {\n let { props, context } = this\n let { options } = context\n let hookProps = this.refineHookProps({ resource: props.resource, context })\n let customClassNames = this.normalizeClassNames(options.resourceLaneClassNames, hookProps)\n\n return (\n <tr ref={props.elRef}>\n <MountHook hookProps={hookProps} didMount={options.resourceLaneDidMount} willUnmount={options.resourceLaneWillUnmount}>\n {(rootElRef) => (\n <td\n ref={rootElRef}\n className={['fc-timeline-lane', 'fc-resource'].concat(customClassNames).join(' ')}\n data-resource-id={props.resource.id}\n >\n <div className=\"fc-timeline-lane-frame\" style={{ height: props.innerHeight }}>\n <ResourceTimelineLaneMisc resource={props.resource} />\n <TimelineLane\n dateProfile={props.dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n nextDayThreshold={props.nextDayThreshold}\n businessHours={props.businessHours}\n eventStore={props.eventStore}\n eventUiBases={props.eventUiBases}\n dateSelection={props.dateSelection}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n timelineCoords={props.timelineCoords}\n onHeightChange={this.handleHeightChange}\n resourceId={props.resource.id}\n />\n </div>\n </td>\n )}\n </MountHook>\n </tr>\n ) // important NOT to do liquid-height. dont want to shrink height smaller than content\n }\n\n handleHeightChange = (innerEl: HTMLElement, isStable: boolean) => {\n if (this.props.onHeightChange) {\n this.props.onHeightChange(\n // would want to use own <tr> ref, but not guaranteed to be ready when this fires\n elementClosest(innerEl, 'tr') as HTMLTableRowElement,\n isStable,\n )\n }\n }\n}\n\nfunction refineHookProps(raw: ResourceLaneHookPropsInput): ResourceLaneContentArg {\n return {\n resource: new ResourceApi(raw.context, raw.resource),\n }\n}\n","import { createElement, Ref, BaseComponent, CssDimValue, RenderHook } from '@fullcalendar/common'\nimport { GroupLaneRenderHooks, ColCellContentArg } from '@fullcalendar/resource-common'\n\nexport interface DividerRowProps {\n elRef?: Ref<HTMLTableRowElement>\n innerHeight: CssDimValue\n groupValue: any\n renderingHooks: GroupLaneRenderHooks\n}\n\n/*\nparallels the SpreadsheetGroupRow\n*/\nexport class DividerRow extends BaseComponent<DividerRowProps> {\n render() {\n let { props } = this\n let { renderingHooks } = this.props\n let hookProps: ColCellContentArg = { groupValue: props.groupValue, view: this.context.viewApi }\n\n return (\n <tr ref={props.elRef}>\n <RenderHook\n hookProps={hookProps}\n classNames={renderingHooks.laneClassNames}\n content={renderingHooks.laneContent}\n didMount={renderingHooks.laneDidMount}\n willUnmount={renderingHooks.laneWillUnmount}\n >\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <td\n ref={rootElRef}\n className={\n [\n 'fc-timeline-lane',\n 'fc-resource-group',\n this.context.theme.getClass('tableCellShaded'),\n ].concat(classNames).join(' ')\n }\n >\n <div style={{ height: props.innerHeight }} ref={innerElRef}>\n {innerContent}\n </div>\n </td>\n )}\n </RenderHook>\n </tr>\n )\n }\n}\n","import {\n createElement, SplittableProps, EventStore, BaseComponent, RefMap,\n DateMarker, DateRange, DateProfile,\n} from '@fullcalendar/common'\nimport { GroupNode, ResourceNode } from '@fullcalendar/resource-common'\nimport { TimelineDateProfile, TimelineCoords } from '@fullcalendar/timeline'\nimport { ResourceTimelineLane } from './ResourceTimelineLane'\nimport { DividerRow } from './DividerRow'\n\nexport interface ResourceTimelineLanesBodyProps extends ResourceTimelineLanesContentProps {\n rowElRefs: RefMap<HTMLElement> // indexed by NUMERICAL INDEX, not node.id\n}\n\nexport interface ResourceTimelineLanesContentProps {\n rowNodes: (GroupNode | ResourceNode)[]\n splitProps: { [resourceId: string]: SplittableProps }\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n nowDate: DateMarker\n todayRange: DateRange\n fallbackBusinessHours: EventStore | null\n innerHeights: number[]\n slatCoords: TimelineCoords | null\n onRowHeightChange?: (rowEl: HTMLTableRowElement, isStable: boolean) => void\n}\n\nexport class ResourceTimelineLanesBody extends BaseComponent<ResourceTimelineLanesBodyProps> { // TODO: this technique more\n render() {\n let { props, context } = this\n let { rowElRefs, innerHeights } = props\n\n return (\n <tbody>\n {props.rowNodes.map((node, index) => {\n if ((node as GroupNode).group) {\n return (\n <DividerRow\n key={node.id}\n elRef={rowElRefs.createRef(node.id)}\n groupValue={(node as GroupNode).group.value}\n renderingHooks={(node as GroupNode).group.spec}\n innerHeight={innerHeights[index] || ''}\n />\n )\n }\n\n if ((node as ResourceNode).resource) {\n let resource = (node as ResourceNode).resource\n\n return (\n <ResourceTimelineLane\n key={node.id}\n elRef={rowElRefs.createRef(node.id)}\n {...props.splitProps[resource.id]}\n resource={resource}\n dateProfile={props.dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n nextDayThreshold={context.options.nextDayThreshold}\n businessHours={resource.businessHours || props.fallbackBusinessHours}\n innerHeight={innerHeights[index] || ''}\n timelineCoords={props.slatCoords}\n onHeightChange={props.onRowHeightChange}\n />\n )\n }\n\n return null\n })}\n </tbody>\n )\n }\n}\n","import { createElement, PositionCache, createRef, BaseComponent, CssDimValue, RefMap } from '@fullcalendar/common'\nimport { GroupNode, ResourceNode } from '@fullcalendar/resource-common'\nimport { ResourceTimelineLanesBody, ResourceTimelineLanesContentProps } from './ResourceTimelineLanesBody'\n\nexport interface ResourceTimelineLanesProps extends ResourceTimelineLanesContentProps {\n minHeight: CssDimValue\n clientWidth: number | null\n tableMinWidth: CssDimValue\n onRowCoords?: (rowCoords: PositionCache) => void\n}\n\nexport class ResourceTimelineLanes extends BaseComponent<ResourceTimelineLanesProps> {\n private rootElRef = createRef<HTMLTableElement>()\n private rowElRefs = new RefMap<HTMLElement>()\n\n render() {\n let { props, context } = this\n\n return (\n <table\n ref={this.rootElRef}\n aria-hidden\n className={'fc-scrollgrid-sync-table ' + context.theme.getClass('table')}\n style={{\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n height: props.minHeight,\n }}\n >\n <ResourceTimelineLanesBody\n rowElRefs={this.rowElRefs}\n rowNodes={props.rowNodes}\n dateProfile={props.dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={props.nowDate}\n todayRange={props.todayRange}\n splitProps={props.splitProps}\n fallbackBusinessHours={props.fallbackBusinessHours}\n slatCoords={props.slatCoords}\n innerHeights={props.innerHeights}\n onRowHeightChange={props.onRowHeightChange}\n />\n </table>\n )\n }\n\n componentDidMount() {\n this.updateCoords()\n }\n\n componentDidUpdate() {\n this.updateCoords()\n }\n\n componentWillUnmount() {\n if (this.props.onRowCoords) {\n this.props.onRowCoords(null)\n }\n }\n\n updateCoords() {\n let { props } = this\n\n if (props.onRowCoords && props.clientWidth !== null) { // a populated clientWidth means sizing has stabilized\n this.props.onRowCoords(\n new PositionCache(\n this.rootElRef.current,\n collectRowEls(this.rowElRefs.currentMap, props.rowNodes),\n false,\n true, // isVertical\n ),\n )\n }\n }\n}\n\nfunction collectRowEls(elMap: { [key: string]: HTMLElement }, rowNodes: (GroupNode | ResourceNode)[]) {\n return rowNodes.map((rowNode) => elMap[rowNode.id])\n}\n","import {\n createElement, PositionCache, Duration, EventStore, DateSpan, EventUiHash, EventInteractionState,\n DateComponent, Hit, createRef, CssDimValue, VNode, memoize, NowTimer, greatestDurationDenominator,\n DateMarker, DateRange, NowIndicatorRoot, DateProfile, Fragment,\n} from '@fullcalendar/common'\nimport { ResourceHash, GroupNode, ResourceNode, ResourceSplitter } from '@fullcalendar/resource-common'\nimport {\n TimelineDateProfile, TimelineCoords, TimelineSlats,\n TimelineLaneSlicer, TimelineLaneBg, TimelineLaneSeg,\n coordToCss,\n} from '@fullcalendar/timeline'\nimport { ResourceTimelineLanes } from './ResourceTimelineLanes'\n\nexport interface ResourceTimelineGridProps {\n dateProfile: DateProfile\n tDateProfile: TimelineDateProfile\n rowNodes: (GroupNode | ResourceNode)[]\n businessHours: EventStore | null\n dateSelection: DateSpan | null\n eventStore: EventStore\n eventUiBases: EventUiHash\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n resourceStore: ResourceHash\n nextDayThreshold: Duration\n clientWidth: number | null\n clientHeight: number | null\n tableMinWidth: CssDimValue\n tableColGroupNode: VNode\n expandRows: boolean\n rowInnerHeights: number[]\n onSlatCoords?: (slatCoords: TimelineCoords) => void\n onRowCoords?: (rowCoords: PositionCache) => void\n onScrollLeftRequest?: (scrollLeft: number) => void\n onRowHeightChange?: (rowEl: HTMLTableRowElement, isStable: boolean) => void\n}\n\ninterface ResourceTimelineGridState {\n slatCoords: TimelineCoords | null\n}\n\nexport class ResourceTimelineGrid extends DateComponent<ResourceTimelineGridProps, ResourceTimelineGridState> {\n private computeHasResourceBusinessHours = memoize(computeHasResourceBusinessHours)\n private resourceSplitter = new ResourceSplitter() // doesn't let it do businessHours tho\n private bgSlicer = new TimelineLaneSlicer()\n private slatsRef = createRef<TimelineSlats>() // needed for Hit creation :(\n private rowCoords: PositionCache // for queryHit\n\n state: ResourceTimelineGridState = {\n slatCoords: null,\n }\n\n render() {\n let { props, state, context } = this\n let { dateProfile, tDateProfile } = props\n let timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit\n let hasResourceBusinessHours = this.computeHasResourceBusinessHours(props.rowNodes)\n\n let splitProps = this.resourceSplitter.splitProps(props)\n let bgLaneProps = splitProps['']\n let bgSlicedProps = this.bgSlicer.sliceProps(\n bgLaneProps,\n dateProfile,\n tDateProfile.isTimeScale ? null : props.nextDayThreshold,\n context, // wish we didn't need to pass in the rest of these args...\n dateProfile,\n context.dateProfileGenerator,\n tDateProfile,\n context.dateEnv,\n )\n\n // WORKAROUND: make ignore slatCoords when out of sync with dateProfile\n let slatCoords = state.slatCoords && state.slatCoords.dateProfile === props.dateProfile ? state.slatCoords : null\n\n return (\n <div\n ref={this.handleEl}\n className={[\n 'fc-timeline-body',\n props.expandRows ? 'fc-timeline-body-expandrows' : '',\n ].join(' ')}\n style={{ minWidth: props.tableMinWidth }}\n >\n <NowTimer unit={timerUnit}>\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <Fragment>\n <TimelineSlats\n ref={this.slatsRef}\n dateProfile={dateProfile}\n tDateProfile={tDateProfile}\n nowDate={nowDate}\n todayRange={todayRange}\n clientWidth={props.clientWidth}\n tableColGroupNode={props.tableColGroupNode}\n tableMinWidth={props.tableMinWidth}\n onCoords={this.handleSlatCoords}\n onScrollLeftRequest={props.onScrollLeftRequest}\n />\n <TimelineLaneBg\n businessHourSegs={hasResourceBusinessHours ? null : bgSlicedProps.businessHourSegs}\n bgEventSegs={bgSlicedProps.bgEventSegs}\n timelineCoords={slatCoords}\n // empty array will result in unnecessary rerenders?\n eventResizeSegs={(bgSlicedProps.eventResize ? bgSlicedProps.eventResize.segs as TimelineLaneSeg[] : [])}\n dateSelectionSegs={bgSlicedProps.dateSelectionSegs}\n nowDate={nowDate}\n todayRange={todayRange}\n />\n <ResourceTimelineLanes\n rowNodes={props.rowNodes}\n dateProfile={dateProfile}\n tDateProfile={props.tDateProfile}\n nowDate={nowDate}\n todayRange={todayRange}\n splitProps={splitProps}\n fallbackBusinessHours={hasResourceBusinessHours ? props.businessHours : null}\n clientWidth={props.clientWidth}\n minHeight={props.expandRows ? props.clientHeight : ''}\n tableMinWidth={props.tableMinWidth}\n innerHeights={props.rowInnerHeights}\n slatCoords={slatCoords}\n onRowCoords={this.handleRowCoords}\n onRowHeightChange={props.onRowHeightChange}\n />\n {(context.options.nowIndicator && slatCoords && slatCoords.isDateInRange(nowDate)) && (\n <div className=\"fc-timeline-now-indicator-container\">\n <NowIndicatorRoot isAxis={false} date={nowDate}>\n {(rootElRef, classNames, innerElRef, innerContent) => (\n <div\n ref={rootElRef}\n className={['fc-timeline-now-indicator-line'].concat(classNames).join(' ')}\n style={coordToCss(slatCoords.dateToCoord(nowDate), context.isRtl)}\n >\n {innerContent}\n </div>\n )}\n </NowIndicatorRoot>\n </div>\n )}\n </Fragment>\n )}\n </NowTimer>\n </div>\n )\n }\n\n handleEl = (el: HTMLElement | null) => {\n if (el) {\n this.context.registerInteractiveComponent(this, { el })\n } else {\n this.context.unregisterInteractiveComponent(this)\n }\n }\n\n handleSlatCoords = (slatCoords: TimelineCoords | null) => {\n this.setState({ slatCoords })\n\n if (this.props.onSlatCoords) {\n this.props.onSlatCoords(slatCoords)\n }\n }\n\n handleRowCoords = (rowCoords: PositionCache | null) => {\n this.rowCoords = rowCoords\n\n if (this.props.onRowCoords) {\n this.props.onRowCoords(rowCoords)\n }\n }\n\n // Hit System\n // ------------------------------------------------------------------------------------------\n\n queryHit(positionLeft: number, positionTop: number): Hit {\n let rowCoords = this.rowCoords\n let rowIndex = rowCoords.topToIndex(positionTop)\n\n if (rowIndex != null) {\n let resource = (this.props.rowNodes[rowIndex] as ResourceNode).resource\n\n if (resource) { // not a group\n let slatHit = this.slatsRef.current.positionToHit(positionLeft)\n\n if (slatHit) {\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: {\n range: slatHit.dateSpan.range,\n allDay: slatHit.dateSpan.allDay,\n resourceId: resource.id,\n },\n rect: {\n left: slatHit.left,\n right: slatHit.right,\n top: rowCoords.tops[rowIndex],\n bottom: rowCoords.bottoms[rowIndex],\n },\n dayEl: slatHit.dayEl,\n layer: 0,\n }\n }\n }\n }\n\n return null\n }\n}\n\nfunction computeHasResourceBusinessHours(rowNodes: (GroupNode | ResourceNode)[]) {\n for (let node of rowNodes) {\n let resource = (node as ResourceNode).resource\n\n if (resource && resource.businessHours) {\n return true\n }\n }\n\n return false\n}\n","import {\n createElement, createRef, ElementDragging, PointerDragEvent, BaseComponent, ColProps,\n ChunkConfigRowContent, ChunkConfigContent, ScrollGridSectionConfig,\n renderScrollShim,\n getStickyHeaderDates,\n getStickyFooterScrollbar,\n config,\n} from '@fullcalendar/common'\nimport { ScrollGrid } from '@fullcalendar/scrollgrid'\n\nconst MIN_RESOURCE_AREA_WIDTH = 30 // definitely bigger than scrollbars\n\nexport interface ResourceTimelineViewLayoutProps {\n spreadsheetCols: ColProps[]\n spreadsheetHeaderRows: ChunkConfigRowContent\n spreadsheetBodyRows: ChunkConfigRowContent\n timeCols: ColProps[]\n timeHeaderContent: ChunkConfigContent\n timeBodyContent: ChunkConfigContent\n forPrint: boolean\n isHeightAuto: boolean\n}\n\ninterface ResourceTimelineViewLayoutState {\n resourceAreaWidthOverride: number | null\n}\n\n// RENAME?\nexport class ResourceTimelineViewLayout extends BaseComponent<ResourceTimelineViewLayoutProps, ResourceTimelineViewLayoutState> {\n private scrollGridRef = createRef<ScrollGrid>()\n private timeBodyScrollerElRef = createRef<HTMLDivElement>()\n private spreadsheetHeaderChunkElRef = createRef<HTMLTableCellElement>()\n private spreadsheetResizerDragging: ElementDragging\n private rootElRef = createRef<HTMLElement>()\n private ensureScrollGridResizeId: number = 0\n\n state = {\n resourceAreaWidthOverride: null,\n }\n\n render() {\n let { props, state, context } = this\n let { options } = context\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(options)\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(options)\n\n let sections: ScrollGridSectionConfig[] = [\n {\n type: 'header',\n key: 'header',\n syncRowHeights: true,\n isSticky: stickyHeaderDates,\n chunks: [\n {\n key: 'datagrid',\n elRef: this.spreadsheetHeaderChunkElRef,\n // TODO: allow the content to specify this. have general-purpose 'content' with obj with keys\n tableClassName: 'fc-datagrid-header',\n rowContent: props.spreadsheetHeaderRows,\n },\n {\n key: 'divider',\n outerContent: (\n <td role=\"presentation\" className={'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded')} />\n ),\n },\n {\n key: 'timeline',\n content: props.timeHeaderContent,\n },\n ],\n },\n {\n type: 'body',\n key: 'body',\n syncRowHeights: true,\n liquid: true,\n expandRows: Boolean(options.expandRows),\n chunks: [\n {\n key: 'datagrid',\n tableClassName: 'fc-datagrid-body',\n rowContent: props.spreadsheetBodyRows,\n },\n {\n key: 'divider',\n outerContent: (\n <td role=\"presentation\" className={'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded')} />\n ),\n },\n {\n key: 'timeline',\n scrollerElRef: this.timeBodyScrollerElRef,\n content: props.timeBodyContent,\n },\n ],\n },\n ]\n\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [\n {\n key: 'datagrid',\n content: renderScrollShim,\n },\n {\n key: 'divider',\n outerContent: (\n <td role=\"presentation\" className={'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded')} />\n ),\n },\n {\n key: 'timeline',\n content: renderScrollShim,\n },\n ],\n })\n }\n\n let resourceAreaWidth = state.resourceAreaWidthOverride != null\n ? state.resourceAreaWidthOverride\n : options.resourceAreaWidth\n\n return (\n <ScrollGrid\n ref={this.scrollGridRef}\n elRef={this.rootElRef}\n liquid={!props.isHeightAuto && !props.forPrint}\n collapsibleWidth={false}\n colGroups={[\n { cols: props.spreadsheetCols, width: resourceAreaWidth },\n { cols: [] }, // for the divider\n { cols: props.timeCols },\n ]}\n sections={sections}\n />\n )\n }\n\n forceTimeScroll(left: number) {\n let scrollGrid = this.scrollGridRef.current\n scrollGrid.forceScrollLeft(2, left) // 2 = the time area\n }\n\n forceResourceScroll(top: number) {\n let scrollGrid = this.scrollGridRef.current\n scrollGrid.forceScrollTop(1, top) // 1 = the body\n }\n\n getResourceScroll(): number {\n let timeBodyScrollerEl = this.timeBodyScrollerElRef.current\n return timeBodyScrollerEl.scrollTop\n }\n\n // Resource Area Resizing\n // ------------------------------------------------------------------------------------------\n // NOTE: a callback Ref for the resizer was firing multiple times with same elements (Preact)\n // that's why we use spreadsheetResizerElRef instead\n\n componentDidMount() {\n this.initSpreadsheetResizing()\n }\n\n componentWillUnmount() {\n this.destroySpreadsheetResizing()\n }\n\n initSpreadsheetResizing() {\n let { isRtl, pluginHooks } = this.context\n let ElementDraggingImpl = pluginHooks.elementDraggingImpl\n let spreadsheetHeadEl = this.spreadsheetHeaderChunkElRef.current\n\n if (ElementDraggingImpl) {\n let rootEl = this.rootElRef.current\n let dragging = this.spreadsheetResizerDragging = new ElementDraggingImpl(rootEl, '.fc-resource-timeline-divider')\n let dragStartWidth\n let viewWidth\n\n dragging.emitter.on('dragstart', () => {\n dragStartWidth = spreadsheetHeadEl.getBoundingClientRect().width\n viewWidth = rootEl.getBoundingClientRect().width\n })\n\n dragging.emitter.on('dragmove', (pev: PointerDragEvent) => {\n let newWidth = dragStartWidth + pev.deltaX * (isRtl ? -1 : 1)\n newWidth = Math.max(newWidth, MIN_RESOURCE_AREA_WIDTH)\n newWidth = Math.min(newWidth, viewWidth - MIN_RESOURCE_AREA_WIDTH)\n\n // scrollgrid will ignore resize requests if there are too many :|\n this.setState({\n resourceAreaWidthOverride: newWidth,\n }, this.ensureScrollGridResize)\n })\n\n dragging.setAutoScrollEnabled(false) // because gets weird with auto-scrolling time area\n }\n }\n\n destroySpreadsheetResizing() {\n if (this.spreadsheetResizerDragging) {\n this.spreadsheetResizerDragging.destroy()\n }\n }\n\n /*\n ghetto debounce. don't race with ScrollGrid's resizing delay. solves #6140\n */\n ensureScrollGridResize = () => {\n if (this.ensureScrollGridResizeId) {\n clearTimeout(this.ensureScrollGridResizeId)\n }\n this.ensureScrollGridResizeId = setTimeout(() => {\n this.scrollGridRef.current.handleSizing(false)\n }, config.SCROLLGRID_RESIZE_INTERVAL + 1)\n }\n}\n","import {\n createElement, createRef, ViewContext, memoize,\n Fragment, CssDimValue, ChunkContentCallbackArgs, isArraysEqual, PositionCache,\n ScrollRequest, ScrollResponder, ViewRoot, BaseComponent, ViewOptionsRefined,\n} from '@fullcalendar/common'\nimport {\n buildTimelineDateProfile, TimelineHeader,\n buildSlatCols,\n TimelineCoords,\n TimelineDateProfile,\n} from '@fullcalendar/timeline'\nimport {\n GroupNode, ResourceNode, ResourceViewProps, buildRowNodes,\n ColSpec, GroupSpec, DEFAULT_RESOURCE_ORDER,\n} from '@fullcalendar/resource-common'\nimport { __assign } from 'tslib'\nimport { SpreadsheetRow } from './SpreadsheetRow'\nimport { SpreadsheetGroupRow } from './SpreadsheetGroupRow'\nimport { SpreadsheetHeader } from './SpreadsheetHeader'\nimport { ResourceTimelineGrid } from './ResourceTimelineGrid'\nimport { ResourceTimelineViewLayout } from './ResourceTimelineViewLayout'\n\ninterface ResourceTimelineViewState {\n resourceAreaWidth: CssDimValue\n spreadsheetColWidths: number[]\n slatCoords?: TimelineCoords\n slotCushionMaxWidth?: number\n}\n\ninterface ResourceTimelineViewSnapshot {\n resourceScroll?: ResourceScrollState\n}\n\ninterface ResourceScrollState {\n rowId: string\n fromBottom: number\n}\n\nexport class ResourceTimelineView extends BaseComponent<ResourceViewProps, ResourceTimelineViewState> {\n private processColOptions = memoize(processColOptions)\n private buildTimelineDateProfile = memoize(buildTimelineDateProfile)\n private hasNesting = memoize(hasNesting)\n private buildRowNodes = memoize(buildRowNodes)\n private layoutRef = createRef<ResourceTimelineViewLayout>()\n private rowNodes: (GroupNode | ResourceNode)[] = []\n private renderedRowNodes: (GroupNode | ResourceNode)[] = []\n private buildRowIndex = memoize(buildRowIndex)\n private rowCoords: PositionCache\n private scrollResponder: ScrollResponder\n\n constructor(props: ResourceViewProps, context: ViewContext) {\n super(props, context)\n\n this.state = {\n resourceAreaWidth: context.options.resourceAreaWidth,\n spreadsheetColWidths: [],\n }\n }\n\n render() {\n let { props, state, context } = this\n let { options, viewSpec } = context\n let { superHeaderRendering, groupSpecs, orderSpecs, isVGrouping, colSpecs } = this.processColOptions(context.options)\n\n let tDateProfile = this.buildTimelineDateProfile(\n props.dateProfile,\n context.dateEnv,\n options,\n context.dateProfileGenerator,\n )\n\n let rowNodes = this.rowNodes = this.buildRowNodes(\n props.resourceStore,\n groupSpecs,\n orderSpecs,\n isVGrouping,\n props.resourceEntityExpansions,\n options.resourcesInitiallyExpanded,\n )\n\n let extraClassNames = [\n 'fc-resource-timeline',\n this.hasNesting(rowNodes) ? '' : 'fc-resource-timeline-flat', // flat means there's no nesting\n 'fc-timeline',\n options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : 'fc-timeline-overlap-enabled',\n ]\n\n let { slotMinWidth } = options\n let slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile))\n\n return (\n <ViewRoot viewSpec={viewSpec}>\n {(rootElRef, classNames) => (\n <div ref={rootElRef} className={extraClassNames.concat(classNames).join(' ')}>\n <ResourceTimelineViewLayout\n ref={this.layoutRef}\n forPrint={props.forPrint}\n isHeightAuto={props.isHeightAuto}\n spreadsheetCols={\n buildSpreadsheetCols(colSpecs, state.spreadsheetColWidths, '')\n }\n spreadsheetHeaderRows={(contentArg: ChunkContentCallbackArgs) => (\n <SpreadsheetHeader // TODO: rename to SpreadsheetHeaderRows\n superHeaderRendering={superHeaderRendering}\n colSpecs={colSpecs}\n onColWidthChange={this.handleColWidthChange}\n rowInnerHeights={contentArg.rowSyncHeights}\n />\n )}\n spreadsheetBodyRows={(contentArg: ChunkContentCallbackArgs) => (\n <Fragment>\n {this.renderSpreadsheetRows(rowNodes, colSpecs, contentArg.rowSyncHeights)}\n </Fragment>\n )}\n timeCols={slatCols}\n timeHeaderContent={(contentArg: ChunkContentCallbackArgs) => (\n <TimelineHeader\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n tableMinWidth={contentArg.tableMinWidth}\n tableColGroupNode={contentArg.tableColGroupNode}\n dateProfile={props.dateProfile}\n tDateProfile={tDateProfile}\n slatCoords={state.slatCoords}\n rowInnerHeights={contentArg.rowSyncHeights}\n onMaxCushionWidth={slotMinWidth ? null : this.handleMaxCushionWidth}\n />\n )}\n timeBodyContent={(contentArg: ChunkContentCallbackArgs) => (\n <ResourceTimelineGrid\n dateProfile={props.dateProfile}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n tableMinWidth={contentArg.tableMinWidth}\n tableColGroupNode={contentArg.tableColGroupNode}\n expandRows={contentArg.expandRows}\n tDateProfile={tDateProfile}\n rowNodes={rowNodes}\n businessHours={props.businessHours}\n dateSelection={props.dateSelection}\n eventStore={props.eventStore}\n eventUiBases={props.eventUiBases}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n resourceStore={props.resourceStore}\n nextDayThreshold={context.options.nextDayThreshold}\n rowInnerHeights={contentArg.rowSyncHeights}\n onSlatCoords={this.handleSlatCoords}\n onRowCoords={this.handleRowCoords}\n onScrollLeftRequest={this.handleScrollLeftRequest}\n onRowHeightChange={contentArg.reportRowHeightChange}\n />\n )}\n />\n </div>\n )}\n </ViewRoot>\n )\n }\n\n renderSpreadsheetRows(nodes: (ResourceNode | GroupNode)[], colSpecs: ColSpec[], rowSyncHeights: number[]) {\n return nodes.map((node, index) => {\n if ((node as GroupNode).group) {\n return (\n <SpreadsheetGroupRow\n key={node.id}\n id={node.id}\n spreadsheetColCnt={colSpecs.length}\n isExpanded={node.isExpanded}\n group={(node as GroupNode).group}\n innerHeight={rowSyncHeights[index] || ''}\n />\n )\n }\n\n if ((node as ResourceNode).resource) {\n return (\n <SpreadsheetRow\n key={node.id}\n colSpecs={colSpecs}\n rowSpans={(node as ResourceNode).rowSpans}\n depth={(node as ResourceNode).depth}\n isExpanded={node.isExpanded}\n hasChildren={(node as ResourceNode).hasChildren}\n resource={(node as ResourceNode).resource}\n innerHeight={rowSyncHeights[index] || ''}\n />\n )\n }\n\n return null\n })\n }\n\n componentDidMount() {\n this.renderedRowNodes = this.rowNodes\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest)\n }\n\n getSnapshotBeforeUpdate(): ResourceTimelineViewSnapshot {\n if (!this.props.forPrint) { // because print-view is always zero?\n return { resourceScroll: this.queryResourceScroll() }\n }\n return {}\n }\n\n componentDidUpdate(prevProps: ResourceViewProps, prevState: ResourceTimelineViewState, snapshot: ResourceTimelineViewSnapshot) {\n this.renderedRowNodes = this.rowNodes\n\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile)\n\n if (snapshot.resourceScroll) {\n this.handleScrollRequest(snapshot.resourceScroll) // TODO: this gets triggered too often\n }\n }\n\n componentWillUnmount() {\n this.scrollResponder.detach()\n }\n\n handleSlatCoords = (slatCoords: TimelineCoords) => {\n this.setState({ slatCoords })\n }\n\n handleRowCoords = (rowCoords: PositionCache) => {\n this.rowCoords = rowCoords\n this.scrollResponder.update(false) // TODO: could eliminate this if rowCoords lived in state\n }\n\n handleMaxCushionWidth = (slotCushionMaxWidth) => {\n this.setState({\n slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth), // for less rerendering TODO: DRY\n })\n }\n\n computeFallbackSlotMinWidth(tDateProfile: TimelineDateProfile) { // TODO: duplicate definition\n return Math.max(30, ((this.state.slotCushionMaxWidth || 0) / tDateProfile.slotsPerLabel))\n }\n\n // Scrolling\n // ------------------------------------------------------------------------------------------------------------------\n // this is useful for scrolling prev/next dates while resource is scrolled down\n\n handleScrollLeftRequest = (scrollLeft: number) => { // for ResourceTimelineGrid\n let layout = this.layoutRef.current\n layout.forceTimeScroll(scrollLeft)\n }\n\n handleScrollRequest = (request: ScrollRequest & ResourceScrollState) => { // only handles resource scroll\n let { rowCoords } = this\n let layout = this.layoutRef.current\n let rowId = request.rowId || request.resourceId\n\n if (rowCoords) {\n if (rowId) {\n let rowIdToIndex = this.buildRowIndex(this.renderedRowNodes)\n let index = rowIdToIndex[rowId]\n\n if (index != null) {\n let scrollTop =\n (request.fromBottom != null ?\n rowCoords.bottoms[index] - request.fromBottom : // pixels from bottom edge\n rowCoords.tops[index] // just use top edge\n )\n layout.forceResourceScroll(scrollTop)\n }\n }\n\n return true\n }\n return null\n }\n\n queryResourceScroll(): ResourceScrollState {\n let { rowCoords, renderedRowNodes } = this\n\n if (rowCoords) {\n let layout = this.layoutRef.current\n let trBottoms = rowCoords.bottoms\n let scrollTop = layout.getResourceScroll()\n let scroll = {} as any\n\n for (let i = 0; i < trBottoms.length; i += 1) {\n let rowNode = renderedRowNodes[i]\n let elBottom = trBottoms[i] - scrollTop // from the top of the scroller\n\n if (elBottom > 0) {\n scroll.rowId = rowNode.id\n scroll.fromBottom = elBottom\n break\n }\n }\n\n return scroll\n }\n return null\n }\n\n // Resource INDIVIDUAL-Column Area Resizing\n // ------------------------------------------------------------------------------------------\n\n handleColWidthChange = (colWidths: number[]) => {\n this.setState({\n spreadsheetColWidths: colWidths,\n })\n }\n}\n\nResourceTimelineView.addStateEquality({\n spreadsheetColWidths: isArraysEqual,\n})\n\nfunction buildRowIndex(rowNodes: (GroupNode | ResourceNode)[]) {\n let rowIdToIndex: { [id: string]: number } = {}\n\n for (let i = 0; i < rowNodes.length; i += 1) {\n rowIdToIndex[rowNodes[i].id] = i\n }\n\n return rowIdToIndex\n}\n\nfunction buildSpreadsheetCols(colSpecs: ColSpec[], forcedWidths: number[], fallbackWidth: CssDimValue = '') {\n return colSpecs.map((colSpec, i) => ({\n className: colSpec.isMain ? 'fc-main-col' : '',\n width: forcedWidths[i] || colSpec.width || fallbackWidth,\n }))\n}\n\nfunction hasNesting(nodes: (GroupNode | ResourceNode)[]) {\n for (let node of nodes) {\n if ((node as GroupNode).group) {\n return true\n }\n\n if ((node as ResourceNode).resource) {\n if ((node as ResourceNode).hasChildren) {\n return true\n }\n }\n }\n\n return false\n}\n\nfunction processColOptions(options: ViewOptionsRefined) {\n let allColSpecs: ColSpec[] = options.resourceAreaColumns || []\n let superHeaderRendering = null\n\n if (!allColSpecs.length) {\n allColSpecs.push({\n headerClassNames: options.resourceAreaHeaderClassNames,\n headerContent: options.resourceAreaHeaderContent || 'Resources', // TODO: view.defaults\n headerDidMount: options.resourceAreaHeaderDidMount,\n headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n })\n } else if (options.resourceAreaHeaderContent) { // weird way to determine if content\n superHeaderRendering = {\n headerClassNames: options.resourceAreaHeaderClassNames,\n headerContent: options.resourceAreaHeaderContent,\n headerDidMount: options.resourceAreaHeaderDidMount,\n headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n }\n }\n\n let plainColSpecs: ColSpec[] = []\n let groupColSpecs: ColSpec[] = [] // part of the colSpecs, but filtered out in order to put first\n let groupSpecs: GroupSpec[] = []\n let isVGrouping = false\n\n for (let colSpec of allColSpecs) {\n if (colSpec.group) {\n groupColSpecs.push({\n ...colSpec,\n cellClassNames: colSpec.cellClassNames || options.resourceGroupLabelClassNames,\n cellContent: colSpec.cellContent || options.resourceGroupLabelContent,\n cellDidMount: colSpec.cellDidMount || options.resourceGroupLabelDidMount,\n cellWillUnmount: colSpec.cellWillUnmount || options.resourceGroupLaneWillUnmount,\n })\n } else {\n plainColSpecs.push(colSpec)\n }\n }\n\n // BAD: mutates a user-supplied option\n let mainColSpec = plainColSpecs[0]\n mainColSpec.isMain = true\n mainColSpec.cellClassNames = mainColSpec.cellClassNames || options.resourceLabelClassNames\n mainColSpec.cellContent = mainColSpec.cellContent || options.resourceLabelContent\n mainColSpec.cellDidMount = mainColSpec.cellDidMount || options.resourceLabelDidMount\n mainColSpec.cellWillUnmount = mainColSpec.cellWillUnmount || options.resourceLabelWillUnmount\n\n if (groupColSpecs.length) {\n groupSpecs = groupColSpecs\n isVGrouping = true\n } else {\n let hGroupField = options.resourceGroupField\n if (hGroupField) {\n groupSpecs.push({\n field: hGroupField,\n\n labelClassNames: options.resourceGroupLabelClassNames,\n labelContent: options.resourceGroupLabelContent,\n labelDidMount: options.resourceGroupLabelDidMount,\n labelWillUnmount: options.resourceGroupLabelWillUnmount,\n\n laneClassNames: options.resourceGroupLaneClassNames,\n laneContent: options.resourceGroupLaneContent,\n laneDidMount: options.resourceGroupLaneDidMount,\n laneWillUnmount: options.resourceGroupLaneWillUnmount,\n })\n }\n }\n\n let allOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER\n let plainOrderSpecs = []\n\n for (let orderSpec of allOrderSpecs) {\n let isGroup = false\n for (let groupSpec of groupSpecs) {\n if (groupSpec.field === orderSpec.field) {\n groupSpec.order = orderSpec.order // -1, 0, 1\n isGroup = true\n break\n }\n }\n if (!isGroup) {\n plainOrderSpecs.push(orderSpec)\n }\n }\n\n return {\n superHeaderRendering,\n isVGrouping,\n groupSpecs,\n colSpecs: groupColSpecs.concat(plainColSpecs),\n orderSpecs: plainOrderSpecs,\n }\n}\n","export default function() {}\n","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = 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.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.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;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\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 value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\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\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\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","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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 setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\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\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\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\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import { memo, useRef, PropsWithChildren, CSSProperties } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport {\n useTheme,\n useMotionConfig,\n // @ts-ignore\n useMeasure,\n} from '@nivo/core'\nimport { TooltipStateContextDataVisible } from './context'\n\nconst TOOLTIP_OFFSET = 14\n\nconst tooltipStyle = {\n pointerEvents: 'none' as CSSProperties['pointerEvents'],\n position: 'absolute' as CSSProperties['position'],\n zIndex: 10,\n top: 0,\n left: 0,\n}\n\nconst translate = (x: number, y: number) => `translate(${x}px, ${y}px)`\n\ninterface TooltipWrapperProps {\n position: TooltipStateContextDataVisible['position']\n anchor: TooltipStateContextDataVisible['anchor']\n}\n\nexport const TooltipWrapper = memo<PropsWithChildren<TooltipWrapperProps>>(\n ({ position, anchor, children }) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n const [measureRef, bounds] = useMeasure()\n const previousPosition = useRef<[number, number] | false>(false)\n\n let to = undefined\n let immediate = false\n const hasDimension = bounds.width > 0 && bounds.height > 0\n\n let x = Math.round(position[0])\n let y = Math.round(position[1])\n\n if (hasDimension) {\n if (anchor === 'top') {\n x -= bounds.width / 2\n y -= bounds.height + TOOLTIP_OFFSET\n } else if (anchor === 'right') {\n x += TOOLTIP_OFFSET\n y -= bounds.height / 2\n } else if (anchor === 'bottom') {\n x -= bounds.width / 2\n y += TOOLTIP_OFFSET\n } else if (anchor === 'left') {\n x -= bounds.width + TOOLTIP_OFFSET\n y -= bounds.height / 2\n } else if (anchor === 'center') {\n x -= bounds.width / 2\n y -= bounds.height / 2\n }\n\n to = {\n transform: translate(x, y),\n }\n\n if (!previousPosition.current) {\n immediate = true\n }\n\n previousPosition.current = [x, y]\n }\n\n const animatedProps = useSpring<{\n transform: string\n }>({\n to,\n config: springConfig,\n immediate: !animate || immediate,\n })\n\n const style = {\n ...tooltipStyle,\n ...theme.tooltip,\n transform: animatedProps.transform ?? translate(x, y),\n }\n\n return (\n <animated.div ref={measureRef} style={style}>\n {children}\n </animated.div>\n )\n }\n)\n\nTooltipWrapper.displayName = 'TooltipWrapper'\n","import { CSSProperties, memo } from 'react'\n\ninterface ChipProps {\n size?: number\n color: string\n style?: CSSProperties\n}\n\nexport const Chip = memo<ChipProps>(({ size = 12, color, style = {} }) => (\n <span style={{ display: 'block', width: size, height: size, background: color, ...style }} />\n))\n","import { memo, ReactNode } from 'react'\nimport { useTheme, ValueFormat, useValueFormatter } from '@nivo/core'\nimport { Chip } from './Chip'\n\nexport interface BasicTooltipProps {\n id: ReactNode\n value?: number | string | Date\n format?: ValueFormat<number | string | Date>\n color?: string\n enableChip?: boolean\n /**\n * @deprecated This should be replaced by custom tooltip components.\n */\n renderContent?: () => JSX.Element\n}\n\nexport const BasicTooltip = memo<BasicTooltipProps>(\n ({ id, value: _value, format, enableChip = false, color, renderContent }) => {\n const theme = useTheme()\n const formatValue = useValueFormatter<number | string | Date>(format)\n\n let content: JSX.Element\n if (typeof renderContent === 'function') {\n content = renderContent()\n } else {\n let value = _value\n if (formatValue !== undefined && value !== undefined) {\n value = formatValue(value)\n }\n content = (\n <div style={theme.tooltip.basic}>\n {enableChip && <Chip color={color!} style={theme.tooltip.chip} />}\n {value !== undefined ? (\n <span>\n {id}: <strong>{`${value}`}</strong>\n </span>\n ) : (\n id\n )}\n </div>\n )\n }\n\n return <div style={theme.tooltip.container}>{content}</div>\n }\n)\n","import { CSSProperties, memo, ReactNode } from 'react'\nimport { useTheme } from '@nivo/core'\n\nconst tableStyle = {\n width: '100%',\n borderCollapse: 'collapse' as CSSProperties['borderCollapse'],\n}\n\ninterface TableTooltipProps {\n title?: ReactNode\n renderContent?: () => JSX.Element\n rows?: ReactNode[][]\n}\n\nexport const TableTooltip = memo(({ title, rows = [], renderContent }: TableTooltipProps) => {\n const theme = useTheme()\n\n if (!rows.length) return null\n\n let content\n if (typeof renderContent === 'function') {\n content = renderContent()\n } else {\n content = (\n <div>\n {title && title}\n <table style={{ ...tableStyle, ...theme.tooltip.table }}>\n <tbody>\n {rows.map((row, i) => (\n <tr key={i}>\n {row.map((column, j) => (\n <td key={j} style={theme.tooltip.tableCell}>\n {column}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n }\n\n return <div style={theme.tooltip.container}>{content}</div>\n})\n\nTableTooltip.displayName = 'TableTooltip'\n","import { CSSProperties, memo, useMemo } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport { useTheme, useMotionConfig } from '@nivo/core'\n\ninterface CrosshairLineProps {\n x0: number\n x1: number\n y0: number\n y1: number\n}\n\nexport const CrosshairLine = memo(({ x0, x1, y0, y1 }: CrosshairLineProps) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n const style = useMemo(\n () => ({\n ...theme.crosshair.line,\n pointerEvents: 'none' as CSSProperties['pointerEvents'],\n }),\n [theme.crosshair.line]\n )\n\n const animatedProps = useSpring({\n x1: x0,\n x2: x1,\n y1: y0,\n y2: y1,\n config: springConfig,\n immediate: !animate,\n })\n\n return <animated.line {...animatedProps} fill=\"none\" style={style} />\n})\n\nCrosshairLine.displayName = 'CrosshairLine'\n","import { memo } from 'react'\nimport { CrosshairLine } from './CrosshairLine'\nimport { CrosshairType } from './types'\n\ninterface CrosshairProps {\n width: number\n height: number\n type: CrosshairType\n x: number\n y: number\n}\n\nexport const Crosshair = memo(({ width, height, type, x, y }: CrosshairProps) => {\n let xLine\n let yLine\n if (type === 'cross') {\n xLine = { x0: x, x1: x, y0: 0, y1: height }\n yLine = { x0: 0, x1: width, y0: y, y1: y }\n } else if (type === 'top-left') {\n xLine = { x0: x, x1: x, y0: 0, y1: y }\n yLine = { x0: 0, x1: x, y0: y, y1: y }\n } else if (type === 'top') {\n xLine = { x0: x, x1: x, y0: 0, y1: y }\n } else if (type === 'top-right') {\n xLine = { x0: x, x1: x, y0: 0, y1: y }\n yLine = { x0: x, x1: width, y0: y, y1: y }\n } else if (type === 'right') {\n yLine = { x0: x, x1: width, y0: y, y1: y }\n } else if (type === 'bottom-right') {\n xLine = { x0: x, x1: x, y0: y, y1: height }\n yLine = { x0: x, x1: width, y0: y, y1: y }\n } else if (type === 'bottom') {\n xLine = { x0: x, x1: x, y0: y, y1: height }\n } else if (type === 'bottom-left') {\n xLine = { x0: x, x1: x, y0: y, y1: height }\n yLine = { x0: 0, x1: x, y0: y, y1: y }\n } else if (type === 'left') {\n yLine = { x0: 0, x1: x, y0: y, y1: y }\n } else if (type === 'x') {\n xLine = { x0: x, x1: x, y0: 0, y1: height }\n } else if (type === 'y') {\n yLine = { x0: 0, x1: width, y0: y, y1: y }\n }\n\n return (\n <>\n {xLine && <CrosshairLine x0={xLine.x0} x1={xLine.x1} y0={xLine.y0} y1={xLine.y1} />}\n {yLine && <CrosshairLine x0={yLine.x0} x1={yLine.x1} y0={yLine.y0} y1={yLine.y1} />}\n </>\n )\n})\n\nCrosshair.displayName = 'Crosshair'\n","import { createContext, MouseEvent } from 'react'\nimport { TooltipAnchor } from './types'\n\nexport interface TooltipActionsContextData {\n showTooltipAt: (\n content: JSX.Element,\n position: [number, number],\n anchor?: TooltipAnchor\n ) => void\n showTooltipFromEvent: (content: JSX.Element, event: MouseEvent, anchor?: TooltipAnchor) => void\n hideTooltip: () => void\n}\n\nconst defaultActions: TooltipActionsContextData = {\n showTooltipAt: () => {},\n showTooltipFromEvent: () => {},\n hideTooltip: () => {},\n}\n\nexport const TooltipActionsContext = createContext<TooltipActionsContextData>(defaultActions)\n\nexport interface TooltipStateContextDataVisible {\n isVisible: true\n position: [number, number]\n content: JSX.Element\n anchor: TooltipAnchor\n}\n\nexport interface TooltipStateContextDataHidden {\n isVisible: false\n position: [null, null]\n content: null\n anchor: null\n}\n\nexport type TooltipStateContextData = TooltipStateContextDataVisible | TooltipStateContextDataHidden\n\nexport const hiddenTooltipState: TooltipStateContextDataHidden = {\n isVisible: false,\n position: [null, null],\n content: null,\n anchor: null,\n}\n\nexport const TooltipStateContext = createContext<TooltipStateContextData>(hiddenTooltipState)\n","import { useCallback, useMemo, useState } from 'react'\nimport { pie as d3Pie } from 'd3-shape'\nimport { useArcGenerator, computeArcBoundingBox } from '@nivo/arcs'\nimport {\n degreesToRadians,\n radiansToDegrees,\n useValueFormatter,\n usePropertyAccessor,\n} from '@nivo/core'\nimport { OrdinalColorScaleConfig, useOrdinalColorScale } from '@nivo/colors'\nimport { defaultProps } from './props'\nimport { CompletePieSvgProps, ComputedDatum, DatumId, PieArc, PieCustomLayerProps } from './types'\n\ninterface MayHaveLabel {\n label?: string | number\n}\n\n/**\n * Format data so that we get a consistent data structure.\n * It will also add the `formattedValue` and `color` property.\n */\nexport const useNormalizedData = <RawDatum extends MayHaveLabel>({\n data,\n id = defaultProps.id,\n value = defaultProps.value,\n valueFormat,\n colors = defaultProps.colors as OrdinalColorScaleConfig<\n Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'>\n >,\n}: Pick<CompletePieSvgProps<RawDatum>, 'id' | 'value' | 'valueFormat' | 'colors'> & {\n data: RawDatum[]\n}): Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>[] => {\n const getId = usePropertyAccessor<RawDatum, DatumId>(id)\n const getValue = usePropertyAccessor<RawDatum, number>(value)\n const formatValue = useValueFormatter<number>(valueFormat)\n\n const getColor = useOrdinalColorScale<Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'>>(\n colors,\n 'id'\n )\n\n return useMemo(\n () =>\n data.map(datum => {\n const datumId = getId(datum)\n const datumValue = getValue(datum)\n\n const normalizedDatum: Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'> = {\n id: datumId,\n label: datum.label ?? datumId,\n hidden: false,\n value: datumValue,\n formattedValue: formatValue(datumValue),\n data: datum,\n }\n\n return {\n ...normalizedDatum,\n color: getColor(normalizedDatum),\n }\n }),\n [data, getId, getValue, formatValue, getColor]\n )\n}\n\n/**\n * Compute arcs, which don't depend yet on radius.\n */\nexport const usePieArcs = <RawDatum>({\n data,\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n padAngle,\n sortByValue,\n activeId,\n activeInnerRadiusOffset,\n activeOuterRadiusOffset,\n hiddenIds,\n}: {\n data: Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>[]\n // in degrees\n startAngle: number\n // in degrees\n endAngle: number\n // in pixels\n innerRadius: number\n // in pixels\n outerRadius: number\n padAngle: number\n sortByValue: boolean\n activeId: null | DatumId\n activeInnerRadiusOffset: number\n activeOuterRadiusOffset: number\n hiddenIds: DatumId[]\n}): {\n dataWithArc: Omit<ComputedDatum<RawDatum>, 'fill'>[]\n legendData: Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>[]\n} => {\n const pie = useMemo(() => {\n const innerPie = d3Pie<Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>>()\n .value(d => d.value)\n .startAngle(degreesToRadians(startAngle))\n .endAngle(degreesToRadians(endAngle))\n .padAngle(degreesToRadians(padAngle))\n\n if (!sortByValue) {\n innerPie.sortValues(null)\n }\n\n return innerPie\n }, [startAngle, endAngle, padAngle, sortByValue])\n\n return useMemo(() => {\n const hiddenData = data.filter(item => !hiddenIds.includes(item.id))\n const dataWithArc = pie(hiddenData).map(\n (\n arc: Omit<\n PieArc,\n 'angle' | 'angleDeg' | 'innerRadius' | 'outerRadius' | 'thickness'\n > & {\n data: Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>\n }\n ) => {\n const angle = Math.abs(arc.endAngle - arc.startAngle)\n\n return {\n ...arc.data,\n arc: {\n index: arc.index,\n startAngle: arc.startAngle,\n endAngle: arc.endAngle,\n innerRadius:\n activeId === arc.data.id\n ? innerRadius - activeInnerRadiusOffset\n : innerRadius,\n outerRadius:\n activeId === arc.data.id\n ? outerRadius + activeOuterRadiusOffset\n : outerRadius,\n thickness: outerRadius - innerRadius,\n padAngle: arc.padAngle,\n angle,\n angleDeg: radiansToDegrees(angle),\n },\n }\n }\n )\n const legendData = data.map(item => ({ ...item, hidden: hiddenIds.includes(item.id) }))\n\n return { dataWithArc, legendData }\n }, [\n pie,\n data,\n hiddenIds,\n activeId,\n innerRadius,\n activeInnerRadiusOffset,\n outerRadius,\n activeOuterRadiusOffset,\n ])\n}\n\n/**\n * Compute pie layout using explicit radius/innerRadius,\n * expressed in pixels.\n */\nexport const usePie = <RawDatum>({\n data,\n radius,\n innerRadius,\n startAngle = defaultProps.startAngle,\n endAngle = defaultProps.endAngle,\n padAngle = defaultProps.padAngle,\n sortByValue = defaultProps.sortByValue,\n cornerRadius = defaultProps.cornerRadius,\n activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n}: Pick<\n Partial<CompletePieSvgProps<RawDatum>>,\n | 'startAngle'\n | 'endAngle'\n | 'padAngle'\n | 'sortByValue'\n | 'cornerRadius'\n | 'activeInnerRadiusOffset'\n | 'activeOuterRadiusOffset'\n> & {\n data: Omit<ComputedDatum<RawDatum>, 'arc'>[]\n radius: number\n innerRadius: number\n}) => {\n const [activeId, setActiveId] = useState<DatumId | null>(null)\n const [hiddenIds, setHiddenIds] = useState<DatumId[]>([])\n const pieArcs = usePieArcs({\n data,\n startAngle,\n endAngle,\n innerRadius,\n outerRadius: radius,\n padAngle,\n sortByValue,\n activeId,\n activeInnerRadiusOffset,\n activeOuterRadiusOffset,\n hiddenIds,\n })\n\n const toggleSerie = useCallback((id: DatumId) => {\n setHiddenIds(state =>\n state.indexOf(id) > -1 ? state.filter(item => item !== id) : [...state, id]\n )\n }, [])\n\n const arcGenerator = useArcGenerator({ cornerRadius, padAngle: degreesToRadians(padAngle) })\n\n return { ...pieArcs, arcGenerator, setActiveId, toggleSerie }\n}\n\n/**\n * Compute pie layout using a box to find radius/innerRadius,\n * expressed in ratio (0~1), can optionally use the `fit`\n * attribute to find the most space efficient layout.\n *\n * It also returns `centerX`/`centerY` as those can be altered\n * if `fit` is `true`.\n */\nexport const usePieFromBox = <RawDatum>({\n data,\n width,\n height,\n innerRadius: innerRadiusRatio = defaultProps.innerRadius,\n startAngle = defaultProps.startAngle,\n endAngle = defaultProps.endAngle,\n padAngle = defaultProps.padAngle,\n sortByValue = defaultProps.sortByValue,\n cornerRadius = defaultProps.cornerRadius,\n fit = defaultProps.fit,\n activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n}: Pick<\n CompletePieSvgProps<RawDatum>,\n | 'width'\n | 'height'\n | 'innerRadius'\n | 'startAngle'\n | 'endAngle'\n | 'padAngle'\n | 'sortByValue'\n | 'cornerRadius'\n | 'fit'\n | 'activeInnerRadiusOffset'\n | 'activeOuterRadiusOffset'\n> & {\n data: Omit<ComputedDatum<RawDatum>, 'arc'>[]\n}) => {\n const [activeId, setActiveId] = useState<string | number | null>(null)\n const [hiddenIds, setHiddenIds] = useState<DatumId[]>([])\n const computedProps = useMemo(() => {\n let radius = Math.min(width, height) / 2\n let innerRadius = radius * Math.min(innerRadiusRatio, 1)\n\n let centerX = width / 2\n let centerY = height / 2\n\n let boundingBox\n if (fit) {\n const { points, ...box } = computeArcBoundingBox(\n centerX,\n centerY,\n radius,\n startAngle - 90,\n endAngle - 90\n )\n const ratio = Math.min(width / box.width, height / box.height)\n\n const adjustedBox: {\n width: number\n height: number\n x?: number\n y?: number\n } = {\n width: box.width * ratio,\n height: box.height * ratio,\n }\n adjustedBox.x = (width - adjustedBox.width) / 2\n adjustedBox.y = (height - adjustedBox.height) / 2\n\n centerX = ((centerX - box.x) / box.width) * box.width * ratio + adjustedBox.x\n centerY = ((centerY - box.y) / box.height) * box.height * ratio + adjustedBox.y\n\n boundingBox = { box, ratio, points }\n\n radius = radius * ratio\n innerRadius = innerRadius * ratio\n }\n\n return {\n centerX,\n centerY,\n radius,\n innerRadius,\n debug: boundingBox,\n }\n }, [width, height, innerRadiusRatio, startAngle, endAngle, fit, cornerRadius])\n\n const pieArcs = usePieArcs({\n data,\n startAngle,\n endAngle,\n innerRadius: computedProps.innerRadius,\n outerRadius: computedProps.radius,\n padAngle,\n sortByValue,\n activeId,\n activeInnerRadiusOffset,\n activeOuterRadiusOffset,\n hiddenIds,\n })\n\n const toggleSerie = useCallback((id: DatumId) => {\n setHiddenIds(state =>\n state.indexOf(id) > -1 ? state.filter(item => item !== id) : [...state, id]\n )\n }, [])\n\n const arcGenerator = useArcGenerator({\n cornerRadius,\n padAngle: degreesToRadians(padAngle),\n })\n\n return {\n arcGenerator,\n setActiveId,\n toggleSerie,\n ...pieArcs,\n ...computedProps,\n }\n}\n\n/**\n * Memoize the context to pass to custom layers.\n */\nexport const usePieLayerContext = <RawDatum>({\n dataWithArc,\n arcGenerator,\n centerX,\n centerY,\n radius,\n innerRadius,\n}: PieCustomLayerProps<RawDatum>): PieCustomLayerProps<RawDatum> =>\n useMemo(\n () => ({\n dataWithArc,\n arcGenerator,\n centerX,\n centerY,\n radius,\n innerRadius,\n }),\n [dataWithArc, arcGenerator, centerX, centerY, radius, innerRadius]\n )\n","import { useTooltipState } from './hooks'\nimport { TooltipWrapper } from './TooltipWrapper'\nimport { TooltipStateContextData, TooltipStateContextDataVisible } from './context'\n\nexport const isVisibleTooltipState = (\n state: TooltipStateContextData\n): state is TooltipStateContextDataVisible => state.isVisible\n\nexport const Tooltip = () => {\n const state = useTooltipState()\n\n if (!isVisibleTooltipState(state)) {\n return null\n }\n\n return (\n <TooltipWrapper position={state.position} anchor={state.anchor}>\n {state.content}\n </TooltipWrapper>\n )\n}\n","import { PropsWithChildren, MutableRefObject } from 'react'\nimport { TooltipActionsContext, TooltipStateContext } from './context'\nimport { useTooltipHandlers } from './hooks'\n\ninterface TooltipProviderProps {\n container: MutableRefObject<HTMLDivElement>\n}\n\nexport const TooltipProvider = ({\n container,\n children,\n}: PropsWithChildren<TooltipProviderProps>) => {\n const { actions, state } = useTooltipHandlers(container)\n\n return (\n <TooltipActionsContext.Provider value={actions}>\n <TooltipStateContext.Provider value={state}>{children}</TooltipStateContext.Provider>\n </TooltipActionsContext.Provider>\n )\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","import { ComponentType } from 'react'\n\nexport const setStatic = (\n key: string,\n value: any\n): (<T extends ComponentType<any>>(component: T) => T) => BaseComponent => {\n /* eslint-disable no-param-reassign */\n // @ts-expect-error there's no way to type this\n BaseComponent[key] = value\n /* eslint-enable no-param-reassign */\n return BaseComponent\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 * @providesModule shallowEqual\n * @typechecks\n */\n\n/* eslint-disable no-self-compare */\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\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 is(x: unknown, y: unknown): boolean {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y\n }\n // Step 6.a: NaN == NaN\n return x !== x && y !== y\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nexport function shallowEqual(\n objA: Record<string, unknown>,\n objB: Record<string, unknown>\n): boolean {\n if (is(objA, objB)) {\n return true\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false\n }\n\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n // Test for A's keys different from B.\n for (let i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false\n }\n }\n\n return true\n}\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}","function _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, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\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\n return self;\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\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\n return possibleConstructorReturn(this, result);\n };\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\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import { ComponentClass, ComponentType } from 'react'\n\ninterface ComponentEnhancer<TInner, TOuter> {\n (component: ComponentType<TInner>): ComponentClass<TOuter>\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const compose = <TInner, TOuter>(...funcs: Function[]): ComponentEnhancer<TInner, TOuter> =>\n funcs.reduce<ComponentEnhancer<TInner, TOuter>>(\n (a, b) => (...args) => a(b(...args)),\n arg => arg as any\n ) as ComponentEnhancer<TInner, TOuter>\n","export const pick = (obj: Record<string, unknown>, keys: string[]) => {\n const result: Record<string, unknown> = {}\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n // eslint-disable-next-line no-prototype-builtins\n if (obj.hasOwnProperty(key)) {\n result[key] = obj[key]\n }\n }\n return result\n}\n","import { Component, createFactory } from 'react'\nimport { polyfill } from 'react-lifecycles-compat'\nimport { setDisplayName } from './setDisplayName'\nimport { shallowEqual } from './shallowEqual'\nimport { InferableComponentEnhancerWithProps, Mapper, PredicateDiff } from './types'\nimport { pick } from './utils'\nimport { wrapDisplayName } from './wrapDisplayName'\n\nexport const withPropsOnChange = <TInner, TOuter extends Record<string, unknown>>(\n shouldMapOrKeys: string[] | PredicateDiff<TOuter>,\n propsMapper: Mapper<TOuter, TInner>\n): InferableComponentEnhancerWithProps<TInner & TOuter, TOuter> => (BaseComponent: any): any => {\n const factory = createFactory(BaseComponent)\n const shouldMap =\n typeof shouldMapOrKeys === 'function'\n ? shouldMapOrKeys\n : (props: TOuter, nextProps: TOuter) =>\n !shallowEqual(pick(props, shouldMapOrKeys), pick(nextProps, shouldMapOrKeys))\n\n class WithPropsOnChange extends Component<TOuter> {\n state = {\n computedProps: propsMapper(this.props),\n prevProps: this.props,\n }\n\n static getDerivedStateFromProps(nextProps: TOuter, prevState: WithPropsOnChange['state']) {\n if (shouldMap(prevState.prevProps, nextProps)) {\n return {\n computedProps: propsMapper(nextProps),\n prevProps: nextProps,\n }\n }\n\n return {\n prevProps: nextProps,\n }\n }\n\n render() {\n // @ts-expect-error due to how factory is typed\n return factory({\n ...this.props,\n ...this.state.computedProps,\n })\n }\n }\n\n polyfill(WithPropsOnChange)\n\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'withPropsOnChange'))(\n WithPropsOnChange\n )\n }\n\n return WithPropsOnChange\n}\n","import { createFactory } from 'react'\nimport { setDisplayName } from './setDisplayName'\nimport { DefaultingInferableComponentEnhancer } from './types'\nimport { wrapDisplayName } from './wrapDisplayName'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const defaultProps = <T = {}>(props: T): DefaultingInferableComponentEnhancer<T> => (\n BaseComponent: any\n): any => {\n const factory = createFactory(BaseComponent)\n const DefaultProps = (ownerProps: any) => factory(ownerProps)\n DefaultProps.defaultProps = props\n if (process.env.NODE_ENV !== 'production') {\n return setDisplayName(wrapDisplayName(BaseComponent, 'defaultProps'))(DefaultProps)\n }\n return DefaultProps\n}\n","import { ComponentType, ValidationMap } from 'react'\nimport { setStatic } from './setStatic'\n\nexport const setPropTypes = <P>(\n propTypes: ValidationMap<P>\n): (<T extends ComponentType<P>>(component: T) => T) => setStatic('propTypes', propTypes)\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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\n return self;\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","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\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","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","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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\n }\n}","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\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","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","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 freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import 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","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 objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(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 Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX)\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\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","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\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}","// Components\n// Environment-dependent Editable\nimport { Editable as DefaultEditable } from './components/editable'\nimport { AndroidEditable } from './components/android/android-editable'\nimport { IS_ANDROID } from './utils/environment'\n\nexport const Editable = IS_ANDROID ? AndroidEditable : DefaultEditable\nexport {\n Editable as DefaultEditable,\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n DefaultPlaceholder,\n} from './components/editable'\nexport { AndroidEditable } from './components/android/android-editable'\nexport { DefaultElement } from './components/element'\nexport { DefaultLeaf } from './components/leaf'\nexport { Slate } from './components/slate'\n\n// Hooks\nexport { useEditor } from './hooks/use-editor'\nexport { useSlateStatic } from './hooks/use-slate-static'\nexport { useFocused } from './hooks/use-focused'\nexport { useReadOnly } from './hooks/use-read-only'\nexport { useSelected } from './hooks/use-selected'\nexport { useSlate } from './hooks/use-slate'\nexport { useSlateSelector } from './hooks/use-slate-selector'\n\n// Plugin\nexport { ReactEditor } from './plugin/react-editor'\nexport { withReact } from './plugin/with-react'\n","import compute from 'compute-scroll-into-view';\n\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\n\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\n\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n\n if (isOptionsObject(options)) {\n return options;\n }\n\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\n\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n\n if (!isTargetAttached) {\n return;\n }\n\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\n\nexport default scrollIntoView;","import React from 'react'\n\nexport const IS_REACT_VERSION_17_OR_ABOVE =\n parseInt(React.version.split('.')[0], 10) >= 17\n\nexport const IS_IOS =\n typeof navigator !== 'undefined' &&\n typeof window !== 'undefined' &&\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !window.MSStream\n\nexport const IS_APPLE =\n typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\n\nexport const IS_ANDROID =\n typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n\nexport const IS_FIREFOX =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent)\n\n// \"modern\" Edge was released at 79.x\nexport const IS_EDGE_LEGACY =\n typeof navigator !== 'undefined' &&\n /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_CHROME =\n typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent)\n\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nexport const IS_CHROME_LEGACY =\n typeof navigator !== 'undefined' &&\n /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent)\n\n// Firefox did not support `beforeInput` until `v87`.\nexport const IS_FIREFOX_LEGACY =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(\n navigator.userAgent\n )\n\n// qq browser\nexport const IS_QQBROWSER =\n typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent)\n\n// UC mobile browser\nexport const IS_UC_MOBILE =\n typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent)\n\n// Wechat browser\nexport const IS_WECHATBROWSER =\n typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent)\n\n// Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const CAN_USE_DOM = !!(\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n)\n\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nexport const HAS_BEFORE_INPUT_SUPPORT =\n !IS_CHROME_LEGACY &&\n !IS_EDGE_LEGACY &&\n // globalThis is undefined in older browsers\n typeof globalThis !== 'undefined' &&\n globalThis.InputEvent &&\n // @ts-ignore The `getTargetRanges` property isn't recognized.\n typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'\n","import { useLayoutEffect, useEffect } from 'react'\nimport { CAN_USE_DOM } from '../utils/environment'\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\n\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? useLayoutEffect\n : useEffect\n","import React, { useRef } from 'react'\nimport { Editor, Text, Path, Element, Node } from 'slate'\n\nimport { ReactEditor, useSlateStatic } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\n\n/**\n * Leaf content strings.\n */\n\nconst String = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n text: Text\n}) => {\n const { isLast, leaf, parent, text } = props\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, text)\n const parentPath = Path.parent(path)\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n if (editor.isVoid(parent)) {\n return <ZeroWidthString length={Node.string(parent).length} />\n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (\n leaf.text === '' &&\n parent.children[parent.children.length - 1] === text &&\n !editor.isInline(parent) &&\n Editor.string(editor, parentPath) === ''\n ) {\n return <ZeroWidthString isLineBreak />\n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (leaf.text === '') {\n return <ZeroWidthString />\n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return <TextString isTrailing text={leaf.text} />\n }\n\n return <TextString text={leaf.text} />\n}\n\n/**\n * Leaf strings with text in them.\n */\nconst TextString = (props: { text: string; isTrailing?: boolean }) => {\n const { text, isTrailing = false } = props\n\n const ref = useRef<HTMLSpanElement>(null)\n\n const getTextContent = () => {\n return `${text ?? ''}${isTrailing ? '\\n' : ''}`\n }\n\n // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n\n // useLayoutEffect: updating our span before browser paint\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n const textWithTrailing = getTextContent()\n\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing\n }\n\n // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n })\n\n // Render text content immediately if it's the first-time render\n // Ensure that text content is rendered on server-side rendering\n if (!ref.current) {\n return (\n <span data-slate-string ref={ref}>\n {getTextContent()}\n </span>\n )\n }\n\n // the span is intentionally same on every render in virtual DOM, actual rendering happens in the layout effect above\n return <span data-slate-string ref={ref} />\n}\n\n/**\n * Leaf strings without text, render as zero-width strings.\n */\n\nconst ZeroWidthString = (props: { length?: number; isLineBreak?: boolean }) => {\n const { length = 0, isLineBreak = false } = props\n return (\n <span\n data-slate-zero-width={isLineBreak ? 'n' : 'z'}\n data-slate-length={length}\n >\n {'\\uFEFF'}\n {isLineBreak ? <br /> : null}\n </span>\n )\n}\n\nexport default String\n","import React, { useRef, useEffect } from 'react'\nimport { Element, Text } from 'slate'\nimport String from './string'\nimport { PLACEHOLDER_SYMBOL } from '../utils/weak-maps'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\n\n/**\n * Individual leaves in a text node with unique formatting.\n */\n\nconst Leaf = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: Text\n}) => {\n const {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = (props: RenderLeafProps) => <DefaultLeaf {...props} />,\n } = props\n\n const placeholderRef = useRef<HTMLSpanElement | null>(null)\n\n useEffect(() => {\n const placeholderEl = placeholderRef?.current\n const editorEl = document.querySelector<HTMLDivElement>(\n '[data-slate-editor=\"true\"]'\n )\n\n if (!placeholderEl || !editorEl) {\n return\n }\n\n editorEl.style.minHeight = `${placeholderEl.clientHeight}px`\n\n return () => {\n editorEl.style.minHeight = 'auto'\n }\n }, [placeholderRef, leaf])\n\n let children = (\n <String isLast={isLast} leaf={leaf} parent={parent} text={text} />\n )\n\n if (leaf[PLACEHOLDER_SYMBOL]) {\n const placeholderProps: RenderPlaceholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none',\n },\n contentEditable: false,\n ref: placeholderRef,\n },\n }\n\n children = (\n <React.Fragment>\n {renderPlaceholder(placeholderProps)}\n {children}\n </React.Fragment>\n )\n }\n\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n const attributes: {\n 'data-slate-leaf': true\n } = {\n 'data-slate-leaf': true,\n }\n\n return renderLeaf({ attributes, children, leaf, text })\n}\n\nconst MemoizedLeaf = React.memo(Leaf, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.renderPlaceholder === prev.renderPlaceholder &&\n next.text === prev.text &&\n Text.equals(next.leaf, prev.leaf) &&\n next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL]\n )\n})\n\nexport const DefaultLeaf = (props: RenderLeafProps) => {\n const { attributes, children } = props\n return <span {...attributes}>{children}</span>\n}\n\nexport default MemoizedLeaf\n","import { Range } from 'slate'\nimport { PLACEHOLDER_SYMBOL } from './weak-maps'\n\nexport const shallowCompare = (obj1: {}, obj2: {}) =>\n Object.keys(obj1).length === Object.keys(obj2).length &&\n Object.keys(obj1).every(\n key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]\n )\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isDecoratorRangeListEqual = (\n list: Range[],\n another: Range[]\n): boolean => {\n if (list.length !== another.length) {\n return false\n }\n\n for (let i = 0; i < list.length; i++) {\n const range = list[i]\n const other = another[i]\n\n const { anchor: rangeAnchor, focus: rangeFocus, ...rangeOwnProps } = range\n const { anchor: otherAnchor, focus: otherFocus, ...otherOwnProps } = other\n\n if (\n !Range.equals(range, other) ||\n range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] ||\n !shallowCompare(rangeOwnProps, otherOwnProps)\n ) {\n return false\n }\n }\n\n return true\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { Node as SlateNode } from 'slate'\nimport { NODE_TO_RESTORE_DOM } from '../utils/weak-maps'\n\nexport function useContentKey(node: SlateNode) {\n const contentKeyRef = useRef<number>(0)\n const updateAnimationFrameRef = useRef<number | null>(null)\n\n const [, setForceRerenderCounter] = useState(0)\n\n useEffect(() => {\n NODE_TO_RESTORE_DOM.set(node, () => {\n // Update is already queued and node hasn't re-render yet\n if (updateAnimationFrameRef.current) {\n return\n }\n\n updateAnimationFrameRef.current = requestAnimationFrame(() => {\n setForceRerenderCounter(state => state + 1)\n updateAnimationFrameRef.current = null\n })\n\n contentKeyRef.current++\n })\n\n return () => {\n NODE_TO_RESTORE_DOM.delete(node)\n }\n }, [node])\n\n // Node was restored => clear scheduled update\n if (updateAnimationFrameRef.current) {\n cancelAnimationFrame(updateAnimationFrameRef.current)\n updateAnimationFrameRef.current = null\n }\n\n return contentKeyRef.current\n}\n","import React, { useRef } from 'react'\nimport { Range, Element, Text as SlateText } from 'slate'\n\nimport Leaf from './leaf'\nimport { ReactEditor, useSlateStatic } from '..'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport {\n NODE_TO_ELEMENT,\n ELEMENT_TO_NODE,\n EDITOR_TO_KEY_TO_ELEMENT,\n} from '../utils/weak-maps'\nimport { isDecoratorRangeListEqual } from '../utils/range-list'\nimport { useContentKey } from '../hooks/use-content-key'\nimport { IS_ANDROID } from '../utils/environment'\n\n/**\n * Text.\n */\n\nconst Text = (props: {\n decorations: Range[]\n isLast: boolean\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: SlateText\n}) => {\n const {\n decorations,\n isLast,\n parent,\n renderPlaceholder,\n renderLeaf,\n text,\n } = props\n const editor = useSlateStatic()\n const ref = useRef<HTMLSpanElement>(null)\n const leaves = SlateText.decorations(text, decorations)\n const key = ReactEditor.findKey(editor, text)\n const children = []\n\n for (let i = 0; i < leaves.length; i++) {\n const leaf = leaves[i]\n\n children.push(\n <Leaf\n isLast={isLast && i === leaves.length - 1}\n key={`${key.id}-${i}`}\n renderPlaceholder={renderPlaceholder}\n leaf={leaf}\n text={text}\n parent={parent}\n renderLeaf={renderLeaf}\n />\n )\n }\n\n // Update element-related weak maps with the DOM element ref.\n useIsomorphicLayoutEffect(() => {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (ref.current) {\n KEY_TO_ELEMENT?.set(key, ref.current)\n NODE_TO_ELEMENT.set(text, ref.current)\n ELEMENT_TO_NODE.set(ref.current, text)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(text)\n }\n })\n\n const contentKey = IS_ANDROID ? useContentKey(text) : undefined\n\n return (\n <span data-slate-node=\"text\" ref={ref} key={contentKey}>\n {children}\n </span>\n )\n}\n\nconst MemoizedText = React.memo(Text, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.text === prev.text &&\n isDecoratorRangeListEqual(next.decorations, prev.decorations)\n )\n})\n\nexport default MemoizedText\n","import React, { Fragment, useRef } from 'react'\nimport getDirection from 'direction'\nimport { Editor, Node, Range, Element as SlateElement } from 'slate'\n\nimport Text from './text'\nimport useChildren from '../hooks/use-children'\nimport { ReactEditor, useSlateStatic, useReadOnly } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport {\n NODE_TO_ELEMENT,\n ELEMENT_TO_NODE,\n NODE_TO_PARENT,\n NODE_TO_INDEX,\n EDITOR_TO_KEY_TO_ELEMENT,\n} from '../utils/weak-maps'\nimport { isDecoratorRangeListEqual } from '../utils/range-list'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from './editable'\nimport { useContentKey } from '../hooks/use-content-key'\nimport { IS_ANDROID } from '../utils/environment'\n\n/**\n * Element.\n */\n\nconst Element = (props: {\n decorations: Range[]\n element: SlateElement\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n element,\n renderElement = (p: RenderElementProps) => <DefaultElement {...p} />,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const ref = useRef<HTMLElement>(null)\n const editor = useSlateStatic()\n const readOnly = useReadOnly()\n const isInline = editor.isInline(element)\n const key = ReactEditor.findKey(editor, element)\n let children: React.ReactNode = useChildren({\n decorations,\n node: element,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n })\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n const attributes: {\n 'data-slate-node': 'element'\n 'data-slate-void'?: true\n 'data-slate-inline'?: true\n contentEditable?: false\n dir?: 'rtl'\n ref: any\n } = {\n 'data-slate-node': 'element',\n ref,\n }\n\n if (isInline) {\n attributes['data-slate-inline'] = true\n }\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n if (!isInline && Editor.hasInlines(editor, element)) {\n const text = Node.string(element)\n const dir = getDirection(text)\n\n if (dir === 'rtl') {\n attributes.dir = dir\n }\n }\n\n // If it's a void node, wrap the children in extra void-specific elements.\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true\n\n if (!readOnly && isInline) {\n attributes.contentEditable = false\n }\n\n const Tag = isInline ? 'span' : 'div'\n const [[text]] = Node.texts(element)\n\n children = (\n <Tag\n data-slate-spacer\n style={{\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute',\n }}\n >\n <Text\n renderPlaceholder={renderPlaceholder}\n decorations={[]}\n isLast={false}\n parent={element}\n text={text}\n />\n </Tag>\n )\n\n NODE_TO_INDEX.set(text, 0)\n NODE_TO_PARENT.set(text, element)\n }\n\n // Update element-related weak maps with the DOM element ref.\n useIsomorphicLayoutEffect(() => {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (ref.current) {\n KEY_TO_ELEMENT?.set(key, ref.current)\n NODE_TO_ELEMENT.set(element, ref.current)\n ELEMENT_TO_NODE.set(ref.current, element)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(element)\n }\n })\n\n const content = renderElement({ attributes, children, element })\n\n if (IS_ANDROID) {\n const contentKey = useContentKey(element)\n return <Fragment key={contentKey}>{content}</Fragment>\n }\n\n return content\n}\n\nconst MemoizedElement = React.memo(Element, (prev, next) => {\n return (\n prev.element === next.element &&\n prev.renderElement === next.renderElement &&\n prev.renderLeaf === next.renderLeaf &&\n isDecoratorRangeListEqual(prev.decorations, next.decorations) &&\n (prev.selection === next.selection ||\n (!!prev.selection &&\n !!next.selection &&\n Range.equals(prev.selection, next.selection)))\n )\n})\n\n/**\n * The default element renderer.\n */\n\nexport const DefaultElement = (props: RenderElementProps) => {\n const { attributes, children, element } = props\n const editor = useSlateStatic()\n const Tag = editor.isInline(element) ? 'span' : 'div'\n return (\n <Tag {...attributes} style={{ position: 'relative' }}>\n {children}\n </Tag>\n )\n}\n\nexport default MemoizedElement\n","import { createContext, useContext } from 'react'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { Editor } from 'slate'\n\n/**\n * A React context for sharing the editor object.\n */\n\nexport const EditorContext = createContext<ReactEditor | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlateStatic = (): Editor => {\n const editor = useContext(EditorContext)\n\n if (!editor) {\n throw new Error(\n `The \\`useSlateStatic\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n return editor\n}\n","import { createContext, useContext } from 'react'\nimport { Range, NodeEntry } from 'slate'\n\n/**\n * A React context for sharing the `decorate` prop of the editable.\n */\n\nexport const DecorateContext = createContext<(entry: NodeEntry) => Range[]>(\n () => []\n)\n\n/**\n * Get the current `decorate` prop of the editable.\n */\n\nexport const useDecorate = (): ((entry: NodeEntry) => Range[]) => {\n return useContext(DecorateContext)\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `selected` state of an element.\n */\n\nexport const SelectedContext = createContext(false)\n\n/**\n * Get the current `selected` state of an element.\n */\n\nexport const useSelected = (): boolean => {\n return useContext(SelectedContext)\n}\n","import React from 'react'\nimport { Editor, Range, Element, Ancestor, Descendant } from 'slate'\n\nimport ElementComponent from '../components/element'\nimport TextComponent from '../components/text'\nimport { ReactEditor } from '..'\nimport { useSlateStatic } from './use-slate-static'\nimport { useDecorate } from './use-decorate'\nimport { NODE_TO_INDEX, NODE_TO_PARENT } from '../utils/weak-maps'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from '../components/editable'\nimport { SelectedContext } from './use-selected'\n\n/**\n * Children.\n */\n\nconst useChildren = (props: {\n decorations: Range[]\n node: Ancestor\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const decorate = useDecorate()\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, node)\n const children = []\n const isLeafBlock =\n Element.isElement(node) &&\n !editor.isInline(node) &&\n Editor.hasInlines(editor, node)\n\n for (let i = 0; i < node.children.length; i++) {\n const p = path.concat(i)\n const n = node.children[i] as Descendant\n const key = ReactEditor.findKey(editor, n)\n const range = Editor.range(editor, p)\n const sel = selection && Range.intersection(range, selection)\n const ds = decorate([n, p])\n\n for (const dec of decorations) {\n const d = Range.intersection(dec, range)\n\n if (d) {\n ds.push(d)\n }\n }\n\n if (Element.isElement(n)) {\n children.push(\n <SelectedContext.Provider key={`provider-${key.id}`} value={!!sel}>\n <ElementComponent\n decorations={ds}\n element={n}\n key={key.id}\n renderElement={renderElement}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n selection={sel}\n />\n </SelectedContext.Provider>\n )\n } else {\n children.push(\n <TextComponent\n decorations={ds}\n key={key.id}\n isLast={isLeafBlock && i === node.children.length - 1}\n parent={node}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n text={n}\n />\n )\n }\n\n NODE_TO_INDEX.set(n, i)\n NODE_TO_PARENT.set(n, node)\n }\n\n return children\n}\n\nexport default useChildren\n","import { isKeyHotkey } from 'is-hotkey'\nimport { IS_APPLE } from './environment'\n\n/**\n * Hotkey mappings for each platform.\n */\n\nconst HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n insertSoftBreak: 'shift+enter',\n splitBlock: 'enter',\n undo: 'mod+z',\n}\n\nconst APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t',\n}\n\nconst WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z'],\n}\n\n/**\n * Create a platform-aware hotkey checker.\n */\n\nconst create = (key: string) => {\n const generic = HOTKEYS[key]\n const apple = APPLE_HOTKEYS[key]\n const windows = WINDOWS_HOTKEYS[key]\n const isGeneric = generic && isKeyHotkey(generic)\n const isApple = apple && isKeyHotkey(apple)\n const isWindows = windows && isKeyHotkey(windows)\n\n return (event: KeyboardEvent) => {\n if (isGeneric && isGeneric(event)) return true\n if (IS_APPLE && isApple && isApple(event)) return true\n if (!IS_APPLE && isWindows && isWindows(event)) return true\n return false\n }\n}\n\n/**\n * Hotkeys.\n */\n\nexport default {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSoftBreak: create('insertSoftBreak'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo'),\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\n\nexport const ReadOnlyContext = createContext(false)\n\n/**\n * Get the current `readOnly` state of the editor.\n */\n\nexport const useReadOnly = (): boolean => {\n return useContext(ReadOnlyContext)\n}\n","import { createContext, useContext } from 'react'\nimport { Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * A React context for sharing the editor object, in a way that re-renders the\n * context whenever changes occur.\n */\n\nexport const SlateContext = createContext<[ReactEditor] | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlate = (): Editor => {\n const context = useContext(SlateContext)\n\n if (!context) {\n throw new Error(\n `The \\`useSlate\\` hook must be used inside the <Slate> component's context.`\n )\n }\n\n const [editor] = context\n return editor\n}\n","/**\n * Types.\n */\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\n\nexport {\n DOMNode,\n DOMComment,\n DOMElement,\n DOMText,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n}\n\ndeclare global {\n interface Window {\n Selection: typeof Selection['constructor']\n DataTransfer: typeof DataTransfer['constructor']\n Node: typeof Node['constructor']\n }\n}\n\nexport type DOMPoint = [Node, number]\n\n/**\n * Returns the host window of a DOM node\n */\n\nexport const getDefaultView = (value: any): Window | null => {\n return (\n (value && value.ownerDocument && value.ownerDocument.defaultView) || null\n )\n}\n\n/**\n * Check if a DOM node is a comment node.\n */\n\nexport const isDOMComment = (value: any): value is DOMComment => {\n return isDOMNode(value) && value.nodeType === 8\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMElement = (value: any): value is DOMElement => {\n return isDOMNode(value) && value.nodeType === 1\n}\n\n/**\n * Check if a value is a DOM node.\n */\n\nexport const isDOMNode = (value: any): value is DOMNode => {\n const window = getDefaultView(value)\n return !!window && value instanceof window.Node\n}\n\n/**\n * Check if a value is a DOM selection.\n */\n\nexport const isDOMSelection = (value: any): value is DOMSelection => {\n const window = value && value.anchorNode && getDefaultView(value.anchorNode)\n return !!window && value instanceof window.Selection\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMText = (value: any): value is DOMText => {\n return isDOMNode(value) && value.nodeType === 3\n}\n\n/**\n * Checks whether a paste event is a plaintext-only event.\n */\n\nexport const isPlainTextOnlyPaste = (event: ClipboardEvent) => {\n return (\n event.clipboardData &&\n event.clipboardData.getData('text/plain') !== '' &&\n event.clipboardData.types.length === 1\n )\n}\n\n/**\n * Normalize a DOM point so that it always refers to a text node.\n */\n\nexport const normalizeDOMPoint = (domPoint: DOMPoint): DOMPoint => {\n let [node, offset] = domPoint\n\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (isDOMElement(node) && node.childNodes.length) {\n let isLast = offset === node.childNodes.length\n let index = isLast ? offset - 1 : offset\n ;[node, index] = getEditableChildAndIndex(\n node,\n index,\n isLast ? 'backward' : 'forward'\n )\n // If the editable child found is in front of input offset, we instead seek to its end\n isLast = index < offset\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (isDOMElement(node) && node.childNodes.length) {\n const i = isLast ? node.childNodes.length - 1 : 0\n node = getEditableChild(node, i, isLast ? 'backward' : 'forward')\n }\n\n // Determine the new offset inside the text node.\n offset = isLast && node.textContent != null ? node.textContent.length : 0\n }\n\n // Return the node and offset.\n return [node, offset]\n}\n\n/**\n * Determines wether the active element is nested within a shadowRoot\n */\n\nexport const hasShadowRoot = () => {\n return !!(\n window.document.activeElement && window.document.activeElement.shadowRoot\n )\n}\n\n/**\n * Get the nearest editable child and index at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChildAndIndex = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): [DOMNode, number] => {\n const { childNodes } = parent\n let child = childNodes[index]\n let i = index\n let triedForward = false\n let triedBackward = false\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (\n isDOMComment(child) ||\n (isDOMElement(child) && child.childNodes.length === 0) ||\n (isDOMElement(child) && child.getAttribute('contenteditable') === 'false')\n ) {\n if (triedForward && triedBackward) {\n break\n }\n\n if (i >= childNodes.length) {\n triedForward = true\n i = index - 1\n direction = 'backward'\n continue\n }\n\n if (i < 0) {\n triedBackward = true\n i = index + 1\n direction = 'forward'\n continue\n }\n\n child = childNodes[i]\n index = i\n i += direction === 'forward' ? 1 : -1\n }\n\n return [child, index]\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChild = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): DOMNode => {\n const [child] = getEditableChildAndIndex(parent, index, direction)\n return child\n}\n\n/**\n * Get a plaintext representation of the content of a node, accounting for block\n * elements which get a newline appended.\n *\n * The domNode must be attached to the DOM.\n */\n\nexport const getPlainText = (domNode: DOMNode) => {\n let text = ''\n\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue\n }\n\n if (isDOMElement(domNode)) {\n for (const childNode of Array.from(domNode.childNodes)) {\n text += getPlainText(childNode)\n }\n\n const display = getComputedStyle(domNode).getPropertyValue('display')\n\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n text += '\\n'\n }\n }\n\n return text\n}\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m\nexport const getSlateFragmentAttribute = (\n dataTransfer: DataTransfer\n): string | void => {\n const htmlData = dataTransfer.getData('text/html')\n const [, fragment] = htmlData.match(catchSlateFragment) || []\n return fragment\n}\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const getClipboardData = (dataTransfer: DataTransfer): DataTransfer => {\n if (!dataTransfer.getData('application/x-slate-fragment')) {\n const fragment = getSlateFragmentAttribute(dataTransfer)\n if (fragment) {\n const clipboardData = new DataTransfer()\n dataTransfer.types.forEach(type => {\n clipboardData.setData(type, dataTransfer.getData(type))\n })\n clipboardData.setData('application/x-slate-fragment', fragment)\n return clipboardData\n }\n }\n return dataTransfer\n}\n","import React, { useEffect, useRef, useMemo, useCallback, useState } from 'react'\nimport {\n Editor,\n Element,\n NodeEntry,\n Node,\n Range,\n Text,\n Transforms,\n Path,\n RangeRef,\n} from 'slate'\nimport getDirection from 'direction'\nimport debounce from 'lodash/debounce'\nimport throttle from 'lodash/throttle'\nimport scrollIntoView from 'scroll-into-view-if-needed'\n\nimport useChildren from '../hooks/use-children'\nimport Hotkeys from '../utils/hotkeys'\nimport {\n HAS_BEFORE_INPUT_SUPPORT,\n IS_IOS,\n IS_CHROME,\n IS_FIREFOX,\n IS_FIREFOX_LEGACY,\n IS_QQBROWSER,\n IS_SAFARI,\n IS_UC_MOBILE,\n IS_WECHATBROWSER,\n CAN_USE_DOM,\n} from '../utils/environment'\nimport { ReactEditor } from '..'\nimport { ReadOnlyContext } from '../hooks/use-read-only'\nimport { useSlate } from '../hooks/use-slate'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { DecorateContext } from '../hooks/use-decorate'\nimport {\n DOMElement,\n DOMNode,\n DOMRange,\n getDefaultView,\n isDOMElement,\n isDOMNode,\n isPlainTextOnlyPaste,\n DOMText,\n} from '../utils/dom'\n\nimport {\n EDITOR_TO_ELEMENT,\n ELEMENT_TO_NODE,\n IS_READ_ONLY,\n NODE_TO_ELEMENT,\n IS_FOCUSED,\n PLACEHOLDER_SYMBOL,\n EDITOR_TO_WINDOW,\n EDITOR_TO_USER_SELECTION,\n IS_COMPOSING,\n} from '../utils/weak-maps'\nimport { TRIPLE_CLICK } from '../utils/constants'\n\ntype DeferredOperation = () => void\n\nconst Children = (props: Parameters<typeof useChildren>[0]) => (\n <React.Fragment>{useChildren(props)}</React.Fragment>\n)\n\n/**\n * `RenderElementProps` are passed to the `renderElement` handler.\n */\n\nexport interface RenderElementProps {\n children: any\n element: Element\n attributes: {\n 'data-slate-node': 'element'\n 'data-slate-inline'?: true\n 'data-slate-void'?: true\n dir?: 'rtl'\n ref: any\n }\n}\n\n/**\n * `RenderLeafProps` are passed to the `renderLeaf` handler.\n */\n\nexport interface RenderLeafProps {\n children: any\n leaf: Text\n text: Text\n attributes: {\n 'data-slate-leaf': true\n }\n}\n\n/**\n * `EditableProps` are passed to the `<Editable>` component.\n */\n\nexport type EditableProps = {\n decorate?: (entry: NodeEntry) => Range[]\n onDOMBeforeInput?: (event: InputEvent) => void\n placeholder?: string\n readOnly?: boolean\n role?: string\n style?: React.CSSProperties\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element\n scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void\n as?: React.ElementType\n} & React.TextareaHTMLAttributes<HTMLDivElement>\n\n/**\n * Editable.\n */\n\nexport const Editable = (props: EditableProps) => {\n const {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = props => <DefaultPlaceholder {...props} />,\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style = {},\n as: Component = 'div',\n ...attributes\n } = props\n const editor = useSlate()\n // Rerender editor when composition status changed\n const [isComposing, setIsComposing] = useState(false)\n const ref = useRef<HTMLDivElement>(null)\n const deferredOperations = useRef<DeferredOperation[]>([])\n\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly)\n\n // Keep track of some state for the event handler logic.\n const state = useMemo(\n () => ({\n hasInsertPrefixInCompositon: false,\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null as DOMElement | null,\n }),\n []\n )\n\n // Whenever the editor updates...\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n let window\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window)\n EDITOR_TO_ELEMENT.set(editor, ref.current)\n NODE_TO_ELEMENT.set(editor, ref.current)\n ELEMENT_TO_NODE.set(ref.current, editor)\n } else {\n NODE_TO_ELEMENT.delete(editor)\n }\n\n // Make sure the DOM selection state is in sync.\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (\n ReactEditor.isComposing(editor) ||\n !domSelection ||\n !ReactEditor.isFocused(editor)\n ) {\n return\n }\n\n const hasDomSelection = domSelection.type !== 'None'\n\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return\n }\n\n // verify that the dom selection is in the editor\n const editorElement = EDITOR_TO_ELEMENT.get(editor)!\n let hasDomSelectionInEditor = false\n if (\n editorElement.contains(domSelection.anchorNode) &&\n editorElement.contains(domSelection.focusNode)\n ) {\n hasDomSelectionInEditor = true\n }\n\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n const slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true,\n })\n if (slateRange && Range.equals(slateRange, selection)) {\n return\n }\n }\n\n // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false,\n })\n return\n }\n\n // Otherwise the DOM selection is out of sync, so update it.\n state.isUpdatingSelection = true\n\n const newDomRange = selection && ReactEditor.toDOMRange(editor, selection)\n if (newDomRange) {\n if (Range.isBackward(selection!)) {\n domSelection.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset\n )\n } else {\n domSelection.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset\n )\n }\n scrollSelectionIntoView(editor, newDomRange)\n } else {\n domSelection.removeAllRanges()\n }\n\n setTimeout(() => {\n // COMPAT: In Firefox, it's not enough to create a range, you also need\n // to focus the contenteditable element too. (2016/11/16)\n if (newDomRange && IS_FIREFOX) {\n const el = ReactEditor.toDOMNode(editor, editor)\n el.focus()\n }\n\n state.isUpdatingSelection = false\n })\n })\n\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus()\n }\n }, [autoFocus])\n\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n const onDOMSelectionChange = useCallback(\n throttle(() => {\n if (\n !ReactEditor.isComposing(editor) &&\n !state.isUpdatingSelection &&\n !state.isDraggingInternally\n ) {\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const { activeElement } = root\n const el = ReactEditor.toDOMNode(editor, editor)\n const domSelection = root.getSelection()\n\n if (activeElement === el) {\n state.latestElement = activeElement\n IS_FOCUSED.set(editor, true)\n } else {\n IS_FOCUSED.delete(editor)\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor)\n }\n\n const { anchorNode, focusNode } = domSelection\n\n const anchorNodeSelectable =\n hasEditableTarget(editor, anchorNode) ||\n isTargetInsideNonReadonlyVoid(editor, anchorNode)\n\n const focusNodeSelectable =\n hasEditableTarget(editor, focusNode) ||\n isTargetInsideNonReadonlyVoid(editor, focusNode)\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n const range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false,\n })\n Transforms.select(editor, range)\n }\n }\n }, 100),\n [readOnly]\n )\n\n const scheduleOnDOMSelectionChange = useMemo(\n () => debounce(onDOMSelectionChange, 0),\n [onDOMSelectionChange]\n )\n\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n const onDOMBeforeInput = useCallback(\n (event: InputEvent) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isDOMEventHandled(event, propsOnDOMBeforeInput)\n ) {\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush()\n onDOMSelectionChange.flush()\n\n const { selection } = editor\n const { inputType: type } = event\n const data = (event as any).dataTransfer || event.data || undefined\n\n // These two types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n if (\n type === 'insertCompositionText' ||\n type === 'deleteCompositionText'\n ) {\n return\n }\n\n let native = false\n if (\n type === 'insertText' &&\n selection &&\n Range.isCollapsed(selection) &&\n // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data &&\n event.data.length === 1 &&\n /[a-z ]/i.test(event.data) &&\n // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0\n ) {\n native = true\n\n // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n if (editor.marks) {\n native = false\n }\n\n // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of anchor nodes.\n const { anchor } = selection\n\n const [node, offset] = ReactEditor.toDOMPoint(editor, anchor)\n const anchorNode = node.parentElement?.closest('a')\n\n if (anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n const { document } = ReactEditor.getWindow(editor)\n\n // Find the last text node inside the anchor.\n const lastText = document\n .createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT)\n .lastChild() as DOMText | null\n\n if (lastText === node && lastText.textContent?.length === offset) {\n native = false\n }\n }\n }\n\n // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\n const [targetRange] = (event as any).getTargetRanges()\n\n if (targetRange) {\n const range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n\n if (!selection || !Range.equals(selection, range)) {\n native = false\n\n const selectionRef =\n editor.selection && Editor.rangeRef(editor, editor.selection)\n\n Transforms.select(editor, range)\n\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef)\n }\n }\n }\n }\n\n if (!native) {\n event.preventDefault()\n }\n\n // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n if (\n selection &&\n Range.isExpanded(selection) &&\n type.startsWith('delete')\n ) {\n const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n Editor.deleteFragment(editor, { direction })\n return\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag': {\n Editor.deleteFragment(editor)\n break\n }\n\n case 'deleteContent':\n case 'deleteContentForward': {\n Editor.deleteForward(editor)\n break\n }\n\n case 'deleteContentBackward': {\n Editor.deleteBackward(editor)\n break\n }\n\n case 'deleteEntireSoftLine': {\n Editor.deleteBackward(editor, { unit: 'line' })\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineBackward': {\n Editor.deleteBackward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineBackward': {\n Editor.deleteBackward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineForward': {\n Editor.deleteForward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineForward': {\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteWordBackward': {\n Editor.deleteBackward(editor, { unit: 'word' })\n break\n }\n\n case 'deleteWordForward': {\n Editor.deleteForward(editor, { unit: 'word' })\n break\n }\n\n case 'insertLineBreak':\n Editor.insertSoftBreak(editor)\n break\n\n case 'insertParagraph': {\n Editor.insertBreak(editor)\n break\n }\n\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText': {\n const { selection } = editor\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n }\n }\n\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n }\n }\n\n // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n if (data?.constructor.name === 'DataTransfer') {\n ReactEditor.insertData(editor, data)\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() =>\n Editor.insertText(editor, data)\n )\n } else {\n Editor.insertText(editor, data)\n }\n }\n\n break\n }\n }\n\n // Restore the actual user section if nothing manually set it.\n const toRestore = EDITOR_TO_USER_SELECTION.get(editor)?.unref()\n EDITOR_TO_USER_SELECTION.delete(editor)\n\n if (\n toRestore &&\n (!editor.selection || !Range.equals(editor.selection, toRestore))\n ) {\n Transforms.select(editor, toRestore)\n }\n }\n },\n [readOnly, propsOnDOMBeforeInput]\n )\n\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n useIsomorphicLayoutEffect(() => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.addEventListener('beforeinput', onDOMBeforeInput)\n }\n\n return () => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput)\n }\n }\n }, [onDOMBeforeInput])\n\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n useIsomorphicLayoutEffect(() => {\n const window = ReactEditor.getWindow(editor)\n window.document.addEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n\n return () => {\n window.document.removeEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n }\n }, [scheduleOnDOMSelectionChange])\n\n const decorations = decorate([editor, []])\n\n if (\n placeholder &&\n editor.children.length === 1 &&\n Array.from(Node.texts(editor)).length === 1 &&\n Node.string(editor) === '' &&\n !isComposing\n ) {\n const start = Editor.start(editor, [])\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start,\n focus: start,\n })\n }\n\n return (\n <ReadOnlyContext.Provider value={readOnly}>\n <DecorateContext.Provider value={decorate}>\n <Component\n role={readOnly ? undefined : 'textbox'}\n {...attributes}\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n // have to use hacks to make these replacement-based features work.\n // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n // mismatch warning app moves to browser. Pass-through consumer props when\n // not CAN_USE_DOM (SSR) and default to falsy value\n spellCheck={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.spellCheck\n : false\n }\n autoCorrect={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.autoCorrect\n : 'false'\n }\n autoCapitalize={\n HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n ? attributes.autoCapitalize\n : 'false'\n }\n data-slate-editor\n data-slate-node=\"value\"\n // explicitly set this\n contentEditable={!readOnly}\n // in some cases, a decoration needs access to the range / selection to decorate a text node,\n // then you will select the whole text node when you select part the of text\n // this magic zIndex=\"-1\" will fix it\n zindex={-1}\n suppressContentEditableWarning\n ref={ref}\n style={{\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word',\n // Allow for passed-in styles to override anything.\n ...style,\n }}\n onBeforeInput={useCallback(\n (event: React.FormEvent<HTMLDivElement>) => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (\n !HAS_BEFORE_INPUT_SUPPORT &&\n !readOnly &&\n !isEventHandled(event, attributes.onBeforeInput) &&\n hasEditableTarget(editor, event.target)\n ) {\n event.preventDefault()\n if (!ReactEditor.isComposing(editor)) {\n const text = (event as any).data as string\n Editor.insertText(editor, text)\n }\n }\n },\n [readOnly]\n )}\n onInput={useCallback((event: React.SyntheticEvent) => {\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (const op of deferredOperations.current) {\n op()\n }\n deferredOperations.current = []\n }, [])}\n onBlur={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n readOnly ||\n state.isUpdatingSelection ||\n !hasEditableTarget(editor, event.target) ||\n isEventHandled(event, attributes.onBlur)\n ) {\n return\n }\n\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n if (state.latestElement === root.activeElement) {\n return\n }\n\n const { relatedTarget } = event\n const el = ReactEditor.toDOMNode(editor, editor)\n\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n if (relatedTarget === el) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (\n isDOMElement(relatedTarget) &&\n relatedTarget.hasAttribute('data-slate-spacer')\n ) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (\n relatedTarget != null &&\n isDOMNode(relatedTarget) &&\n ReactEditor.hasDOMNode(editor, relatedTarget)\n ) {\n const node = ReactEditor.toSlateNode(editor, relatedTarget)\n\n if (Element.isElement(node) && !editor.isVoid(node)) {\n return\n }\n }\n\n // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n if (IS_SAFARI) {\n const domSelection = root.getSelection()\n domSelection?.removeAllRanges()\n }\n\n IS_FOCUSED.delete(editor)\n },\n [readOnly, attributes.onBlur]\n )}\n onClick={useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onClick) &&\n isDOMNode(event.target)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (\n !Editor.hasPath(editor, path) ||\n Node.get(editor, path) !== node\n ) {\n return\n }\n\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n let blockPath = path\n if (!Editor.isBlock(editor, node)) {\n const block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: path,\n })\n\n blockPath = block?.[1] ?? path.slice(0, 1)\n }\n\n const range = Editor.range(editor, blockPath)\n Transforms.select(editor, range)\n return\n }\n\n if (readOnly) {\n return\n }\n\n const start = Editor.start(editor, path)\n const end = Editor.end(editor, path)\n const startVoid = Editor.void(editor, { at: start })\n const endVoid = Editor.void(editor, { at: end })\n\n if (\n startVoid &&\n endVoid &&\n Path.equals(startVoid[1], endVoid[1])\n ) {\n const range = Editor.range(editor, start)\n Transforms.select(editor, range)\n }\n }\n },\n [readOnly, attributes.onClick]\n )}\n onCompositionEnd={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionEnd)\n ) {\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n }\n\n // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n if (\n !IS_SAFARI &&\n !IS_FIREFOX_LEGACY &&\n !IS_IOS &&\n !IS_QQBROWSER &&\n !IS_WECHATBROWSER &&\n !IS_UC_MOBILE &&\n event.data\n ) {\n Editor.insertText(editor, event.data)\n }\n\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const leafPath = editor.selection.anchor.path\n const currentTextNode = Node.leaf(editor, leafPath)\n if (state.hasInsertPrefixInCompositon) {\n state.hasInsertPrefixInCompositon = false\n Editor.withoutNormalizing(editor, () => {\n // remove Unicode BOM prefix added in `onCompositionStart`\n const text = currentTextNode.text.replace(/^\\uFEFF/, '')\n Transforms.delete(editor, {\n distance: currentTextNode.text.length,\n reverse: true,\n })\n Editor.insertText(editor, text)\n })\n }\n }\n }\n },\n [attributes.onCompositionEnd]\n )}\n onCompositionUpdate={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionUpdate)\n ) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true)\n IS_COMPOSING.set(editor, true)\n }\n }\n },\n [attributes.onCompositionUpdate]\n )}\n onCompositionStart={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionStart)\n ) {\n const { selection, marks } = editor\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n return\n }\n const inline = Editor.above(editor, {\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n })\n if (inline) {\n const [, inlinePath] = inline\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n const point = Editor.after(editor, inlinePath)!\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point,\n })\n }\n }\n // insert new node in advance to ensure composition text will insert\n // along with final input text\n // add Unicode BOM prefix to avoid normalize removing this node\n if (marks) {\n state.hasInsertPrefixInCompositon = true\n Transforms.insertNodes(\n editor,\n {\n text: '\\uFEFF',\n ...marks,\n },\n {\n select: true,\n }\n )\n }\n }\n }\n },\n [attributes.onCompositionStart]\n )}\n onCopy={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCopy)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy')\n }\n },\n [attributes.onCopy]\n )}\n onCut={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCut)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut')\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n } else {\n const node = Node.parent(editor, selection.anchor.path)\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor)\n }\n }\n }\n }\n },\n [readOnly, attributes.onCut]\n )}\n onDragOver={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragOver)\n ) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n const node = ReactEditor.toSlateNode(editor, event.target)\n\n if (Editor.isVoid(editor, node)) {\n event.preventDefault()\n }\n }\n },\n [attributes.onDragOver]\n )}\n onDragStart={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragStart)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n const voidMatch =\n Editor.isVoid(editor, node) ||\n Editor.void(editor, { at: path, voids: true })\n\n // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n if (voidMatch) {\n const range = Editor.range(editor, path)\n Transforms.select(editor, range)\n }\n\n state.isDraggingInternally = true\n\n ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag')\n }\n },\n [readOnly, attributes.onDragStart]\n )}\n onDrop={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDrop)\n ) {\n event.preventDefault()\n\n // Keep a reference to the dragged range before updating selection\n const draggedRange = editor.selection\n\n // Find the range where the drop happened\n const range = ReactEditor.findEventRange(editor, event)\n const data = event.dataTransfer\n\n Transforms.select(editor, range)\n\n if (state.isDraggingInternally) {\n if (\n draggedRange &&\n !Range.equals(draggedRange, range) &&\n !Editor.void(editor, { at: range, voids: true })\n ) {\n Transforms.delete(editor, {\n at: draggedRange,\n })\n }\n }\n\n ReactEditor.insertData(editor, data)\n\n // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor)\n }\n }\n\n state.isDraggingInternally = false\n },\n [readOnly, attributes.onDrop]\n )}\n onDragEnd={useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n state.isDraggingInternally &&\n attributes.onDragEnd &&\n hasTarget(editor, event.target)\n ) {\n attributes.onDragEnd(event)\n }\n\n // When dropping on a different droppable element than the current editor,\n // `onDrop` is not called. So we need to clean up in `onDragEnd` instead.\n // Note: `onDragEnd` is only called when `onDrop` is not called\n state.isDraggingInternally = false\n },\n [readOnly, attributes.onDragEnd]\n )}\n onFocus={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n !state.isUpdatingSelection &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onFocus)\n ) {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n state.latestElement = root.activeElement\n\n // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target !== el) {\n el.focus()\n return\n }\n\n IS_FOCUSED.set(editor, true)\n }\n },\n [readOnly, attributes.onFocus]\n )}\n onKeyDown={useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!readOnly && hasEditableTarget(editor, event.target)) {\n const { nativeEvent } = event\n\n // COMPAT: The composition end event isn't fired reliably in all browsers,\n // so we sometimes might end up stuck in a composition state even though we\n // aren't composing any more.\n if (\n ReactEditor.isComposing(editor) &&\n nativeEvent.isComposing === false\n ) {\n IS_COMPOSING.set(editor, false)\n setIsComposing(false)\n }\n\n if (\n isEventHandled(event, attributes.onKeyDown) ||\n ReactEditor.isComposing(editor)\n ) {\n return\n }\n\n const { selection } = editor\n const element =\n editor.children[\n selection !== null ? selection.focus.path[0] : 0\n ]\n const isRTL = getDirection(Node.string(element)) === 'rtl'\n\n // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo()\n }\n\n return\n }\n\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.undo === 'function') {\n maybeHistoryEditor.undo()\n }\n\n return\n }\n\n // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', reverse: true })\n return\n }\n\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line' })\n return\n }\n\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true,\n })\n return\n }\n\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', edge: 'focus' })\n return\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: !isRTL })\n } else {\n Transforms.collapse(editor, { edge: 'start' })\n }\n\n return\n }\n\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: isRTL })\n } else {\n Transforms.collapse(editor, { edge: 'end' })\n }\n\n return\n }\n\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: !isRTL })\n return\n }\n\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: isRTL })\n return\n }\n\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (\n Hotkeys.isBold(nativeEvent) ||\n Hotkeys.isItalic(nativeEvent) ||\n Hotkeys.isTransposeCharacter(nativeEvent)\n ) {\n event.preventDefault()\n return\n }\n\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault()\n Editor.insertSoftBreak(editor)\n return\n }\n\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault()\n Editor.insertBreak(editor)\n return\n }\n\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'word' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'word' })\n }\n\n return\n }\n } else {\n if (IS_CHROME || IS_SAFARI) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (\n selection &&\n (Hotkeys.isDeleteBackward(nativeEvent) ||\n Hotkeys.isDeleteForward(nativeEvent)) &&\n Range.isCollapsed(selection)\n ) {\n const currentNode = Node.parent(\n editor,\n selection.anchor.path\n )\n\n if (\n Element.isElement(currentNode) &&\n Editor.isVoid(editor, currentNode) &&\n Editor.isInline(editor, currentNode)\n ) {\n event.preventDefault()\n Editor.deleteBackward(editor, { unit: 'block' })\n\n return\n }\n }\n }\n }\n }\n },\n [readOnly, attributes.onKeyDown]\n )}\n onPaste={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onPaste)\n ) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n if (\n !HAS_BEFORE_INPUT_SUPPORT ||\n isPlainTextOnlyPaste(event.nativeEvent)\n ) {\n event.preventDefault()\n ReactEditor.insertData(editor, event.clipboardData)\n }\n }\n },\n [readOnly, attributes.onPaste]\n )}\n >\n <Children\n decorations={decorations}\n node={editor}\n renderElement={renderElement}\n renderPlaceholder={renderPlaceholder}\n renderLeaf={renderLeaf}\n selection={editor.selection}\n />\n </Component>\n </DecorateContext.Provider>\n </ReadOnlyContext.Provider>\n )\n}\n\n/**\n * The props that get passed to renderPlaceholder\n */\nexport type RenderPlaceholderProps = {\n children: any\n attributes: {\n 'data-slate-placeholder': boolean\n dir?: 'rtl'\n contentEditable: boolean\n ref: React.RefObject<any>\n style: React.CSSProperties\n }\n}\n\n/**\n * The default placeholder element\n */\n\nexport const DefaultPlaceholder = ({\n attributes,\n children,\n}: RenderPlaceholderProps) => <span {...attributes}>{children}</span>\n\n/**\n * A default memoized decorate function.\n */\n\nexport const defaultDecorate: (entry: NodeEntry) => Range[] = () => []\n\n/**\n * A default implement to scroll dom range into view.\n */\n\nconst defaultScrollSelectionIntoView = (\n editor: ReactEditor,\n domRange: DOMRange\n) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (\n !editor.selection ||\n (editor.selection && Range.isCollapsed(editor.selection))\n ) {\n const leafEl = domRange.startContainer.parentElement!\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange)\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed',\n })\n delete leafEl.getBoundingClientRect\n }\n}\n\n/**\n * Check if the target is in the editor.\n */\n\nexport const hasTarget = (\n editor: ReactEditor,\n target: EventTarget | null\n): target is DOMNode => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target)\n}\n\n/**\n * Check if the target is editable and in the editor.\n */\n\nexport const hasEditableTarget = (\n editor: ReactEditor,\n target: EventTarget | null\n): target is DOMNode => {\n return (\n isDOMNode(target) &&\n ReactEditor.hasDOMNode(editor, target, { editable: true })\n )\n}\n\n/**\n * Check if the target is inside void and in an non-readonly editor.\n */\n\nexport const isTargetInsideNonReadonlyVoid = (\n editor: ReactEditor,\n target: EventTarget | null\n): boolean => {\n if (IS_READ_ONLY.get(editor)) return false\n\n const slateNode =\n hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target)\n return Editor.isVoid(editor, slateNode)\n}\n\n/**\n * Check if an event is overrided by a handler.\n */\n\nexport const isEventHandled = <\n EventType extends React.SyntheticEvent<unknown, unknown>\n>(\n event: EventType,\n handler?: (event: EventType) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.isDefaultPrevented() || event.isPropagationStopped()\n}\n\n/**\n * Check if a DOM event is overrided by a handler.\n */\n\nexport const isDOMEventHandled = <E extends Event>(\n event: E,\n handler?: (event: E) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.defaultPrevented\n}\n","import { Editor, Path, Range, Text } from 'slate'\n\nimport { ReactEditor } from '../../'\nimport { DOMNode } from '../../utils/dom'\n\nexport type Diff = {\n start: number\n end: number\n insertText: string\n removeText: string\n}\n\nexport interface TextInsertion {\n text: Diff\n path: Path\n}\n\ntype TextRange = {\n start: number\n end: number\n}\n\n/**\n * Returns the number of characters that are the same at the beginning of the\n * String.\n *\n * @param prev the previous text\n * @param next the next text\n * @returns the offset of the start of the difference; null if there is no difference\n */\nfunction getDiffStart(prev: string, next: string): number | null {\n const length = Math.min(prev.length, next.length)\n\n for (let i = 0; i < length; i++) {\n if (prev.charAt(i) !== next.charAt(i)) return i\n }\n\n if (prev.length !== next.length) return length\n return null\n}\n\n/**\n * Returns the number of characters that are the same at the end of the String\n * up to `max`. Max prevents double-counting characters when there are\n * multiple duplicate characters around the diff area.\n *\n * @param prev the previous text\n * @param next the next text\n * @param max the max length to test.\n * @returns number of characters that are the same at the end of the string\n */\nfunction getDiffEnd(prev: string, next: string, max: number): number | null {\n const prevLength = prev.length\n const nextLength = next.length\n const length = Math.min(prevLength, nextLength, max)\n\n for (let i = 0; i < length; i++) {\n const prevChar = prev.charAt(prevLength - i - 1)\n const nextChar = next.charAt(nextLength - i - 1)\n if (prevChar !== nextChar) return i\n }\n\n if (prev.length !== next.length) return length\n return null\n}\n\n/**\n * Takes two strings and returns an object representing two offsets. The\n * first, `start` represents the number of characters that are the same at\n * the front of the String. The `end` represents the number of characters\n * that are the same at the end of the String.\n *\n * Returns null if they are identical.\n *\n * @param prev the previous text\n * @param next the next text\n * @returns the difference text range; null if there are no differences.\n */\nfunction getDiffOffsets(prev: string, next: string): TextRange | null {\n if (prev === next) return null\n const start = getDiffStart(prev, next)\n if (start === null) return null\n const maxEnd = Math.min(prev.length - start, next.length - start)\n const end = getDiffEnd(prev, next, maxEnd)!\n if (end === null) return null\n return { start, end }\n}\n\n/**\n * Takes a text string and returns a slice from the string at the given text range\n *\n * @param text the text\n * @param offsets the text range\n * @returns the text slice at text range\n */\nfunction sliceText(text: string, offsets: TextRange): string {\n return text.slice(offsets.start, text.length - offsets.end)\n}\n\n/**\n * Takes two strings and returns a smart diff that can be used to describe the\n * change in a way that can be used as operations like inserting, removing or\n * replacing text.\n *\n * @param prev the previous text\n * @param next the next text\n * @returns the text difference\n */\nexport function diffText(prev?: string, next?: string): Diff | null {\n if (prev === undefined || next === undefined) return null\n const offsets = getDiffOffsets(prev, next)\n if (offsets == null) return null\n const insertText = sliceText(next, offsets)\n const removeText = sliceText(prev, offsets)\n return {\n start: offsets.start,\n end: prev.length - offsets.end,\n insertText,\n removeText,\n }\n}\n\nexport function combineInsertedText(insertedText: TextInsertion[]): string {\n return insertedText.reduce((acc, { text }) => `${acc}${text.insertText}`, '')\n}\n\nexport function getTextInsertion<T extends Editor>(\n editor: T,\n domNode: DOMNode\n): TextInsertion | undefined {\n const node = ReactEditor.toSlateNode(editor, domNode)\n\n if (!Text.isText(node)) {\n return undefined\n }\n\n const prevText = node.text\n let nextText = domNode.textContent!\n\n // textContent will pad an extra \\n when the textContent ends with an \\n\n if (nextText.endsWith('\\n')) {\n nextText = nextText.slice(0, nextText.length - 1)\n }\n\n // If the text is no different, there is no diff.\n if (nextText !== prevText) {\n const textDiff = diffText(prevText, nextText)\n if (textDiff !== null) {\n const textPath = ReactEditor.findPath(editor, node)\n\n return {\n text: textDiff,\n path: textPath,\n }\n }\n }\n\n return undefined\n}\n\nexport function normalizeTextInsertionRange(\n editor: Editor,\n range: Range | null,\n { path, text }: TextInsertion\n) {\n const insertionRange = {\n anchor: { path, offset: text.start },\n focus: { path, offset: text.end },\n }\n\n if (!range || !Range.isCollapsed(range)) {\n return insertionRange\n }\n\n const { insertText, removeText } = text\n const isSingleCharacterInsertion =\n insertText.length === 1 || removeText.length === 1\n\n /**\n * This code handles edge cases that arise from text diffing when the\n * inserted or removed character is a single character, and the character\n * right before or after the anchor is the same as the one being inserted or\n * removed.\n *\n * Take this example: hello|o\n *\n * If another `o` is inserted at the selection's anchor in the example above,\n * it should be inserted at the anchor, but using text diffing, we actually\n * detect that the character was inserted after the second `o`:\n *\n * helloo[o]|\n *\n * Instead, in these very specific edge cases, we assume that the character\n * needs to be inserted after the anchor rather than where the diff was found:\n *\n * hello[o]|o\n */\n if (isSingleCharacterInsertion && Path.equals(range.anchor.path, path)) {\n const [text] = Array.from(\n Editor.nodes(editor, { at: range, match: Text.isText })\n )\n\n if (text) {\n const [node] = text\n const { anchor } = range\n const characterBeforeAnchor = node.text[anchor.offset - 1]\n const characterAfterAnchor = node.text[anchor.offset]\n\n if (insertText.length === 1 && insertText === characterAfterAnchor) {\n // Assume text should be inserted at the anchor\n return range\n }\n\n if (removeText.length === 1 && removeText === characterBeforeAnchor) {\n // Assume text should be removed right before the anchor\n return {\n anchor: { path, offset: anchor.offset - 1 },\n focus: { path, offset: anchor.offset },\n }\n }\n }\n }\n\n return insertionRange\n}\n","/**\n * An auto-incrementing identifier for keys.\n */\n\nlet n = 0\n\n/**\n * A class that keeps track of a key string. We use a full class here because we\n * want to be able to use them as keys in `WeakMap` objects.\n */\n\nexport class Key {\n id: string\n\n constructor() {\n this.id = `${n++}`\n }\n}\n","import {\n BaseEditor,\n Editor,\n Node,\n Path,\n Point,\n Range,\n Scrubber,\n Transforms,\n} from 'slate'\n\nimport { Key } from '../utils/key'\nimport {\n EDITOR_TO_ELEMENT,\n ELEMENT_TO_NODE,\n IS_FOCUSED,\n IS_READ_ONLY,\n NODE_TO_INDEX,\n NODE_TO_KEY,\n NODE_TO_PARENT,\n EDITOR_TO_WINDOW,\n EDITOR_TO_KEY_TO_ELEMENT,\n IS_COMPOSING,\n} from '../utils/weak-maps'\nimport {\n DOMElement,\n DOMNode,\n DOMPoint,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n isDOMElement,\n isDOMSelection,\n normalizeDOMPoint,\n hasShadowRoot,\n} from '../utils/dom'\nimport { IS_CHROME, IS_FIREFOX } from '../utils/environment'\n\n/**\n * A React and DOM-specific version of the `Editor` interface.\n */\n\nexport interface ReactEditor extends BaseEditor {\n insertData: (data: DataTransfer) => void\n insertFragmentData: (data: DataTransfer) => boolean\n insertTextData: (data: DataTransfer) => boolean\n setFragmentData: (\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ) => void\n hasRange: (editor: ReactEditor, range: Range) => boolean\n}\n\nexport const ReactEditor = {\n /**\n * Check if the user is currently composing inside the editor.\n */\n\n isComposing(editor: ReactEditor): boolean {\n return !!IS_COMPOSING.get(editor)\n },\n\n /**\n * Return the host window of the current editor.\n */\n\n getWindow(editor: ReactEditor): Window {\n const window = EDITOR_TO_WINDOW.get(editor)\n if (!window) {\n throw new Error('Unable to find a host window element for this editor')\n }\n return window\n },\n\n /**\n * Find a key for a Slate node.\n */\n\n findKey(editor: ReactEditor, node: Node): Key {\n let key = NODE_TO_KEY.get(node)\n\n if (!key) {\n key = new Key()\n NODE_TO_KEY.set(node, key)\n }\n\n return key\n },\n\n /**\n * Find the path of Slate node.\n */\n\n findPath(editor: ReactEditor, node: Node): Path {\n const path: Path = []\n let child = node\n\n while (true) {\n const parent = NODE_TO_PARENT.get(child)\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path\n } else {\n break\n }\n }\n\n const i = NODE_TO_INDEX.get(child)\n\n if (i == null) {\n break\n }\n\n path.unshift(i)\n child = parent\n }\n\n throw new Error(\n `Unable to find the path for Slate node: ${Scrubber.stringify(node)}`\n )\n },\n\n /**\n * Find the DOM node that implements DocumentOrShadowRoot for the editor.\n */\n\n findDocumentOrShadowRoot(editor: ReactEditor): Document | ShadowRoot {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = el.getRootNode()\n\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n root.getSelection != null\n ) {\n return root\n }\n\n return el.ownerDocument\n },\n\n /**\n * Check if the editor is focused.\n */\n\n isFocused(editor: ReactEditor): boolean {\n return !!IS_FOCUSED.get(editor)\n },\n\n /**\n * Check if the editor is in read-only mode.\n */\n\n isReadOnly(editor: ReactEditor): boolean {\n return !!IS_READ_ONLY.get(editor)\n },\n\n /**\n * Blur the editor.\n */\n\n blur(editor: ReactEditor): void {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n IS_FOCUSED.set(editor, false)\n\n if (root.activeElement === el) {\n el.blur()\n }\n },\n\n /**\n * Focus the editor.\n */\n\n focus(editor: ReactEditor): void {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n IS_FOCUSED.set(editor, true)\n\n if (root.activeElement !== el) {\n el.focus({ preventScroll: true })\n }\n },\n\n /**\n * Deselect the editor.\n */\n\n deselect(editor: ReactEditor): void {\n const el = ReactEditor.toDOMNode(editor, editor)\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges()\n }\n\n if (selection) {\n Transforms.deselect(editor)\n }\n },\n\n /**\n * Check if a DOM node is within the editor.\n */\n\n hasDOMNode(\n editor: ReactEditor,\n target: DOMNode,\n options: { editable?: boolean } = {}\n ): boolean {\n const { editable = false } = options\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n let targetEl\n\n // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n try {\n targetEl = (isDOMElement(target)\n ? target\n : target.parentElement) as HTMLElement\n } catch (err) {\n if (\n !err.message.includes('Permission denied to access property \"nodeType\"')\n ) {\n throw err\n }\n }\n\n if (!targetEl) {\n return false\n }\n\n return (\n targetEl.closest(`[data-slate-editor]`) === editorEl &&\n (!editable || targetEl.isContentEditable\n ? true\n : (typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n targetEl.closest('[contenteditable=\"false\"]') === editorEl) ||\n !!targetEl.getAttribute('data-slate-zero-width'))\n )\n },\n\n /**\n * Insert data from a `DataTransfer` into the editor.\n */\n\n insertData(editor: ReactEditor, data: DataTransfer): void {\n editor.insertData(data)\n },\n\n /**\n * Insert fragment data from a `DataTransfer` into the editor.\n */\n\n insertFragmentData(editor: ReactEditor, data: DataTransfer): boolean {\n return editor.insertFragmentData(data)\n },\n\n /**\n * Insert text data from a `DataTransfer` into the editor.\n */\n\n insertTextData(editor: ReactEditor, data: DataTransfer): boolean {\n return editor.insertTextData(data)\n },\n\n /**\n * Sets data from the currently selected fragment on a `DataTransfer`.\n */\n\n setFragmentData(\n editor: ReactEditor,\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ): void {\n editor.setFragmentData(data, originEvent)\n },\n\n /**\n * Find the native DOM element from a Slate node.\n */\n\n toDOMNode(editor: ReactEditor, node: Node): HTMLElement {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n const domNode = Editor.isEditor(node)\n ? EDITOR_TO_ELEMENT.get(editor)\n : KEY_TO_ELEMENT?.get(ReactEditor.findKey(editor, node))\n\n if (!domNode) {\n throw new Error(\n `Cannot resolve a DOM node from Slate node: ${Scrubber.stringify(node)}`\n )\n }\n\n return domNode\n },\n\n /**\n * Find a native DOM selection point from a Slate point.\n */\n\n toDOMPoint(editor: ReactEditor, point: Point): DOMPoint {\n const [node] = Editor.node(editor, point.path)\n const el = ReactEditor.toDOMNode(editor, node)\n let domPoint: DOMPoint | undefined\n\n // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n if (Editor.void(editor, { at: point })) {\n point = { path: point.path, offset: 0 }\n }\n\n // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n const selector = `[data-slate-string], [data-slate-zero-width]`\n const texts = Array.from(el.querySelectorAll(selector))\n let start = 0\n\n for (const text of texts) {\n const domNode = text.childNodes[0] as HTMLElement\n\n if (domNode == null || domNode.textContent == null) {\n continue\n }\n\n const { length } = domNode.textContent\n const attr = text.getAttribute('data-slate-length')\n const trueLength = attr == null ? length : parseInt(attr, 10)\n const end = start + trueLength\n\n if (point.offset <= end) {\n const offset = Math.min(length, Math.max(0, point.offset - start))\n domPoint = [domNode, offset]\n break\n }\n\n start = end\n }\n\n if (!domPoint) {\n throw new Error(\n `Cannot resolve a DOM point from Slate point: ${Scrubber.stringify(\n point\n )}`\n )\n }\n\n return domPoint\n },\n\n /**\n * Find a native DOM range from a Slate `range`.\n *\n * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\n *\n * there is no way to create a reverse DOM Range using Range.setStart/setEnd\n * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\n */\n\n toDOMRange(editor: ReactEditor, range: Range): DOMRange {\n const { anchor, focus } = range\n const isBackward = Range.isBackward(range)\n const domAnchor = ReactEditor.toDOMPoint(editor, anchor)\n const domFocus = Range.isCollapsed(range)\n ? domAnchor\n : ReactEditor.toDOMPoint(editor, focus)\n\n const window = ReactEditor.getWindow(editor)\n const domRange = window.document.createRange()\n const [startNode, startOffset] = isBackward ? domFocus : domAnchor\n const [endNode, endOffset] = isBackward ? domAnchor : domFocus\n\n // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n // adjust the offset accordingly.\n const startEl = (isDOMElement(startNode)\n ? startNode\n : startNode.parentElement) as HTMLElement\n const isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width')\n const endEl = (isDOMElement(endNode)\n ? endNode\n : endNode.parentElement) as HTMLElement\n const isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width')\n\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset)\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset)\n return domRange\n },\n\n /**\n * Find a Slate node from a native DOM `element`.\n */\n\n toSlateNode(editor: ReactEditor, domNode: DOMNode): Node {\n let domEl = isDOMElement(domNode) ? domNode : domNode.parentElement\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(`[data-slate-node]`)\n }\n\n const node = domEl ? ELEMENT_TO_NODE.get(domEl as HTMLElement) : null\n\n if (!node) {\n throw new Error(`Cannot resolve a Slate node from DOM node: ${domEl}`)\n }\n\n return node\n },\n\n /**\n * Get the target range from a DOM `event`.\n */\n\n findEventRange(editor: ReactEditor, event: any): Range {\n if ('nativeEvent' in event) {\n event = event.nativeEvent\n }\n\n const { clientX: x, clientY: y, target } = event\n\n if (x == null || y == null) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n if (Editor.isVoid(editor, node)) {\n const rect = target.getBoundingClientRect()\n const isPrev = editor.isInline(node)\n ? x - rect.left < rect.left + rect.width - x\n : y - rect.top < rect.top + rect.height - y\n\n const edge = Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end',\n })\n const point = isPrev\n ? Editor.before(editor, edge)\n : Editor.after(editor, edge)\n\n if (point) {\n const range = Editor.range(editor, point)\n return range\n }\n }\n\n // Else resolve a range from the caret position where the drop occured.\n let domRange\n const { document } = ReactEditor.getWindow(editor)\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y)\n } else {\n const position = document.caretPositionFromPoint(x, y)\n\n if (position) {\n domRange = document.createRange()\n domRange.setStart(position.offsetNode, position.offset)\n domRange.setEnd(position.offsetNode, position.offset)\n }\n }\n\n if (!domRange) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n // Resolve a Slate range from the DOM range.\n const range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n return range\n },\n\n /**\n * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\n */\n\n toSlatePoint<T extends boolean>(\n editor: ReactEditor,\n domPoint: DOMPoint,\n options: {\n exactMatch: T\n suppressThrow: T\n }\n ): T extends true ? Point | null : Point {\n const { exactMatch, suppressThrow } = options\n const [nearestNode, nearestOffset] = exactMatch\n ? domPoint\n : normalizeDOMPoint(domPoint)\n const parentNode = nearestNode.parentNode as DOMElement\n let textNode: DOMElement | null = null\n let offset = 0\n\n if (parentNode) {\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n const potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]')\n // Need to ensure that the closest void node is actually a void node\n // within this editor, and not a void node within some parent editor. This can happen\n // if this editor is within a void node of another editor (\"nested editors\", like in\n // the \"Editable Voids\" example on the docs site).\n const voidNode =\n potentialVoidNode && editorEl.contains(potentialVoidNode)\n ? potentialVoidNode\n : null\n let leafNode = parentNode.closest('[data-slate-leaf]')\n let domNode: DOMElement | null = null\n\n // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')\n\n if (textNode) {\n const window = ReactEditor.getWindow(editor)\n const range = window.document.createRange()\n range.setStart(textNode, 0)\n range.setEnd(nearestNode, nearestOffset)\n\n const contents = range.cloneContents()\n const removals = [\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[data-slate-zero-width]')\n ),\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[contenteditable=false]')\n ),\n ]\n\n removals.forEach(el => {\n el!.parentNode!.removeChild(el)\n })\n\n // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-react\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n offset = contents.textContent!.length\n domNode = textNode\n }\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n leafNode = voidNode.querySelector('[data-slate-leaf]')!\n\n // COMPAT: In read-only editors the leaf is not rendered.\n if (!leafNode) {\n offset = 1\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')!\n domNode = leafNode\n offset = domNode.textContent!.length\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent!.length\n })\n }\n }\n\n if (\n domNode &&\n offset === domNode.textContent!.length &&\n // COMPAT: If the parent node is a Slate zero-width space, editor is\n // because the text node should have no characters. However, during IME\n // composition the ASCII characters will be prepended to the zero-width\n // space, so subtract 1 from the offset to account for the zero-width\n // space character.\n (parentNode.hasAttribute('data-slate-zero-width') ||\n // COMPAT: In Firefox, `range.cloneContents()` returns an extra trailing '\\n'\n // when the document ends with a new-line character. This results in the offset\n // length being off by one, so we need to subtract one to account for this.\n (IS_FIREFOX && domNode.textContent?.endsWith('\\n\\n')))\n ) {\n offset--\n }\n }\n\n if (!textNode) {\n if (suppressThrow) {\n return null as T extends true ? Point | null : Point\n }\n throw new Error(\n `Cannot resolve a Slate point from DOM point: ${domPoint}`\n )\n }\n\n // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n const slateNode = ReactEditor.toSlateNode(editor, textNode!)\n const path = ReactEditor.findPath(editor, slateNode)\n return { path, offset } as T extends true ? Point | null : Point\n },\n\n /**\n * Find a Slate range from a DOM range or selection.\n */\n\n toSlateRange<T extends boolean>(\n editor: ReactEditor,\n domRange: DOMRange | DOMStaticRange | DOMSelection,\n options: {\n exactMatch: T\n suppressThrow: T\n }\n ): T extends true ? Range | null : Range {\n const { exactMatch, suppressThrow } = options\n const el = isDOMSelection(domRange)\n ? domRange.anchorNode\n : domRange.startContainer\n let anchorNode\n let anchorOffset\n let focusNode\n let focusOffset\n let isCollapsed\n\n if (el) {\n if (isDOMSelection(domRange)) {\n anchorNode = domRange.anchorNode\n anchorOffset = domRange.anchorOffset\n focusNode = domRange.focusNode\n focusOffset = domRange.focusOffset\n // COMPAT: There's a bug in chrome that always returns `true` for\n // `isCollapsed` for a Selection that comes from a ShadowRoot.\n // (2020/08/08)\n // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n if (IS_CHROME && hasShadowRoot()) {\n isCollapsed =\n domRange.anchorNode === domRange.focusNode &&\n domRange.anchorOffset === domRange.focusOffset\n } else {\n isCollapsed = domRange.isCollapsed\n }\n } else {\n anchorNode = domRange.startContainer\n anchorOffset = domRange.startOffset\n focusNode = domRange.endContainer\n focusOffset = domRange.endOffset\n isCollapsed = domRange.collapsed\n }\n }\n\n if (\n anchorNode == null ||\n focusNode == null ||\n anchorOffset == null ||\n focusOffset == null\n ) {\n throw new Error(\n `Cannot resolve a Slate range from DOM range: ${domRange}`\n )\n }\n\n const anchor = ReactEditor.toSlatePoint(\n editor,\n [anchorNode, anchorOffset],\n { exactMatch, suppressThrow }\n )\n if (!anchor) {\n return null as T extends true ? Range | null : Range\n }\n\n const focus = isCollapsed\n ? anchor\n : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow,\n })\n if (!focus) {\n return null as T extends true ? Range | null : Range\n }\n\n let range: Range = { anchor: anchor as Point, focus: focus as Point }\n // if the selection is a hanging range that ends in a void\n // and the DOM focus is an Element\n // (meaning that the selection ends before the element)\n // unhang the range to avoid mistakenly including the void\n if (\n Range.isExpanded(range) &&\n Range.isForward(range) &&\n isDOMElement(focusNode) &&\n Editor.void(editor, { at: range.focus, mode: 'highest' })\n ) {\n range = Editor.unhangRange(editor, range, { voids: true })\n }\n\n return (range as unknown) as T extends true ? Range | null : Range\n },\n\n hasRange(editor: ReactEditor, range: Range): boolean {\n const { anchor, focus } = range\n return (\n Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path)\n )\n },\n}\n","import { Editor, Node, Path, Range } from 'slate'\n\nimport { DOMNode } from '../../utils/dom'\nimport { ReactEditor } from '../..'\nimport { TextInsertion, getTextInsertion } from './diff-text'\n\ninterface MutationData {\n addedNodes: DOMNode[]\n removedNodes: DOMNode[]\n insertedText: TextInsertion[]\n characterDataMutations: MutationRecord[]\n}\n\ntype MutationDetection = (editor: Editor, mutationData: MutationData) => boolean\n\nexport function gatherMutationData(\n editor: Editor,\n mutations: MutationRecord[]\n): MutationData {\n const addedNodes: DOMNode[] = []\n const removedNodes: DOMNode[] = []\n const insertedText: TextInsertion[] = []\n const characterDataMutations: MutationRecord[] = []\n\n mutations.forEach(mutation => {\n switch (mutation.type) {\n case 'childList': {\n if (mutation.addedNodes.length) {\n mutation.addedNodes.forEach(addedNode => {\n addedNodes.push(addedNode)\n })\n }\n\n mutation.removedNodes.forEach(removedNode => {\n removedNodes.push(removedNode)\n })\n\n break\n }\n case 'characterData': {\n characterDataMutations.push(mutation)\n\n // Changes to text nodes should consider the parent element\n const { parentNode } = mutation.target\n\n if (!parentNode) {\n return\n }\n\n const textInsertion = getTextInsertion(editor, parentNode)\n\n if (!textInsertion) {\n return\n }\n\n // If we've already detected a diff at that path, we can return early\n if (\n insertedText.some(({ path }) => Path.equals(path, textInsertion.path))\n ) {\n return\n }\n\n // Add the text diff to the array of detected text insertions that need to be reconciled\n insertedText.push(textInsertion)\n }\n }\n })\n\n return { addedNodes, removedNodes, insertedText, characterDataMutations }\n}\n\n/**\n * In general, when a line break occurs, there will be more `addedNodes` than `removedNodes`.\n *\n * This isn't always the case however. In some cases, there will be more `removedNodes` than\n * `addedNodes`.\n *\n * To account for these edge cases, the most reliable strategy to detect line break mutations\n * is to check whether a new block was inserted of the same type as the current block.\n */\nexport const isLineBreak: MutationDetection = (editor, { addedNodes }) => {\n const { selection } = editor\n const parentNode = selection\n ? Node.parent(editor, selection.anchor.path)\n : null\n const parentDOMNode = parentNode\n ? ReactEditor.toDOMNode(editor, parentNode)\n : null\n\n if (!parentDOMNode) {\n return false\n }\n\n return addedNodes.some(\n addedNode =>\n addedNode instanceof HTMLElement &&\n addedNode.tagName === parentDOMNode?.tagName\n )\n}\n\n/**\n * So long as we check for line break mutations before deletion mutations,\n * we can safely assume that a set of mutations was a deletion if there are\n * removed nodes.\n */\nexport const isDeletion: MutationDetection = (_, { removedNodes }) => {\n return removedNodes.length > 0\n}\n\n/**\n * If the selection was expanded and there are removed nodes,\n * the contents of the selection need to be replaced with the diff\n */\nexport const isReplaceExpandedSelection: MutationDetection = (\n { selection },\n { removedNodes }\n) => {\n return selection\n ? Range.isExpanded(selection) && removedNodes.length > 0\n : false\n}\n\n/**\n * Plain text insertion\n */\nexport const isTextInsertion: MutationDetection = (_, { insertedText }) => {\n return insertedText.length > 0\n}\n\n/**\n * Edge case. Detect mutations that remove leaf nodes and also update character data\n */\nexport const isRemoveLeafNodes: MutationDetection = (\n _,\n { addedNodes, characterDataMutations, removedNodes }\n) => {\n return (\n removedNodes.length > 0 &&\n addedNodes.length === 0 &&\n characterDataMutations.length > 0\n )\n}\n","import { ReactEditor } from '../../plugin/react-editor'\nimport { Editor, Range, Transforms, Text } from 'slate'\nimport {\n IS_ON_COMPOSITION_END,\n EDITOR_ON_COMPOSITION_TEXT,\n} from '../../utils/weak-maps'\n\nimport { DOMNode } from '../../utils/dom'\n\nimport {\n normalizeTextInsertionRange,\n combineInsertedText,\n TextInsertion,\n} from './diff-text'\nimport {\n gatherMutationData,\n isDeletion,\n isLineBreak,\n isRemoveLeafNodes,\n isReplaceExpandedSelection,\n isTextInsertion,\n} from './mutation-detection'\n\n// Replace with `const debug = console.log` to debug\nconst debug = (...message: any[]) => {}\n\n/**\n * Based loosely on:\n *\n * https://github.com/facebook/draft-js/blob/master/src/component/handlers/composition/DOMObserver.js\n * https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\n *\n * The input manager attempts to map observed mutations on the document to a\n * set of operations in order to reconcile Slate's internal value with the DOM.\n *\n * Mutations are processed synchronously as they come in. Only mutations that occur\n * during a user input loop are processed, as other mutations can occur within the\n * document that were not initiated by user input.\n *\n * The mutation reconciliation process attempts to match mutations to the following\n * patterns:\n *\n * - Text updates\n * - Deletions\n * - Line breaks\n *\n * @param editor\n * @param restoreDOM\n */\n\nexport class AndroidInputManager {\n constructor(private editor: ReactEditor, private restoreDOM: () => void) {\n this.editor = editor\n this.restoreDOM = restoreDOM\n }\n\n /**\n * Handle MutationObserver flush\n *\n * @param mutations\n */\n\n flush = (mutations: MutationRecord[]) => {\n debug('flush')\n\n try {\n this.reconcileMutations(mutations)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err)\n\n // Failed to reconcile mutations, restore DOM to its previous state\n this.restoreDOM()\n }\n }\n\n /**\n * Reconcile a batch of mutations\n *\n * @param mutations\n */\n\n private reconcileMutations = (mutations: MutationRecord[]) => {\n const mutationData = gatherMutationData(this.editor, mutations)\n const { insertedText, removedNodes } = mutationData\n\n debug('processMutations', mutations, mutationData)\n\n if (isReplaceExpandedSelection(this.editor, mutationData)) {\n const text = combineInsertedText(insertedText)\n this.replaceExpandedSelection(text)\n } else if (isLineBreak(this.editor, mutationData)) {\n this.insertBreak()\n } else if (isRemoveLeafNodes(this.editor, mutationData)) {\n this.removeLeafNodes(removedNodes)\n } else if (isDeletion(this.editor, mutationData)) {\n this.deleteBackward()\n } else if (isTextInsertion(this.editor, mutationData)) {\n this.insertText(insertedText)\n }\n }\n\n /**\n * Apply text diff\n */\n\n private insertText = (insertedText: TextInsertion[]) => {\n debug('insertText')\n\n const { selection } = this.editor\n\n // If it is in composing or after `onCompositionend`, set `EDITOR_ON_COMPOSITION_TEXT` and return.\n // Text will be inserted on compositionend event.\n if (\n ReactEditor.isComposing(this.editor) ||\n IS_ON_COMPOSITION_END.get(this.editor)\n ) {\n EDITOR_ON_COMPOSITION_TEXT.set(this.editor, insertedText)\n IS_ON_COMPOSITION_END.set(this.editor, false)\n return\n }\n\n // Insert the batched text diffs\n insertedText.forEach(insertion => {\n const text = insertion.text.insertText\n const at = normalizeTextInsertionRange(this.editor, selection, insertion)\n Transforms.setSelection(this.editor, at)\n Editor.insertText(this.editor, text)\n })\n }\n\n /**\n * Handle line breaks\n */\n\n private insertBreak = () => {\n debug('insertBreak')\n\n const { selection } = this.editor\n\n Editor.insertBreak(this.editor)\n\n this.restoreDOM()\n\n if (selection) {\n // Compat: Move selection to the newly inserted block if it has not moved\n setTimeout(() => {\n if (\n this.editor.selection &&\n Range.equals(selection, this.editor.selection)\n ) {\n Transforms.move(this.editor)\n }\n }, 100)\n }\n }\n\n /**\n * Handle expanded selection being deleted or replaced by text\n */\n\n private replaceExpandedSelection = (text: string) => {\n debug('replaceExpandedSelection')\n\n // Delete expanded selection\n Editor.deleteFragment(this.editor)\n\n if (text.length) {\n // Selection was replaced by text, insert the entire text diff\n Editor.insertText(this.editor, text)\n }\n\n this.restoreDOM()\n }\n\n /**\n * Handle `backspace` that merges blocks\n */\n\n private deleteBackward = () => {\n debug('deleteBackward')\n\n Editor.deleteBackward(this.editor)\n ReactEditor.focus(this.editor)\n\n this.restoreDOM()\n }\n\n /**\n * Handle mutations that remove specific leaves\n */\n private removeLeafNodes = (nodes: DOMNode[]) => {\n for (const node of nodes) {\n const slateNode = ReactEditor.toSlateNode(this.editor, node)\n\n if (slateNode) {\n const path = ReactEditor.findPath(this.editor, slateNode)\n\n Transforms.delete(this.editor, { at: path })\n this.restoreDOM()\n }\n }\n }\n}\n\nexport default AndroidInputManager\n","import { RefObject, useEffect, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect'\n\nexport function useMutationObserver(\n node: RefObject<HTMLElement>,\n callback: MutationCallback,\n options: MutationObserverInit\n) {\n const [mutationObserver] = useState(() => new MutationObserver(callback))\n\n useIsomorphicLayoutEffect(() => {\n // Disconnect mutation observer during render phase\n mutationObserver.disconnect()\n })\n\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined')\n }\n\n // Attach mutation observer after render phase has finished\n mutationObserver.observe(node.current, options)\n\n // Clean up after effect\n return mutationObserver.disconnect.bind(mutationObserver)\n })\n}\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport { Node as SlateNode, Path } from 'slate'\nimport { ReactEditor, useSlateStatic } from '../..'\nimport { DOMNode, isDOMElement } from '../../utils/dom'\nimport { ELEMENT_TO_NODE, NODE_TO_RESTORE_DOM } from '../../utils/weak-maps'\nimport { useMutationObserver } from './use-mutation-observer'\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n childList: true,\n characterData: true,\n subtree: true,\n}\n\nfunction findClosestKnowSlateNode(domNode: DOMNode): SlateNode | null {\n let domEl = isDOMElement(domNode) ? domNode : domNode.parentElement\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(`[data-slate-node]`)\n }\n\n const slateNode = domEl && ELEMENT_TO_NODE.get(domEl as HTMLElement)\n if (slateNode) {\n return slateNode\n }\n\n // Unknown dom element with a slate-slate-node attribute => the IME\n // most likely duplicated the node so we have to restore the parent\n return domEl?.parentElement\n ? findClosestKnowSlateNode(domEl.parentElement)\n : null\n}\n\nexport function useRestoreDom(\n node: React.RefObject<HTMLElement>,\n receivedUserInput: React.RefObject<boolean>\n) {\n const editor = useSlateStatic()\n const mutatedNodes = useRef<Set<SlateNode>>(new Set())\n\n const handleDOMMutation = useCallback((mutations: MutationRecord[]) => {\n if (!receivedUserInput.current) {\n return\n }\n\n mutations.forEach(({ target }) => {\n const slateNode = findClosestKnowSlateNode(target)\n if (!slateNode) {\n return\n }\n\n return mutatedNodes.current.add(slateNode)\n })\n }, [])\n\n useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG)\n\n // Clear mutated nodes on every render\n mutatedNodes.current.clear()\n const restore = useCallback(() => {\n const mutated = Array.from(mutatedNodes.current.values())\n\n // Filter out child nodes of nodes that will be restored anyway\n const nodesToRestore = mutated.filter(\n n =>\n !mutated.some(m =>\n Path.isParent(\n ReactEditor.findPath(editor, m),\n ReactEditor.findPath(editor, n)\n )\n )\n )\n\n nodesToRestore.forEach(n => {\n NODE_TO_RESTORE_DOM.get(n)?.()\n })\n\n mutatedNodes.current.clear()\n }, [])\n\n return restore\n}\n","import { RefObject, useCallback, useMemo, useRef, useState } from 'react'\n\nimport { useSlateStatic } from '../../hooks/use-slate-static'\n\nimport { AndroidInputManager } from './android-input-manager'\nimport { useRestoreDom } from './use-restore-dom'\nimport { useMutationObserver } from './use-mutation-observer'\nimport { useTrackUserInput } from './use-track-user-input'\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true,\n}\n\nexport function useAndroidInputManager(node: RefObject<HTMLElement>) {\n const editor = useSlateStatic()\n\n const { receivedUserInput, onUserInput } = useTrackUserInput()\n const restoreDom = useRestoreDom(node, receivedUserInput)\n\n const inputManager = useMemo(\n () => new AndroidInputManager(editor, restoreDom),\n [restoreDom, editor]\n )\n\n const timeoutId = useRef<ReturnType<typeof setTimeout> | null>(null)\n const isReconciling = useRef(false)\n const flush = useCallback((mutations: MutationRecord[]) => {\n if (!receivedUserInput.current) {\n return\n }\n\n isReconciling.current = true\n inputManager.flush(mutations)\n\n if (timeoutId.current) {\n clearTimeout(timeoutId.current)\n }\n\n timeoutId.current = setTimeout(() => {\n isReconciling.current = false\n timeoutId.current = null\n }, 250)\n }, [])\n\n useMutationObserver(node, flush, MUTATION_OBSERVER_CONFIG)\n\n return {\n isReconciling,\n onUserInput,\n }\n}\n","import { useCallback, useEffect, useRef } from 'react'\n\nimport { ReactEditor } from '../..'\nimport { useSlateStatic } from '../../hooks/use-slate-static'\n\nexport function useTrackUserInput() {\n const editor = useSlateStatic()\n const receivedUserInput = useRef<boolean>(false)\n const animationFrameRef = useRef<number | null>(null)\n const onUserInput = useCallback(() => {\n if (receivedUserInput.current === false) {\n const window = ReactEditor.getWindow(editor)\n\n receivedUserInput.current = true\n\n if (animationFrameRef.current) {\n window.cancelAnimationFrame(animationFrameRef.current)\n }\n\n animationFrameRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false\n animationFrameRef.current = null\n })\n }\n }, [])\n\n useEffect(() => {\n // Reset user input tracking on every render\n if (receivedUserInput.current) {\n receivedUserInput.current = false\n }\n })\n\n return {\n receivedUserInput,\n onUserInput,\n }\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Editor, Element, Node, Range, Transforms, Path, Text } from 'slate'\nimport throttle from 'lodash/throttle'\nimport debounce from 'lodash/debounce'\nimport scrollIntoView from 'scroll-into-view-if-needed'\n\nimport { DefaultPlaceholder, ReactEditor } from '../..'\nimport { ReadOnlyContext } from '../../hooks/use-read-only'\nimport { useSlate } from '../../hooks/use-slate'\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect'\nimport { DecorateContext } from '../../hooks/use-decorate'\nimport {\n DOMElement,\n isDOMElement,\n isDOMNode,\n getDefaultView,\n getClipboardData,\n} from '../../utils/dom'\nimport {\n EDITOR_TO_ELEMENT,\n EDITOR_TO_WINDOW,\n ELEMENT_TO_NODE,\n IS_FOCUSED,\n IS_READ_ONLY,\n NODE_TO_ELEMENT,\n PLACEHOLDER_SYMBOL,\n IS_COMPOSING,\n IS_ON_COMPOSITION_END,\n EDITOR_ON_COMPOSITION_TEXT,\n} from '../../utils/weak-maps'\nimport { normalizeTextInsertionRange } from './diff-text'\n\nimport { EditableProps, hasTarget } from '../editable'\nimport useChildren from '../../hooks/use-children'\nimport {\n defaultDecorate,\n hasEditableTarget,\n isEventHandled,\n isDOMEventHandled,\n isTargetInsideNonReadonlyVoid,\n} from '../editable'\n\nimport { useAndroidInputManager } from './use-android-input-manager'\nimport { useContentKey } from '../../hooks/use-content-key'\n\n/**\n * Editable.\n */\n\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nconst RESOLVE_DELAY = 20\n\nexport const AndroidEditable = (props: EditableProps): JSX.Element => {\n const {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = props => <DefaultPlaceholder {...props} />,\n style = {},\n as: Component = 'div',\n ...attributes\n } = props\n const editor = useSlate()\n // Rerender editor when composition status changed\n const [isComposing, setIsComposing] = useState(false)\n const ref = useRef<HTMLDivElement>(null)\n const inputManager = useAndroidInputManager(ref)\n\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly)\n\n // Keep track of some state for the event handler logic.\n const state = useMemo(\n () => ({\n isComposing: false,\n isUpdatingSelection: false,\n latestElement: null as DOMElement | null,\n }),\n []\n )\n\n const contentKey = useContentKey(editor)\n\n // Whenever the editor updates...\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n let window\n\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window)\n EDITOR_TO_ELEMENT.set(editor, ref.current)\n NODE_TO_ELEMENT.set(editor, ref.current)\n ELEMENT_TO_NODE.set(ref.current, editor)\n } else {\n NODE_TO_ELEMENT.delete(editor)\n }\n\n try {\n // Make sure the DOM selection state is in sync.\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (\n state.isComposing ||\n !domSelection ||\n !ReactEditor.isFocused(editor)\n ) {\n return\n }\n\n const hasDomSelection = domSelection.type !== 'None'\n\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return\n }\n\n // verify that the dom selection is in the editor\n const editorElement = EDITOR_TO_ELEMENT.get(editor)!\n let hasDomSelectionInEditor = false\n if (\n editorElement.contains(domSelection.anchorNode) &&\n editorElement.contains(domSelection.focusNode)\n ) {\n hasDomSelectionInEditor = true\n }\n\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n const slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true,\n })\n if (slateRange && Range.equals(slateRange, selection)) {\n return\n }\n }\n\n // when <Editable/> is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false,\n })\n return\n }\n\n // Otherwise the DOM selection is out of sync, so update it.\n const el = ReactEditor.toDOMNode(editor, editor)\n state.isUpdatingSelection = true\n\n const newDomRange = selection && ReactEditor.toDOMRange(editor, selection)\n\n if (newDomRange) {\n if (Range.isBackward(selection!)) {\n domSelection.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset\n )\n } else {\n domSelection.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset\n )\n }\n const leafEl = newDomRange.startContainer.parentElement!\n leafEl.getBoundingClientRect = newDomRange.getBoundingClientRect.bind(\n newDomRange\n )\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed',\n boundary: el,\n })\n // @ts-ignore\n delete leafEl.getBoundingClientRect\n } else {\n domSelection.removeAllRanges()\n }\n\n setTimeout(() => {\n state.isUpdatingSelection = false\n })\n } catch {\n // Failed to update selection, likely due to reconciliation error\n state.isUpdatingSelection = false\n }\n })\n\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus()\n }\n }, [autoFocus])\n\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n const onDOMSelectionChange = useCallback(\n throttle(() => {\n try {\n if (\n !state.isComposing &&\n !state.isUpdatingSelection &&\n !inputManager.isReconciling.current\n ) {\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const { activeElement } = root\n const el = ReactEditor.toDOMNode(editor, editor)\n const domSelection = root.getSelection()\n\n if (activeElement === el) {\n state.latestElement = activeElement\n IS_FOCUSED.set(editor, true)\n } else {\n IS_FOCUSED.delete(editor)\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor)\n }\n\n const { anchorNode, focusNode } = domSelection\n\n const anchorNodeSelectable =\n hasEditableTarget(editor, anchorNode) ||\n isTargetInsideNonReadonlyVoid(editor, anchorNode)\n\n const focusNodeSelectable =\n hasEditableTarget(editor, focusNode) ||\n isTargetInsideNonReadonlyVoid(editor, focusNode)\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n const range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false,\n })\n Transforms.select(editor, range)\n } else {\n Transforms.deselect(editor)\n }\n }\n } catch {\n // Failed to update selection, likely due to reconciliation error\n }\n }, 100),\n [readOnly]\n )\n\n const scheduleOnDOMSelectionChange = useMemo(\n () => debounce(onDOMSelectionChange, 0),\n [onDOMSelectionChange]\n )\n\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n const onDOMBeforeInput = useCallback(\n (event: InputEvent) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isDOMEventHandled(event, propsOnDOMBeforeInput)\n ) {\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush()\n\n inputManager.onUserInput()\n }\n },\n [readOnly, propsOnDOMBeforeInput]\n )\n\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n useIsomorphicLayoutEffect(() => {\n const node = ref.current\n\n // @ts-ignore The `beforeinput` event isn't recognized.\n node?.addEventListener('beforeinput', onDOMBeforeInput)\n\n // @ts-ignore The `beforeinput` event isn't recognized.\n return () => node?.removeEventListener('beforeinput', onDOMBeforeInput)\n }, [contentKey, propsOnDOMBeforeInput])\n\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n useIsomorphicLayoutEffect(() => {\n const window = ReactEditor.getWindow(editor)\n window.document.addEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n\n return () => {\n window.document.removeEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n }\n }, [scheduleOnDOMSelectionChange])\n\n const decorations = decorate([editor, []])\n\n if (\n placeholder &&\n editor.children.length === 1 &&\n Array.from(Node.texts(editor)).length === 1 &&\n Node.string(editor) === '' &&\n !isComposing\n ) {\n const start = Editor.start(editor, [])\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start,\n focus: start,\n })\n }\n\n return (\n <ReadOnlyContext.Provider value={readOnly}>\n <DecorateContext.Provider value={decorate}>\n <Component\n key={contentKey}\n role={readOnly ? undefined : 'textbox'}\n {...attributes}\n spellCheck={attributes.spellCheck}\n autoCorrect={attributes.autoCorrect}\n autoCapitalize={attributes.autoCapitalize}\n data-slate-editor\n data-slate-node=\"value\"\n contentEditable={readOnly ? undefined : true}\n suppressContentEditableWarning\n ref={ref}\n style={{\n // Allow positioning relative to the editable element.\n position: 'relative',\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word',\n // Allow for passed-in styles to override anything.\n ...style,\n }}\n onCopy={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCopy)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(editor, event.clipboardData, 'copy')\n }\n },\n [attributes.onCopy]\n )}\n onCut={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCut)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(editor, event.clipboardData, 'cut')\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n } else {\n const node = Node.parent(editor, selection.anchor.path)\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor)\n }\n }\n }\n }\n },\n [readOnly, attributes.onCut]\n )}\n onFocus={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n !state.isUpdatingSelection &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onFocus)\n ) {\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n state.latestElement = root.activeElement\n\n IS_FOCUSED.set(editor, true)\n }\n },\n [readOnly, attributes.onFocus]\n )}\n onBlur={useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n readOnly ||\n state.isUpdatingSelection ||\n !hasEditableTarget(editor, event.target) ||\n isEventHandled(event, attributes.onBlur)\n ) {\n return\n }\n\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n if (state.latestElement === root.activeElement) {\n return\n }\n\n const { relatedTarget } = event\n const el = ReactEditor.toDOMNode(editor, editor)\n\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an <input>\n // element inside a void node).\n if (relatedTarget === el) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (\n isDOMElement(relatedTarget) &&\n relatedTarget.hasAttribute('data-slate-spacer')\n ) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (\n relatedTarget != null &&\n isDOMNode(relatedTarget) &&\n ReactEditor.hasDOMNode(editor, relatedTarget)\n ) {\n const node = ReactEditor.toSlateNode(editor, relatedTarget)\n\n if (Element.isElement(node) && !editor.isVoid(node)) {\n return\n }\n }\n\n IS_FOCUSED.delete(editor)\n },\n [readOnly, attributes.onBlur]\n )}\n onClick={useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (\n !readOnly &&\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onClick) &&\n isDOMNode(event.target)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (Editor.hasPath(editor, path)) {\n const lookupNode = Node.get(editor, path)\n if (lookupNode === node) {\n const start = Editor.start(editor, path)\n const end = Editor.end(editor, path)\n\n const startVoid = Editor.void(editor, { at: start })\n const endVoid = Editor.void(editor, { at: end })\n\n if (\n startVoid &&\n endVoid &&\n Path.equals(startVoid[1], endVoid[1])\n ) {\n const range = Editor.range(editor, start)\n Transforms.select(editor, range)\n }\n }\n }\n }\n },\n [readOnly, attributes.onClick]\n )}\n onCompositionEnd={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionEnd)\n ) {\n scheduleOnDOMSelectionChange.flush()\n setTimeout(() => {\n state.isComposing && setIsComposing(false)\n state.isComposing = false\n\n IS_COMPOSING.set(editor, false)\n IS_ON_COMPOSITION_END.set(editor, true)\n\n const insertedText =\n EDITOR_ON_COMPOSITION_TEXT.get(editor) || []\n\n // `insertedText` is set in `MutationObserver` constructor.\n // If open phone keyboard association function, `CompositionEvent` will be triggered.\n if (!insertedText.length) {\n return\n }\n\n EDITOR_ON_COMPOSITION_TEXT.set(editor, [])\n\n const { selection } = editor\n\n insertedText.forEach(insertion => {\n const text = insertion.text.insertText\n const at = normalizeTextInsertionRange(\n editor,\n selection,\n insertion\n )\n Transforms.setSelection(editor, at)\n Editor.insertText(editor, text)\n })\n }, RESOLVE_DELAY)\n }\n },\n [attributes.onCompositionEnd]\n )}\n onCompositionUpdate={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionUpdate)\n ) {\n !state.isComposing && setIsComposing(true)\n state.isComposing = true\n IS_COMPOSING.set(editor, true)\n }\n },\n [attributes.onCompositionUpdate]\n )}\n onCompositionStart={useCallback(\n (event: React.CompositionEvent<HTMLDivElement>) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionStart)\n ) {\n !state.isComposing && setIsComposing(true)\n state.isComposing = true\n IS_COMPOSING.set(editor, true)\n }\n },\n [attributes.onCompositionStart]\n )}\n onPaste={useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n // this will make application/x-slate-fragment exist when onPaste attributes is passed\n event.clipboardData = getClipboardData(event.clipboardData)\n // This unfortunately needs to be handled with paste events instead.\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onPaste) &&\n !readOnly\n ) {\n event.preventDefault()\n ReactEditor.insertData(editor, event.clipboardData)\n }\n },\n [readOnly, attributes.onPaste]\n )}\n >\n {useChildren({\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection,\n })}\n </Component>\n </DecorateContext.Provider>\n </ReadOnlyContext.Provider>\n )\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\n\nexport const FocusedContext = createContext(false)\n\n/**\n * Get the current `focused` state of the editor.\n */\n\nexport const useFocused = (): boolean => {\n return useContext(FocusedContext)\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport { Editor } from 'slate'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\nfunction isError(error: any): error is Error {\n return error instanceof Error\n}\n\ntype EditorChangeHandler = (editor: Editor) => void\n/**\n * A React context for sharing the editor selector context in a way to control rerenders\n */\n\nexport const SlateSelectorContext = createContext<{\n getSlate: () => Editor\n addEventListener: (callback: EditorChangeHandler) => () => void\n}>({} as any)\n\nconst refEquality = (a: any, b: any) => a === b\n\n/**\n * use redux style selectors to prevent rerendering on every keystroke.\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\n *\n * Example:\n * ```\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\n * ```\n */\nexport function useSlateSelector<T>(\n selector: (editor: Editor) => T,\n equalityFn: (a: T, b: T) => boolean = refEquality\n) {\n const [, forceRender] = useReducer(s => s + 1, 0)\n const context = useContext(SlateSelectorContext)\n if (!context) {\n throw new Error(\n `The \\`useSlateSelector\\` hook must be used inside the <Slate> component's context.`\n )\n }\n const { getSlate, addEventListener } = context\n\n const latestSubscriptionCallbackError = useRef<Error | undefined>()\n const latestSelector = useRef<(editor: Editor) => T>(() => null as any)\n const latestSelectedState = useRef<T>((null as any) as T)\n let selectedState: T\n\n try {\n if (\n selector !== latestSelector.current ||\n latestSubscriptionCallbackError.current\n ) {\n selectedState = selector(getSlate())\n } else {\n selectedState = latestSelectedState.current\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\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 useIsomorphicLayoutEffect(() => {\n latestSelector.current = selector\n latestSelectedState.current = selectedState\n latestSubscriptionCallbackError.current = undefined\n })\n\n useIsomorphicLayoutEffect(\n () => {\n function checkForUpdates() {\n try {\n const newSelectedState = latestSelector.current(getSlate())\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return\n }\n\n latestSelectedState.current = newSelectedState\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err\n }\n\n forceRender()\n }\n\n const unsubscribe = addEventListener(checkForUpdates)\n\n checkForUpdates()\n\n return () => unsubscribe()\n },\n // don't rerender on equalityFn change since we want to be able to define it inline\n [addEventListener, getSlate]\n )\n\n return selectedState\n}\n\n/**\n * Create selector context with editor updating on every editor change\n */\nexport function getSelectorContext(editor: Editor) {\n const eventListeners = useRef<EditorChangeHandler[]>([]).current\n const slateRef = useRef<{\n editor: Editor\n }>({\n editor,\n }).current\n const onChange = useCallback((editor: Editor) => {\n slateRef.editor = editor\n eventListeners.forEach((listener: EditorChangeHandler) => listener(editor))\n }, [])\n\n const selectorContext = useMemo(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: (callback: EditorChangeHandler) => {\n eventListeners.push(callback)\n return () => {\n eventListeners.splice(eventListeners.indexOf(callback), 1)\n }\n },\n }\n }, [eventListeners, slateRef])\n return { selectorContext, onChange }\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react'\nimport { Editor, Node, Descendant, Scrubber } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { FocusedContext } from '../hooks/use-focused'\nimport { EditorContext } from '../hooks/use-slate-static'\nimport { SlateContext } from '../hooks/use-slate'\nimport {\n getSelectorContext,\n SlateSelectorContext,\n} from '../hooks/use-slate-selector'\nimport { EDITOR_TO_ON_CHANGE } from '../utils/weak-maps'\nimport { IS_REACT_VERSION_17_OR_ABOVE } from '../utils/environment'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\n\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\n\nexport const Slate = (props: {\n editor: ReactEditor\n value: Descendant[]\n children: React.ReactNode\n onChange?: (value: Descendant[]) => void\n}) => {\n const { editor, children, onChange, value, ...rest } = props\n const unmountRef = useRef(false)\n\n const [context, setContext] = React.useState<[ReactEditor]>(() => {\n if (!Node.isNodeList(value)) {\n throw new Error(\n `[Slate] value is invalid! Expected a list of elements` +\n `but got: ${Scrubber.stringify(value)}`\n )\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\n `[Slate] editor is invalid! you passed:` +\n `${Scrubber.stringify(editor)}`\n )\n }\n editor.children = value\n Object.assign(editor, rest)\n return [editor]\n })\n\n const {\n selectorContext,\n onChange: handleSelectorChange,\n } = getSelectorContext(editor)\n\n const onContextChange = useCallback(() => {\n if (onChange) {\n onChange(editor.children)\n }\n\n setContext([editor])\n handleSelectorChange(editor)\n }, [onChange])\n\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange)\n\n useEffect(() => {\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {})\n unmountRef.current = true\n }\n }, [])\n\n const [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor))\n\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor))\n })\n\n useIsomorphicLayoutEffect(() => {\n const fn = () => setIsFocused(ReactEditor.isFocused(editor))\n if (IS_REACT_VERSION_17_OR_ABOVE) {\n // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n // Therefore in order for <Editable />'s handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n document.addEventListener('focusin', fn)\n document.addEventListener('focusout', fn)\n return () => {\n document.removeEventListener('focusin', fn)\n document.removeEventListener('focusout', fn)\n }\n } else {\n document.addEventListener('focus', fn, true)\n document.addEventListener('blur', fn, true)\n return () => {\n document.removeEventListener('focus', fn, true)\n document.removeEventListener('blur', fn, true)\n }\n }\n }, [])\n\n return (\n <SlateSelectorContext.Provider value={selectorContext}>\n <SlateContext.Provider value={context}>\n <EditorContext.Provider value={editor}>\n <FocusedContext.Provider value={isFocused}>\n {children}\n </FocusedContext.Provider>\n </EditorContext.Provider>\n </SlateContext.Provider>\n </SlateSelectorContext.Provider>\n )\n}\n","/**\n * Utilities for single-line deletion\n */\n\nimport { Range, Editor } from 'slate'\nimport { ReactEditor } from '..'\n\nconst doRectsIntersect = (rect: DOMRect, compareRect: DOMRect) => {\n const middle = (compareRect.top + compareRect.bottom) / 2\n\n return rect.top <= middle && rect.bottom >= middle\n}\n\nconst areRangesSameLine = (\n editor: ReactEditor,\n range1: Range,\n range2: Range\n) => {\n const rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect()\n const rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect()\n\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1)\n}\n\n/**\n * A helper utility that returns the end portion of a `Range`\n * which is located on a single line.\n *\n * @param {Editor} editor The editor object to compare against\n * @param {Range} parentRange The parent range to compare against\n * @returns {Range} A valid portion of the parentRange which is one a single line\n */\nexport const findCurrentLineRange = (\n editor: ReactEditor,\n parentRange: Range\n): Range => {\n const parentRangeBoundary = Editor.range(editor, Range.end(parentRange))\n const positions = Array.from(Editor.positions(editor, { at: parentRange }))\n\n let left = 0\n let right = positions.length\n let middle = Math.floor(right / 2)\n\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[left]),\n parentRangeBoundary\n )\n ) {\n return Editor.range(editor, positions[left], parentRangeBoundary)\n }\n\n if (positions.length < 2) {\n return Editor.range(\n editor,\n positions[positions.length - 1],\n parentRangeBoundary\n )\n }\n\n while (middle !== positions.length && middle !== left) {\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[middle]),\n parentRangeBoundary\n )\n ) {\n right = middle\n } else {\n left = middle\n }\n\n middle = Math.floor((left + right) / 2)\n }\n\n return Editor.range(editor, positions[right], parentRangeBoundary)\n}\n","import ReactDOM from 'react-dom'\nimport { Editor, Node, Path, Operation, Transforms, Range } from 'slate'\n\nimport { ReactEditor } from './react-editor'\nimport { Key } from '../utils/key'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n EDITOR_TO_ON_CHANGE,\n NODE_TO_KEY,\n EDITOR_TO_USER_SELECTION,\n} from '../utils/weak-maps'\nimport {\n isDOMText,\n getPlainText,\n getSlateFragmentAttribute,\n} from '../utils/dom'\nimport { findCurrentLineRange } from '../utils/lines'\n\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withReact = <T extends Editor>(editor: T) => {\n const e = editor as T & ReactEditor\n const { apply, onChange, deleteBackward } = e\n\n // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n // avoid collisions between editors in the DOM that share the same value.\n EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap())\n\n e.deleteBackward = unit => {\n if (unit !== 'line') {\n return deleteBackward(unit)\n }\n\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const parentBlockEntry = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: editor.selection,\n })\n\n if (parentBlockEntry) {\n const [, parentBlockPath] = parentBlockEntry\n const parentElementRange = Editor.range(\n editor,\n parentBlockPath,\n editor.selection.anchor\n )\n\n const currentLineRange = findCurrentLineRange(e, parentElementRange)\n\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(editor, { at: currentLineRange })\n }\n }\n }\n }\n\n // This attempts to reset the NODE_TO_KEY entry to the correct value\n // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n e.apply = (op: Operation) => {\n const matches: [Path, Key][] = []\n\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n case 'split_node': {\n matches.push(...getMatches(e, op.path))\n break\n }\n\n case 'set_selection': {\n // Selection was manually set, don't restore the user selection after the change.\n EDITOR_TO_USER_SELECTION.get(editor)?.unref()\n EDITOR_TO_USER_SELECTION.delete(editor)\n break\n }\n\n case 'insert_node':\n case 'remove_node': {\n matches.push(...getMatches(e, Path.parent(op.path)))\n break\n }\n\n case 'merge_node': {\n const prevPath = Path.previous(op.path)\n matches.push(...getMatches(e, prevPath))\n break\n }\n\n case 'move_node': {\n const commonPath = Path.common(\n Path.parent(op.path),\n Path.parent(op.newPath)\n )\n matches.push(...getMatches(e, commonPath))\n break\n }\n }\n\n apply(op)\n\n for (const [path, key] of matches) {\n const [node] = Editor.node(e, path)\n NODE_TO_KEY.set(node, key)\n }\n }\n\n e.setFragmentData = (data: Pick<DataTransfer, 'getData' | 'setData'>) => {\n const { selection } = e\n\n if (!selection) {\n return\n }\n\n const [start, end] = Range.edges(selection)\n const startVoid = Editor.void(e, { at: start.path })\n const endVoid = Editor.void(e, { at: end.path })\n\n if (Range.isCollapsed(selection) && !startVoid) {\n return\n }\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n const domRange = ReactEditor.toDOMRange(e, selection)\n let contents = domRange.cloneContents()\n let attach = contents.childNodes[0] as HTMLElement\n\n // Make sure attach is non-empty, since empty nodes will not get copied.\n contents.childNodes.forEach(node => {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node as HTMLElement\n }\n })\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n const [voidNode] = endVoid\n const r = domRange.cloneRange()\n const domNode = ReactEditor.toDOMNode(e, voidNode)\n r.setEndAfter(domNode)\n contents = r.cloneContents()\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.querySelector('[data-slate-spacer]')! as HTMLElement\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(\n zw => {\n const isNewline = zw.getAttribute('data-slate-zero-width') === 'n'\n zw.textContent = isNewline ? '\\n' : ''\n }\n )\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (isDOMText(attach)) {\n const span = attach.ownerDocument.createElement('span')\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre'\n span.appendChild(attach)\n contents.appendChild(span)\n attach = span\n }\n\n const fragment = e.getFragment()\n const string = JSON.stringify(fragment)\n const encoded = window.btoa(encodeURIComponent(string))\n attach.setAttribute('data-slate-fragment', encoded)\n data.setData('application/x-slate-fragment', encoded)\n\n // Add the content to a <div> so that we can get its inner HTML.\n const div = contents.ownerDocument.createElement('div')\n div.appendChild(contents)\n div.setAttribute('hidden', 'true')\n contents.ownerDocument.body.appendChild(div)\n data.setData('text/html', div.innerHTML)\n data.setData('text/plain', getPlainText(div))\n contents.ownerDocument.body.removeChild(div)\n return data\n }\n\n e.insertData = (data: DataTransfer) => {\n if (!e.insertFragmentData(data)) {\n e.insertTextData(data)\n }\n }\n\n e.insertFragmentData = (data: DataTransfer): boolean => {\n /**\n * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\n */\n const fragment =\n data.getData('application/x-slate-fragment') ||\n getSlateFragmentAttribute(data)\n\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment))\n const parsed = JSON.parse(decoded) as Node[]\n e.insertFragment(parsed)\n return true\n }\n return false\n }\n\n e.insertTextData = (data: DataTransfer): boolean => {\n const text = data.getData('text/plain')\n\n if (text) {\n const lines = text.split(/\\r\\n|\\r|\\n/)\n let split = false\n\n for (const line of lines) {\n if (split) {\n Transforms.splitNodes(e, { always: true })\n }\n\n e.insertText(line)\n split = true\n }\n return true\n }\n return false\n }\n\n e.onChange = () => {\n // COMPAT: React doesn't batch `setState` hook calls, which means that the\n // children and selection can get out of sync for one render pass. So we\n // have to use this unstable API to ensure it batches them. (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n ReactDOM.unstable_batchedUpdates(() => {\n const onContextChange = EDITOR_TO_ON_CHANGE.get(e)\n\n if (onContextChange) {\n onContextChange()\n }\n\n onChange()\n })\n }\n\n return e\n}\n\nconst getMatches = (e: Editor, path: Path) => {\n const matches: [Path, Key][] = []\n for (const [n, p] of Editor.levels(e, { at: path })) {\n const key = ReactEditor.findKey(e, n)\n matches.push([p, key])\n }\n return matches\n}\n","export const TRIPLE_CLICK = 3\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\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","'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 baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.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 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, 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; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil â¤ï¸\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n before = _this.prepend ? _this.container.firstChild : _this.before;\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-ms-input-placeholder|-moz-read-write|-moz-read-only){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} value\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string} type\n * @param {string[]} props\n * @param {object[]} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {string} type\n */\nexport function copy (value, root, type) {\n\treturn node(value, root.root, root.parent, type, root.props, root.children, 0)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\treturn delimiter(type === 34 || type === 39 ? type : character)\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// \" ' [ (\n\t\t\tcase 34: case 39: case 91: case 40:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, length, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {string}\n */\nexport function prefix (value, length) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// flex, flex-direction\n\t\tcase 6828: case 4268:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// (s)ticky?\n\t\t\tif (charat(value, length + 1) !== 115)\n\t\t\t\tbreak\n\t\t// display: (flex|inline-flex)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n\t\t\t\t// stic(k)y\n\t\t\t\tcase 107:\n\t\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\t\t// (inline-)?fl(e)x\n\t\t\t\tcase 101:\n\t\t\t\t\treturn replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t}\n\t\t\tbreak\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t}\n\n\t\t\treturn WEBKIT + value + MS + value + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (!element.return)\n\t\tswitch (element.type) {\n\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length)\n\t\t\t\tbreak\n\t\t\tcase KEYFRAMES:\n\t\t\t\treturn serialize([copy(replace(element.value, '@', '@' + WEBKIT), element, '')], callback)\n\t\t\tcase RULESET:\n\t\t\t\tif (element.length)\n\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\treturn serialize([copy(replace(value, /:(read-\\w+)/, ':' + MOZ + '$1'), element, '')], callback)\n\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1'), element, ''),\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, ':' + MOZ + '$1'), element, ''),\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, MS + 'input-$1'), element, '')\n\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ''\n\t\t\t\t\t})\n\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\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 { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, identifier, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifier(position - 1);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n !element.length) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule') return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n\n if (prevElement && isIgnoringComment(last(prevElement.children))) {\n return;\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import { createContext, forwardRef, useContext, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z0-9$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, typeof cssProp === 'function' || Array.isArray(cssProp) ? useContext(ThemeContext) : undefined);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, useLayoutEffect } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-a8309070.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-a8309070.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.4.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"isolated-hoist-non-react-statics-do-not-use-this-in-your-code\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"mitchellhamilton <mitchell@mitchellhamilton.me>\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.13.10\",\n\t\t\"@emotion/cache\": \"^11.4.0\",\n\t\t\"@emotion/serialize\": \"^1.0.2\",\n\t\t\"@emotion/sheet\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.0.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.2.5\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.13.10\",\n\t\t\"@emotion/css\": \"11.1.3\",\n\t\t\"@emotion/css-prettifier\": \"1.0.0\",\n\t\t\"@emotion/server\": \"11.4.0\",\n\t\t\"@emotion/styled\": \"11.3.0\",\n\t\t\"@types/react\": \"^16.9.11\",\n\t\tdtslint: \"^0.3.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./isolated-hoist-non-react-statics-do-not-use-this-in-your-code.js\"\n\t\t],\n\t\tumdName: \"emotionReact\"\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, typeof styles === 'function' || Array.isArray(styles) ? useContext(ThemeContext) : undefined);\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useLayoutEffect(function () {\n var key = cache.key + \"-global\";\n var sheet = new StyleSheet({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useLayoutEffect(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n\n {\n insertStyles(cache, serialized, false);\n }\n\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n var isJest = typeof jest !== 'undefined';\n\n if (isBrowser && !isJest) {\n var globalContext = isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\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\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\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\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\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}","function _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, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport AutosizeInput from 'react-input-autosize';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty$1 from '@babel/runtime/helpers/esm/defineProperty';\nimport { createContext, Component } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _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\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\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\n return _possibleConstructorReturn(this, result);\n };\n}\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n //className\n props.className;\n props.clearValue;\n props.cx;\n props.getStyles;\n props.getValue;\n props.hasValue;\n props.isMulti;\n props.isRtl;\n props.options;\n props.selectOption;\n props.selectProps;\n props.setValue;\n props.theme;\n var innerProps = _objectWithoutProperties(props, [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"]);\n\n return _objectSpread2({}, innerProps);\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n} // ==============================\n// Passive Event Detector\n// ==============================\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\n\nvar passiveOptionAccessed = false;\nvar options = {\n get passive() {\n return passiveOptionAccessed = true;\n }\n\n}; // check for SSR\n\nvar w = typeof window !== 'undefined' ? window : {};\n\nif (w.addEventListener && w.removeEventListener) {\n w.addEventListener('p', noop, options);\n w.removeEventListener('p', noop, false);\n}\n\nvar supportsPassiveEvents = passiveOptionAccessed;\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n if (shouldScroll) {\n scrollTo(scrollParent, scrollDown);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty$1(_ref3, alignToControl(placement), '100%'), _defineProperty$1(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty$1(_ref3, \"borderRadius\", borderRadius), _defineProperty$1(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty$1(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty$1(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty$1(_ref3, \"position\", 'absolute'), _defineProperty$1(_ref3, \"width\", '100%'), _defineProperty$1(_ref3, \"zIndex\", 1), _ref3;\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n _inherits(MenuPlacer, _Component);\n\n var _super = _createSuper(MenuPlacer);\n\n function MenuPlacer() {\n var _this;\n\n _classCallCheck(this, MenuPlacer);\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 maxHeight: _this.props.maxMenuHeight,\n placement: null\n };\n\n _this.getPlacement = function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n };\n\n _this.getUpdatedProps = function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread2(_objectSpread2({}, _this.props), {}, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n };\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n innerRef = props.innerRef,\n isMulti = props.isMulti;\n return jsx(\"div\", _extends({\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n var _super2 = _createSuper(MenuPortal);\n\n function MenuPortal() {\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _this2.state = {\n placement: null\n };\n\n _this2.getPortalPlacement = function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n };\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n className = _this$props2.className,\n controlElement = _this$props2.controlElement,\n cx = _this$props2.cx,\n innerProps = _this$props2.innerProps,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", _extends({\n css: getStyles('menuPortal', state),\n className: cx({\n 'menu-portal': true\n }, className)\n }, innerProps), children);\n return jsx(PortalPlacementContext.Provider, {\n value: {\n getPortalPlacement: this.getPortalPlacement\n }\n }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer = function ValueContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n isMulti = props.isMulti,\n getStyles = props.getStyles,\n hasValue = props.hasValue;\n return jsx(\"div\", _extends({\n css: getStyles('valueContainer', props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n getStyles = props.getStyles;\n return jsx(\"div\", _extends({\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, innerProps), children);\n};\n\nvar _templateObject;\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"8mmkcg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n name: \"tj5bde-Svg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }, innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }, innerProps), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css: /*#__PURE__*/css$2({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }, innerProps), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n innerProps = props.innerProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", _extends({\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, innerProps), jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var getStyles = props.getStyles,\n cx = props.cx,\n className = props.className;\n\n var _cleanCommonProps = cleanCommonProps(props);\n _cleanCommonProps.data;\n var innerProps = _objectWithoutProperties(_cleanCommonProps, [\"data\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', props),\n className: cx({\n 'group-heading': true\n }, className)\n }, innerProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n\n var _cleanCommonProps = cleanCommonProps(props),\n innerRef = _cleanCommonProps.innerRef,\n isDisabled = _cleanCommonProps.isDisabled,\n isHidden = _cleanCommonProps.isHidden,\n innerProps = _objectWithoutProperties(_cleanCommonProps, [\"innerRef\", \"isDisabled\", \"isHidden\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', props)\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, innerProps)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n var children = _ref5.children,\n innerProps = _ref5.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n}\n\nvar MultiValue = function MultiValue(props) {\n var children = props.children,\n className = props.className,\n components = props.components,\n cx = props.cx,\n data = props.data,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n removeProps = props.removeProps,\n selectProps = props.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref6) {\n var css = _ref6.css,\n emotionCx = _ref6.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValue', props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }, innerProps),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n};\n\nMultiValue.defaultProps = {\n cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread2(_objectSpread2({}, components), props.components);\n};\n\nexport { isMobileDevice as A, classNames as B, defaultComponents as C, isDocumentElement as D, cleanValue as E, scrollIntoView as F, noop as G, handleInputChange as H, MenuPlacer as M, _createSuper as _, _objectSpread2 as a, clearIndicatorCSS as b, components as c, containerCSS as d, css as e, dropdownIndicatorCSS as f, groupCSS as g, groupHeadingCSS as h, indicatorsContainerCSS as i, indicatorSeparatorCSS as j, inputCSS as k, loadingIndicatorCSS as l, loadingMessageCSS as m, menuCSS as n, menuListCSS as o, menuPortalCSS as p, multiValueCSS as q, multiValueLabelCSS as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css$1 as x, valueContainerCSS as y, isTouchCapable as z };\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _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}","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { a as _objectSpread2, s as supportsPassiveEvents, b as clearIndicatorCSS, d as containerCSS, e as css$1, f as dropdownIndicatorCSS, g as groupCSS, h as groupHeadingCSS, i as indicatorsContainerCSS, j as indicatorSeparatorCSS, k as inputCSS, l as loadingIndicatorCSS, m as loadingMessageCSS, n as menuCSS, o as menuListCSS, p as menuPortalCSS, q as multiValueCSS, r as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, _ as _createSuper, B as classNames, C as defaultComponents, D as isDocumentElement, E as cleanValue, F as scrollIntoView, G as noop, M as MenuPlacer } from './index-4bd03571.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport React, { useMemo, useRef, useCallback, useEffect, Component } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"7pg0cj-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n name: \"1f43avz-a11yText-A11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbmNvbnN0IEExMXlUZXh0ID0gKHByb3BzOiBFbGVtZW50Q29uZmlnPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nvar defaultAriaLiveMessages = {\n guidance: function guidance(props) {\n var isSearchable = props.isSearchable,\n isMulti = props.isMulti,\n isDisabled = props.isDisabled,\n tabSelectsValue = props.tabSelectsValue,\n context = props.context;\n\n switch (context) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n case 'input':\n return \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n\n default:\n return '';\n }\n },\n onChange: function onChange(props) {\n var action = props.action,\n _props$label = props.label,\n label = _props$label === void 0 ? '' : _props$label,\n isDisabled = props.isDisabled;\n\n switch (action) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(label, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n\n default:\n return '';\n }\n },\n onFocus: function onFocus(props) {\n var context = props.context,\n _props$focused = props.focused,\n focused = _props$focused === void 0 ? {} : _props$focused,\n options = props.options,\n _props$label2 = props.label,\n label = _props$label2 === void 0 ? '' : _props$label2,\n selectValue = props.selectValue,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected;\n\n var getArrayIndex = function getArrayIndex(arr, item) {\n return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n };\n\n if (context === 'value' && selectValue) {\n return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n }\n\n if (context === 'menu') {\n var disabled = isDisabled ? ' disabled' : '';\n var status = \"\".concat(isSelected ? 'selected' : 'focused').concat(disabled);\n return \"option \".concat(label, \" \").concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n }\n\n return '';\n },\n onFilter: function onFilter(props) {\n var inputValue = props.inputValue,\n resultsMessage = props.resultsMessage;\n return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n var ariaSelection = props.ariaSelection,\n focusedOption = props.focusedOption,\n focusedValue = props.focusedValue,\n focusableOptions = props.focusableOptions,\n isFocused = props.isFocused,\n selectValue = props.selectValue,\n selectProps = props.selectProps;\n var ariaLiveMessages = selectProps.ariaLiveMessages,\n getOptionLabel = selectProps.getOptionLabel,\n inputValue = selectProps.inputValue,\n isMulti = selectProps.isMulti,\n isOptionDisabled = selectProps.isOptionDisabled,\n isSearchable = selectProps.isSearchable,\n menuIsOpen = selectProps.menuIsOpen,\n options = selectProps.options,\n screenReaderStatus = selectProps.screenReaderStatus,\n tabSelectsValue = selectProps.tabSelectsValue;\n var ariaLabel = selectProps['aria-label'];\n var ariaLive = selectProps['aria-live']; // Update aria live message configuration when prop changes\n\n var messages = useMemo(function () {\n return _objectSpread2(_objectSpread2({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n }, [ariaLiveMessages]); // Update aria live selected option when prop changes\n\n var ariaSelected = useMemo(function () {\n var message = '';\n\n if (ariaSelection && messages.onChange) {\n var option = ariaSelection.option,\n removedValue = ariaSelection.removedValue,\n value = ariaSelection.value; // select-option when !isMulti does not return option so we assume selected option is value\n\n var asOption = function asOption(val) {\n return !Array.isArray(val) ? val : null;\n };\n\n var selected = removedValue || option || asOption(value);\n\n var onChangeProps = _objectSpread2({\n isDisabled: selected && isOptionDisabled(selected),\n label: selected ? getOptionLabel(selected) : ''\n }, ariaSelection);\n\n message = messages.onChange(onChangeProps);\n }\n\n return message;\n }, [ariaSelection, isOptionDisabled, getOptionLabel, messages]);\n var ariaFocused = useMemo(function () {\n var focusMsg = '';\n var focused = focusedOption || focusedValue;\n var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n\n if (focused && messages.onFocus) {\n var onFocusProps = {\n focused: focused,\n label: getOptionLabel(focused),\n isDisabled: isOptionDisabled(focused),\n isSelected: isSelected,\n options: options,\n context: focused === focusedOption ? 'menu' : 'value',\n selectValue: selectValue\n };\n focusMsg = messages.onFocus(onFocusProps);\n }\n\n return focusMsg;\n }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, options, selectValue]);\n var ariaResults = useMemo(function () {\n var resultsMsg = '';\n\n if (menuIsOpen && options.length && messages.onFilter) {\n var resultsMessage = screenReaderStatus({\n count: focusableOptions.length\n });\n resultsMsg = messages.onFilter({\n inputValue: inputValue,\n resultsMessage: resultsMessage\n });\n }\n\n return resultsMsg;\n }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]);\n var ariaGuidance = useMemo(function () {\n var guidanceMsg = '';\n\n if (messages.guidance) {\n var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n guidanceMsg = messages.guidance({\n 'aria-label': ariaLabel,\n context: context,\n isDisabled: focusedOption && isOptionDisabled(focusedOption),\n isMulti: isMulti,\n isSearchable: isSearchable,\n tabSelectsValue: tabSelectsValue\n });\n }\n\n return guidanceMsg;\n }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, tabSelectsValue]);\n var ariaContext = \"\".concat(ariaFocused, \" \").concat(ariaResults, \" \").concat(ariaGuidance);\n return jsx(A11yText, {\n \"aria-live\": ariaLive,\n \"aria-atomic\": \"false\",\n \"aria-relevant\": \"additions text\"\n }, isFocused && jsx(React.Fragment, null, jsx(\"span\", {\n id: \"aria-selection\"\n }, ariaSelected), jsx(\"span\", {\n id: \"aria-context\"\n }, ariaContext)));\n};\n\nvar diacritics = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n var diacritic = diacritics[i];\n\n for (var j = 0; j < diacritic.letters.length; j++) {\n diacriticToBase[diacritic.letters[j]] = diacritic.base;\n }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n return str.replace(anyDiacritic, function (match) {\n return diacriticToBase[match];\n });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread2({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = memoizedStripDiacriticsForInput(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nfunction DummyInput(_ref) {\n _ref.in;\n _ref.out;\n _ref.onExited;\n _ref.appear;\n _ref.enter;\n _ref.exit;\n var innerRef = _ref.innerRef;\n _ref.emotion;\n var props = _objectWithoutProperties(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css: /*#__PURE__*/css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbjogaW5Qcm9wLFxuICBvdXQsXG4gIG9uRXhpdGVkLFxuICBhcHBlYXIsXG4gIGVudGVyLFxuICBleGl0LFxuICBpbm5lclJlZixcbiAgZW1vdGlvbixcbiAgLi4ucHJvcHNcbn06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgcmVmPXtpbm5lclJlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")\n }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n event.preventDefault();\n event.stopPropagation();\n};\n\nfunction useScrollCapture(_ref) {\n var isEnabled = _ref.isEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var isBottom = useRef(false);\n var isTop = useRef(false);\n var touchStart = useRef(0);\n var scrollTarget = useRef(null);\n var handleEventDelta = useCallback(function (event, delta) {\n // Reference should never be `null` at this point, but flow complains otherwise\n if (scrollTarget.current === null) return;\n var _scrollTarget$current = scrollTarget.current,\n scrollTop = _scrollTarget$current.scrollTop,\n scrollHeight = _scrollTarget$current.scrollHeight,\n clientHeight = _scrollTarget$current.clientHeight;\n var target = scrollTarget.current;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && isBottom.current) {\n if (onBottomLeave) onBottomLeave(event);\n isBottom.current = false;\n }\n\n if (isDeltaPositive && isTop.current) {\n if (onTopLeave) onTopLeave(event);\n isTop.current = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !isBottom.current) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n isBottom.current = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !isTop.current) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n isTop.current = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n cancelScroll(event);\n }\n }, []);\n var onWheel = useCallback(function (event) {\n handleEventDelta(event, event.deltaY);\n }, [handleEventDelta]);\n var onTouchStart = useCallback(function (event) {\n // set touch start so we can calculate touchmove delta\n touchStart.current = event.changedTouches[0].clientY;\n }, []);\n var onTouchMove = useCallback(function (event) {\n var deltaY = touchStart.current - event.changedTouches[0].clientY;\n handleEventDelta(event, deltaY);\n }, [handleEventDelta]);\n var startListening = useCallback(function (el) {\n // bail early if no element is available to attach to\n if (!el) return;\n var notPassive = supportsPassiveEvents ? {\n passive: false\n } : false; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', onWheel, notPassive);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', onTouchStart, notPassive);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', onTouchMove, notPassive);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n var stopListening = useCallback(function (el) {\n // bail early if no element is available to detach from\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', onTouchMove, false);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n startListening(element);\n return function () {\n stopListening(element);\n };\n }, [isEnabled, startListening, stopListening]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n capture: false,\n passive: false\n};\nfunction useScrollLock(_ref) {\n var isEnabled = _ref.isEnabled,\n _ref$accountForScroll = _ref.accountForScrollbars,\n accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n var originalStyles = useRef({});\n var scrollTarget = useRef(null);\n var addScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n originalStyles.current[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }, []);\n var removeScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = originalStyles.current[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n }\n }, []);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n addScrollLock(element);\n return function () {\n removeScrollLock(element);\n };\n }, [isEnabled, addScrollLock, removeScrollLock]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar blurSelectInput = function blurSelectInput() {\n return document.activeElement && document.activeElement.blur();\n};\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"1kfdb0e\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n name: \"bp8cua-ScrollManager\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0RVIiwiZmlsZSI6IlNjcm9sbE1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVNjcm9sbENhcHR1cmUgZnJvbSAnLi91c2VTY3JvbGxDYXB0dXJlJztcbmltcG9ydCB1c2VTY3JvbGxMb2NrIGZyb20gJy4vdXNlU2Nyb2xsTG9jayc7XG5cbnR5cGUgUmVmQ2FsbGJhY2s8VD4gPSAoVCB8IG51bGwpID0+IHZvaWQ7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiAoUmVmQ2FsbGJhY2s8SFRNTEVsZW1lbnQ+KSA9PiBFbGVtZW50PCo+LFxuICBsb2NrRW5hYmxlZDogYm9vbGVhbixcbiAgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW4sXG4gIG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudD4pID0+IHZvaWQsXG4gIG9uQm90dG9tTGVhdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BBcnJpdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BMZWF2ZT86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkLFxufTtcblxuY29uc3QgYmx1clNlbGVjdElucHV0ID0gKCkgPT5cbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmID0gZWxlbWVudCA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\nfunction ScrollManager(_ref) {\n var children = _ref.children,\n lockEnabled = _ref.lockEnabled,\n _ref$captureEnabled = _ref.captureEnabled,\n captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var setScrollCaptureTarget = useScrollCapture({\n isEnabled: captureEnabled,\n onBottomArrive: onBottomArrive,\n onBottomLeave: onBottomLeave,\n onTopArrive: onTopArrive,\n onTopLeave: onTopLeave\n });\n var setScrollLockTarget = useScrollLock({\n isEnabled: lockEnabled\n });\n\n var targetRef = function targetRef(element) {\n setScrollCaptureTarget(element);\n setScrollLockTarget(element);\n };\n\n return jsx(React.Fragment, null, lockEnabled && jsx(\"div\", {\n onClick: blurSelectInput,\n css: _ref2\n }), children(targetRef));\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css$1,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$2,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread2({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n 'aria-live': 'polite',\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\n\nfunction toCategorizedOption(props, option, selectValue, index) {\n var isDisabled = _isOptionDisabled(props, option, selectValue);\n\n var isSelected = _isOptionSelected(props, option, selectValue);\n\n var label = getOptionLabel$1(props, option);\n var value = getOptionValue$1(props, option);\n return {\n type: 'option',\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n label: label,\n value: value,\n index: index\n };\n}\n\nfunction buildCategorizedOptions(props, selectValue) {\n return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n if (groupOrOption.options) {\n var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n return toCategorizedOption(props, option, selectValue, optionIndex);\n }).filter(function (categorizedOption) {\n return isFocusable(props, categorizedOption);\n });\n return categorizedOptions.length > 0 ? {\n type: 'group',\n data: groupOrOption,\n options: categorizedOptions,\n index: groupOrOptionIndex\n } : undefined;\n }\n\n var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n }) // Flow limitation (see https://github.com/facebook/flow/issues/1414)\n .filter(function (categorizedOption) {\n return !!categorizedOption;\n });\n}\n\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n if (categorizedOption.type === 'group') {\n optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n return option.data;\n })));\n } else {\n optionsAccumulator.push(categorizedOption.data);\n }\n\n return optionsAccumulator;\n }, []);\n}\n\nfunction buildFocusableOptions(props, selectValue) {\n return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\n\nfunction isFocusable(props, categorizedOption) {\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n var data = categorizedOption.data,\n isSelected = categorizedOption.isSelected,\n label = categorizedOption.label,\n value = categorizedOption.value;\n return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n label: label,\n value: value,\n data: data\n }, inputValue);\n}\n\nfunction getNextFocusedValue(state, nextSelectValue) {\n var focusedValue = state.focusedValue,\n lastSelectValue = state.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n}\n\nfunction getNextFocusedOption(state, options) {\n var lastFocusedOption = state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\n\nvar getOptionLabel$1 = function getOptionLabel(props, data) {\n return props.getOptionLabel(data);\n};\n\nvar getOptionValue$1 = function getOptionValue(props, data) {\n return props.getOptionValue(data);\n};\n\nfunction _isOptionDisabled(props, option, selectValue) {\n return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\n\nfunction _isOptionSelected(props, option, selectValue) {\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof props.isOptionSelected === 'function') {\n return props.isOptionSelected(option, selectValue);\n }\n\n var candidate = getOptionValue$1(props, option);\n return selectValue.some(function (i) {\n return getOptionValue$1(props, i) === candidate;\n });\n}\n\nfunction _filterOption(props, option, inputValue) {\n return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\n\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n var hideSelectedOptions = props.hideSelectedOptions,\n isMulti = props.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n};\n\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n _inherits(Select, _Component);\n\n var _super = _createSuper(Select);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _super.call(this, _props);\n _this.state = {\n ariaSelection: null,\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n selectValue: [],\n clearFocusValueOnUpdate: false,\n inputIsHiddenAfterUpdate: undefined,\n prevProps: undefined\n };\n _this.blockOptionHover = false;\n _this.isComposing = false;\n _this.commonProps = void 0;\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n _this.instancePrefix = '';\n _this.openAfterFocus = false;\n _this.scrollToFocusedOptionOnUpdate = false;\n _this.userIsDragging = void 0;\n _this.controlRef = null;\n\n _this.getControlRef = function (ref) {\n _this.controlRef = ref;\n };\n\n _this.focusedOptionRef = null;\n\n _this.getFocusedOptionRef = function (ref) {\n _this.focusedOptionRef = ref;\n };\n\n _this.menuListRef = null;\n\n _this.getMenuListRef = function (ref) {\n _this.menuListRef = ref;\n };\n\n _this.inputRef = null;\n\n _this.getInputRef = function (ref) {\n _this.inputRef = ref;\n };\n\n _this.focus = _this.focusInput;\n _this.blur = _this.blurInput;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n actionMeta.name = name;\n\n _this.ariaOnChange(newValue, actionMeta);\n\n onChange(newValue, actionMeta);\n };\n\n _this.setValue = function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.setState({\n clearFocusValueOnUpdate: true\n });\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n };\n\n _this.selectOption = function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti,\n name = _this$props3.name;\n var selectValue = _this.state.selectValue;\n\n var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n\n var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n\n if (deselected) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n } else if (!isDisabled) {\n // Select option if option is not disabled\n if (isMulti) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n } else {\n _this.setValue(newValue, 'select-option');\n }\n } else {\n _this.ariaOnChange(newValue, {\n action: 'select-option',\n name: name\n });\n\n return;\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n };\n\n _this.removeValue = function (removedValue) {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValueArray = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n var newValue = isMulti ? newValueArray : newValueArray[0] || null;\n\n _this.onChange(newValue, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.focusInput();\n };\n\n _this.clearValue = function () {\n var selectValue = _this.state.selectValue;\n\n _this.onChange(_this.props.isMulti ? [] : null, {\n action: 'clear',\n removedValues: selectValue\n });\n };\n\n _this.popValue = function () {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValueArray = selectValue.slice(0, selectValue.length - 1);\n var newValue = isMulti ? newValueArray : newValueArray[0] || null;\n\n _this.onChange(newValue, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n };\n\n _this.getValue = function () {\n return _this.state.selectValue;\n };\n\n _this.cx = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n };\n\n _this.getOptionLabel = function (data) {\n return getOptionLabel$1(_this.props, data);\n };\n\n _this.getOptionValue = function (data) {\n return getOptionValue$1(_this.props, data);\n };\n\n _this.getStyles = function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n\n _this.getElementId = function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n };\n\n _this.getComponents = function () {\n return defaultComponents(_this.props);\n };\n\n _this.buildCategorizedOptions = function () {\n return buildCategorizedOptions(_this.props, _this.state.selectValue);\n };\n\n _this.getCategorizedOptions = function () {\n return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n };\n\n _this.buildFocusableOptions = function () {\n return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n };\n\n _this.getFocusableOptions = function () {\n return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n };\n\n _this.ariaOnChange = function (value, actionMeta) {\n _this.setState({\n ariaSelection: _objectSpread2({\n value: value\n }, actionMeta)\n });\n };\n\n _this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n };\n\n _this.onMenuMouseMove = function (event) {\n _this.blockOptionHover = false;\n };\n\n _this.onControlMouseDown = function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n _this.onMenuClose();\n }\n }\n\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n event.preventDefault();\n }\n };\n\n _this.onDropdownIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n _this.onClearIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n };\n\n _this.onScroll = function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n };\n\n _this.onCompositionStart = function () {\n _this.isComposing = true;\n };\n\n _this.onCompositionEnd = function () {\n _this.isComposing = false;\n };\n\n _this.onTouchStart = function (_ref2) {\n var touches = _ref2.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n };\n\n _this.onTouchMove = function (_ref3) {\n var touches = _ref3.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n\n _this.onTouchEnd = function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n };\n\n _this.onControlTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n };\n\n _this.onClearIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n };\n\n _this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n };\n\n _this.handleInputChange = function (event) {\n var inputValue = event.currentTarget.value;\n\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n if (!_this.props.menuIsOpen) {\n _this.onMenuOpen();\n }\n };\n\n _this.onInputFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.setState({\n inputIsHiddenAfterUpdate: false,\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n };\n\n _this.onInputBlur = function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n\n _this.onOptionHover = function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n };\n\n _this.shouldHideSelectedOptions = function () {\n return shouldHideSelectedOptions(_this.props);\n };\n\n _this.onKeyDown = function (event) {\n var _this$props5 = _this.props,\n isMulti = _this$props5.isMulti,\n backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n escapeClearsValue = _this$props5.escapeClearsValue,\n inputValue = _this$props5.inputValue,\n isClearable = _this$props5.isClearable,\n isDisabled = _this$props5.isDisabled,\n menuIsOpen = _this$props5.menuIsOpen,\n onKeyDown = _this$props5.onKeyDown,\n tabSelectsValue = _this$props5.tabSelectsValue,\n openMenuOnFocus = _this$props5.openMenuOnFocus;\n var _this$state = _this.state,\n focusedOption = _this$state.focusedOption,\n focusedValue = _this$state.focusedValue,\n selectValue = _this$state.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n _this.state.selectValue = cleanValue(_props.value);\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props6 = this.props,\n isDisabled = _this$props6.isDisabled,\n menuIsOpen = _this$props6.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n }\n\n if (isFocused && isDisabled && !prevProps.isDisabled) {\n // ensure select state gets blurred in case Select is programatically disabled while focused\n this.setState({\n isFocused: false\n }, this.onMenuClose);\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n } // ==============================\n // Consumer Handlers\n // ==============================\n\n }, {\n key: \"onMenuOpen\",\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this2 = this;\n\n var _this$state2 = this.state,\n selectValue = _this$state2.selectValue,\n isFocused = _this$state2.isFocused;\n var focusableOptions = this.buildFocusableOptions();\n var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n\n if (!this.props.isMulti) {\n var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.setState({\n inputIsHiddenAfterUpdate: false,\n focusedValue: null,\n focusedOption: focusableOptions[openAtIndex]\n }, function () {\n return _this2.onMenuOpen();\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$state3 = this.state,\n selectValue = _this$state3.selectValue,\n focusedValue = _this$state3.focusedValue; // Only multiselects support value focusing\n\n if (!this.props.isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var focusedOption = this.state.focusedOption;\n var options = this.getFocusableOptions();\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n }\n }, {\n key: \"getTheme\",\n value: // ==============================\n // Getters\n // ==============================\n function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread2(_objectSpread2({}, defaultTheme), this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n cx = this.cx,\n getStyles = this.getStyles,\n getValue = this.getValue,\n selectOption = this.selectOption,\n setValue = this.setValue,\n props = this.props;\n var isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var hasValue = this.hasValue();\n return {\n clearValue: clearValue,\n cx: cx,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n selectProps: props,\n setValue: setValue,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.getFocusableOptions().length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props7 = this.props,\n isClearable = _this$props7.isClearable,\n isMulti = _this$props7.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return _isOptionDisabled(this.props, option, selectValue);\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n return _isOptionSelected(this.props, option, selectValue);\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return _filterOption(this.props, option, inputValue);\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n value: // ==============================\n // Composition Handlers\n // ==============================\n function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n value: // ==============================\n // Touch Handlers\n // ==============================\n function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"renderInput\",\n value: // ==============================\n // Renderers\n // ==============================\n function renderInput() {\n var _this$props8 = this.props,\n isDisabled = _this$props8.isDisabled,\n isSearchable = _this$props8.isSearchable,\n inputId = _this$props8.inputId,\n inputValue = _this$props8.inputValue,\n tabIndex = _this$props8.tabIndex,\n form = _this$props8.form;\n\n var _this$getComponents = this.getComponents(),\n Input = _this$getComponents.Input;\n\n var inputIsHidden = this.state.inputIsHidden;\n var commonProps = this.commonProps;\n var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return /*#__PURE__*/React.createElement(DummyInput, _extends({\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n form: form,\n value: \"\"\n }, ariaAttributes));\n }\n\n return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n form: form,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this3 = this;\n\n var _this$getComponents2 = this.getComponents(),\n MultiValue = _this$getComponents2.MultiValue,\n MultiValueContainer = _this$getComponents2.MultiValueContainer,\n MultiValueLabel = _this$getComponents2.MultiValueLabel,\n MultiValueRemove = _this$getComponents2.MultiValueRemove,\n SingleValue = _this$getComponents2.SingleValue,\n Placeholder = _this$getComponents2.Placeholder;\n\n var commonProps = this.commonProps;\n var _this$props9 = this.props,\n controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n isDisabled = _this$props9.isDisabled,\n isMulti = _this$props9.isMulti,\n inputValue = _this$props9.inputValue,\n placeholder = _this$props9.placeholder;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue,\n isFocused = _this$state4.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: \"\".concat(_this3.getOptionValue(opt)).concat(index),\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this3.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this3.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this3.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var _this$getComponents3 = this.getComponents(),\n ClearIndicator = _this$getComponents3.ClearIndicator;\n\n var commonProps = this.commonProps;\n var _this$props10 = this.props,\n isDisabled = _this$props10.isDisabled,\n isLoading = _this$props10.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var _this$getComponents4 = this.getComponents(),\n LoadingIndicator = _this$getComponents4.LoadingIndicator;\n\n var commonProps = this.commonProps;\n var _this$props11 = this.props,\n isDisabled = _this$props11.isDisabled,\n isLoading = _this$props11.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$getComponents5 = this.getComponents(),\n DropdownIndicator = _this$getComponents5.DropdownIndicator,\n IndicatorSeparator = _this$getComponents5.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var _this$getComponents6 = this.getComponents(),\n DropdownIndicator = _this$getComponents6.DropdownIndicator;\n\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this4 = this;\n\n var _this$getComponents7 = this.getComponents(),\n Group = _this$getComponents7.Group,\n GroupHeading = _this$getComponents7.GroupHeading,\n Menu = _this$getComponents7.Menu,\n MenuList = _this$getComponents7.MenuList,\n MenuPortal = _this$getComponents7.MenuPortal,\n LoadingMessage = _this$getComponents7.LoadingMessage,\n NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n Option = _this$getComponents7.Option;\n\n var commonProps = this.commonProps;\n var focusedOption = this.state.focusedOption;\n var _this$props12 = this.props,\n captureMenuScroll = _this$props12.captureMenuScroll,\n inputValue = _this$props12.inputValue,\n isLoading = _this$props12.isLoading,\n loadingMessage = _this$props12.loadingMessage,\n minMenuHeight = _this$props12.minMenuHeight,\n maxMenuHeight = _this$props12.maxMenuHeight,\n menuIsOpen = _this$props12.menuIsOpen,\n menuPlacement = _this$props12.menuPlacement,\n menuPosition = _this$props12.menuPosition,\n menuPortalTarget = _this$props12.menuPortalTarget,\n menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n noOptionsMessage = _this$props12.noOptionsMessage,\n onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props, id) {\n var type = props.type,\n data = props.data,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected,\n label = props.label,\n value = props.value;\n var isFocused = focusedOption === data;\n var onHover = isDisabled ? undefined : function () {\n return _this4.onOptionHover(data);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this4.selectOption(data);\n };\n var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n var innerProps = {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n };\n return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n innerProps: innerProps,\n data: data,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: type,\n value: value,\n isFocused: isFocused,\n innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n }), _this4.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = this.getCategorizedOptions().map(function (item) {\n if (item.type === 'group') {\n var data = item.data,\n options = item.options,\n groupIndex = item.index;\n var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n var headingId = \"\".concat(groupId, \"-heading\");\n return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n key: groupId,\n data: data,\n options: options,\n Heading: GroupHeading,\n headingProps: {\n id: headingId,\n data: item.data\n },\n label: _this4.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n }));\n } else if (item.type === 'option') {\n return render(item, \"\".concat(item.index));\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n var ref = _ref4.ref,\n _ref4$placerProps = _ref4.placerProps,\n placement = _ref4$placerProps.placement,\n maxHeight = _ref4$placerProps.maxHeight;\n return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this4.onMenuMouseDown,\n onMouseMove: _this4.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), /*#__PURE__*/React.createElement(ScrollManager, {\n captureEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom,\n lockEnabled: menuShouldBlockScroll\n }, function (scrollTargetRef) {\n return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: function innerRef(instance) {\n _this4.getMenuListRef(instance);\n\n scrollTargetRef(instance);\n },\n isLoading: isLoading,\n maxHeight: maxHeight,\n focusedOption: focusedOption\n }), menuUI);\n }));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this5 = this;\n\n var _this$props13 = this.props,\n delimiter = _this$props13.delimiter,\n isDisabled = _this$props13.isDisabled,\n isMulti = _this$props13.isMulti,\n name = _this$props13.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this5.getOptionValue(opt);\n }).join(delimiter);\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this5.getOptionValue(opt)\n });\n }) : /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return /*#__PURE__*/React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n var commonProps = this.commonProps;\n var _this$state5 = this.state,\n ariaSelection = _this$state5.ariaSelection,\n focusedOption = _this$state5.focusedOption,\n focusedValue = _this$state5.focusedValue,\n isFocused = _this$state5.isFocused,\n selectValue = _this$state5.selectValue;\n var focusableOptions = this.getFocusableOptions();\n return /*#__PURE__*/React.createElement(LiveRegion, _extends({}, commonProps, {\n ariaSelection: ariaSelection,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n isFocused: isFocused,\n selectValue: selectValue,\n focusableOptions: focusableOptions\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$getComponents8 = this.getComponents(),\n Control = _this$getComponents8.Control,\n IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n SelectContainer = _this$getComponents8.SelectContainer,\n ValueContainer = _this$getComponents8.ValueContainer;\n\n var _this$props14 = this.props,\n className = _this$props14.className,\n id = _this$props14.id,\n isDisabled = _this$props14.isDisabled,\n menuIsOpen = _this$props14.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var prevProps = state.prevProps,\n clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate;\n var options = props.options,\n value = props.value,\n menuIsOpen = props.menuIsOpen,\n inputValue = props.inputValue;\n var newMenuOptionsState = {};\n\n if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n var selectValue = cleanValue(value);\n var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n var focusedOption = getNextFocusedOption(state, focusableOptions);\n newMenuOptionsState = {\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n clearFocusValueOnUpdate: false\n };\n } // some updates should toggle the state of the input visibility\n\n\n var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n inputIsHidden: inputIsHiddenAfterUpdate,\n inputIsHiddenAfterUpdate: undefined\n } : {};\n return _objectSpread2(_objectSpread2(_objectSpread2({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n prevProps: props\n });\n }\n }]);\n\n return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, getOptionLabel as a, defaultProps as b, createFilter as c, defaultTheme as d, getOptionValue as g, mergeStyles as m };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-4bd03571.esm.js';\nimport React, { Component } from 'react';\n\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(StateManager, _Component);\n\n var _super = _createSuper(StateManager);\n\n function StateManager() {\n var _this;\n\n _classCallCheck(this, StateManager);\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.select = void 0;\n _this.state = {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n };\n\n _this.onChange = function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n };\n\n _this.onInputChange = function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n };\n\n _this.onMenuOpen = function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n };\n\n _this.onMenuClose = function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n };\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props;\n _this$props2.defaultInputValue;\n _this$props2.defaultMenuIsOpen;\n _this$props2.defaultValue;\n var props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };\n","import { S as Select } from './Select-dbb12e54.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-dbb12e54.esm.js';\nimport { m as manageState } from './stateManager-845a3300.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-4bd03571.esm.js';\nexport { c as components } from './index-4bd03571.esm.js';\nimport React, { Component } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport memoizeOne from 'memoize-one';\nimport '@babel/runtime/helpers/extends';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/typeof';\nimport 'react-input-autosize';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\n\nvar NonceProvider = /*#__PURE__*/function (_Component) {\n _inherits(NonceProvider, _Component);\n\n var _super = _createSuper(NonceProvider);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _super.call(this, props);\n\n _this.createEmotionCache = function (nonce, key) {\n return createCache({\n nonce: nonce,\n key: key\n });\n };\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce, this.props.cacheKey);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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","/**\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 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 assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // 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, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\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 toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;","export default x => () => x;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","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 {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","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","/**\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 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 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 arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var 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 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","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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 {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.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 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); 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\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\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; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\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","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\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\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n // Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\n function 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\n function ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n }\n\n function isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n }\n\n function 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\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\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\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/**\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 };\n","import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n\n const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n const _ref = props,\n {\n style,\n children,\n scrollTop,\n scrollLeft\n } = _ref,\n attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n if (children !== void 0) {\n instance.textContent = children;\n }\n\n for (let name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n}\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n constructor(_ref) {\n let {\n x,\n y,\n z\n } = _ref,\n style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const inputs = [];\n const transforms = [];\n\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n }\n\n eachProp(style, (value, key) => {\n if (key === 'transform') {\n inputs.push([value || '']);\n transforms.push(transform => [transform, transform === '']);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value)) return;\n const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n inputs.push(toArray(value));\n transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n }\n });\n\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n\n super(style);\n }\n\n}\n\nclass FluidTransform extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this._value = null;\n this.inputs = inputs;\n this.transforms = transforms;\n }\n\n get() {\n return this._value || (this._value = this._get());\n }\n\n _get() {\n let transform = '';\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n transform += ' ' + t;\n identity = identity && id;\n });\n return identity ? 'none' : transform;\n }\n\n observerAdded(count) {\n if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n }\n\n observerRemoved(count) {\n if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._value = null;\n }\n\n callFluidObservers(this, event);\n }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nconst host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: style => new AnimatedStyle(style),\n getComponentProps: _ref => {\n let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return props;\n }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n 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\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","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 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 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 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","/**\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","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","/** 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 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","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var 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 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 * 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","\n// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = stripStyle;\n\nfunction stripStyle(style) {\n var ret = {};\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","import { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n\n const defaults = {};\n\n for (const key of keys) {\n const value = transform(props[key], key);\n\n if (!is.und(value)) {\n defaults[key] = value;\n }\n }\n\n return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n keys: 1,\n callId: 1,\n parentId: 1\n};\n\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n\n if (count) {\n return forward;\n }\n}\n\nfunction inferTo(props) {\n const to = getForwardProps(props);\n\n if (to) {\n const out = {\n to\n };\n eachProp(props, (val, key) => key in to || (out[key] = val));\n return out;\n }\n\n return _extends({}, props);\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props) return true;\n\n return false;\n}\nfunction isAsyncTo(to) {\n return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n var _ctrl$ref;\n\n (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n var _ctrl$ref2;\n\n (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n useLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n each(controllers, ctrl => {\n each(ctrl.queue, props => {\n const memoizedDelayProp = props.delay;\n\n props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n });\n ctrl.start();\n });\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, ref => {\n const controllers = ref.current;\n\n if (controllers.length) {\n const queues = controllers.map(ctrl => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\n\nconst linear = t => t;\n\nconst defaults = _extends({}, config.default, {\n mass: 1,\n damping: 1,\n easing: linear,\n clamp: false\n});\n\nclass AnimationConfig {\n constructor() {\n this.tension = void 0;\n this.friction = void 0;\n this.frequency = void 0;\n this.damping = void 0;\n this.mass = void 0;\n this.velocity = 0;\n this.restVelocity = void 0;\n this.precision = void 0;\n this.progress = void 0;\n this.duration = void 0;\n this.easing = void 0;\n this.clamp = void 0;\n this.bounce = void 0;\n this.decay = void 0;\n this.round = void 0;\n Object.assign(this, defaults);\n }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = _extends({}, defaultConfig);\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = _extends({}, defaultConfig, newConfig);\n }\n\n sanitizeConfig(config, newConfig);\n Object.assign(config, newConfig);\n\n for (const key in defaults) {\n if (config[key] == null) {\n config[key] = defaults[key];\n }\n }\n\n let {\n mass,\n frequency,\n damping\n } = config;\n\n if (!is.und(frequency)) {\n if (frequency < 0.01) frequency = 0.01;\n if (damping < 0) damping = 0;\n config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config.friction = 4 * Math.PI * damping * mass / frequency;\n }\n\n return config;\n}\n\nfunction sanitizeConfig(config, props) {\n if (!is.und(props.decay)) {\n config.duration = undefined;\n } else {\n const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n config.duration = undefined;\n config.decay = undefined;\n }\n\n if (isTensionConfig) {\n config.frequency = undefined;\n }\n }\n}\n\nconst emptyArray = [];\nclass Animation {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.to = void 0;\n this.from = void 0;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n\n}\n\nfunction scheduleProps(callId, {\n key,\n props,\n defaultProps,\n state,\n actions\n}) {\n return new Promise((resolve, reject) => {\n var _props$cancel;\n\n let delay;\n let timeout;\n let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n if (cancel) {\n onStart();\n } else {\n if (!is.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n\n let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n\n delay = callProp(props.delay || 0, key);\n\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n\n function onResume() {\n if (delay > 0) {\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n\n function onStart() {\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n\n try {\n actions.start(_extends({}, props, {\n callId,\n cancel\n }), resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nconst getCancelledResult = value => ({\n value,\n cancelled: true,\n finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n const {\n callId,\n parentId,\n onRest\n } = props;\n const {\n asyncTo: prevTo,\n promise: prevPromise\n } = state;\n\n if (!parentId && to === prevTo && !props.reset) {\n return prevPromise;\n }\n\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to;\n const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n let preventBail;\n let bail;\n const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n const bailIfEnded = bailSignal => {\n const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAniamtionSignal();\n return (async () => {\n if (Globals.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n\n bailIfEnded(bailSignal);\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n to: arg1\n });\n props.parentId = callId;\n eachProp(defaultProps, (value, key) => {\n if (is.und(props[key])) {\n props[key] = value;\n }\n });\n const result = await target.start(props);\n bailIfEnded(bailSignal);\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n return result;\n })();\n };\n\n let result;\n\n if (Globals.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n\n try {\n let animating;\n\n if (is.arr(to)) {\n animating = (async queue => {\n for (const props of queue) {\n await animate(props);\n }\n })(to);\n } else {\n animating = Promise.resolve(to(animate, target.stop.bind(target)));\n }\n\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAniamtionSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : undefined;\n state.promise = parentId ? prevPromise : undefined;\n }\n }\n\n if (is.fun(onRest)) {\n raf.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, t => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = undefined;\n if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n constructor() {\n super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n this.result = void 0;\n }\n\n}\nclass SkipAniamtionSignal extends Error {\n constructor() {\n super('SkipAnimationSignal');\n this.result = void 0;\n }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n constructor(...args) {\n super(...args);\n this.id = nextId$1++;\n this.key = void 0;\n this._priority = 0;\n }\n\n get priority() {\n return this._priority;\n }\n\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n\n this._onPriorityChange(priority);\n }\n }\n\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n\n to(...args) {\n return Globals.to(this, args);\n }\n\n interpolate(...args) {\n deprecateInterpolate();\n return Globals.to(this, args);\n }\n\n toJSON() {\n return this.get();\n }\n\n observerAdded(count) {\n if (count == 1) this._attach();\n }\n\n observerRemoved(count) {\n if (count == 0) this._detach();\n }\n\n _attach() {}\n\n _detach() {}\n\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: 'change',\n parent: this,\n value,\n idle\n });\n }\n\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n\n callFluidObservers(this, {\n type: 'priority',\n parent: this,\n priority\n });\n }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n constructor(arg1, arg2) {\n super();\n this.key = void 0;\n this.animation = new Animation();\n this.queue = void 0;\n this.defaultProps = {};\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._pendingCalls = new Set();\n this._lastCallId = 0;\n this._lastToId = 0;\n this._memoizedDuration = 0;\n\n if (!is.und(arg1) || !is.und(arg2)) {\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n from: arg1\n });\n\n if (is.und(props.default)) {\n props.default = true;\n }\n\n this.start(props);\n }\n }\n\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n\n get goal() {\n return getFluidValue(this.animation.to);\n }\n\n get velocity() {\n const node = getAnimated(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n }\n\n get hasAnimated() {\n return hasAnimated(this);\n }\n\n get isAnimating() {\n return isAnimating(this);\n }\n\n get isPaused() {\n return isPaused(this);\n }\n\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let {\n config,\n toValues\n } = anim;\n const payload = getPayload(anim.to);\n\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray(getFluidValue(anim.to));\n }\n\n anim.values.forEach((node, i) => {\n if (node.done) return;\n const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n let finished = anim.immediate;\n let position = to;\n\n if (!finished) {\n position = node.lastPosition;\n\n if (config.tension <= 0) {\n node.done = true;\n return;\n }\n\n let elapsed = node.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n let velocity;\n\n if (!is.und(config.duration)) {\n let p = 1;\n\n if (config.duration > 0) {\n if (this._memoizedDuration !== config.duration) {\n this._memoizedDuration = config.duration;\n\n if (node.durationProgress > 0) {\n node.elapsedTime = config.duration * node.durationProgress;\n elapsed = node.elapsedTime += dt;\n }\n }\n\n p = (config.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node.durationProgress = p;\n }\n\n position = from + config.easing(p) * (to - from);\n velocity = (position - node.lastPosition) / dt;\n finished = p == 1;\n } else if (config.decay) {\n const decay = config.decay === true ? 0.998 : config.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node.lastPosition - position) < 0.1;\n velocity = v0 * e;\n } else {\n velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n const restVelocity = config.restVelocity || precision / 10;\n const bounceFactor = config.clamp ? 0 : config.bounce;\n const canBounce = !is.und(bounceFactor);\n const isGrowing = from == to ? node.v0 > 0 : from < to;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n\n if (!isMoving) {\n finished = Math.abs(to - position) <= precision;\n\n if (finished) {\n break;\n }\n }\n\n if (canBounce) {\n isBouncing = position == to || position > to == isGrowing;\n\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to;\n }\n }\n\n const springForce = -config.tension * 0.000001 * (position - to);\n const dampingForce = -config.friction * 0.001 * velocity;\n const acceleration = (springForce + dampingForce) / config.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n\n node.lastVelocity = velocity;\n\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n\n if (payload && !payload[i].done) {\n finished = false;\n }\n\n if (finished) {\n node.done = true;\n } else {\n idle = false;\n }\n\n if (node.setValue(position, config.round)) {\n changed = true;\n }\n });\n const node = getAnimated(this);\n const currVal = node.getValue();\n\n if (idle) {\n const finalVal = getFluidValue(anim.to);\n\n if ((currVal !== finalVal || changed) && !config.decay) {\n node.setValue(finalVal);\n\n this._onChange(finalVal);\n } else if (changed && config.decay) {\n this._onChange(currVal);\n }\n\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n\n set(value) {\n raf.batchedUpdates(() => {\n this._stop();\n\n this._focus(value);\n\n this._set(value);\n });\n return this;\n }\n\n pause() {\n this._update({\n pause: true\n });\n }\n\n resume() {\n this._update({\n pause: false\n });\n }\n\n finish() {\n if (isAnimating(this)) {\n const {\n to,\n config\n } = this.animation;\n raf.batchedUpdates(() => {\n this._onStart();\n\n if (!config.decay) {\n this._set(to, false);\n }\n\n this._stop();\n });\n }\n\n return this;\n }\n\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n\n start(to, arg2) {\n let queue;\n\n if (!is.und(to)) {\n queue = [is.obj(to) ? to : _extends({}, arg2, {\n to\n })];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n\n return Promise.all(queue.map(props => this._update(props))).then(results => getCombinedResult(this, results));\n }\n\n stop(cancel) {\n const {\n to\n } = this.animation;\n\n this._focus(this.get());\n\n stopAsync(this._state, cancel && this._lastCallId);\n raf.batchedUpdates(() => this._stop(to, cancel));\n return this;\n }\n\n reset() {\n this._update({\n reset: true\n });\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._start();\n } else if (event.type == 'priority') {\n this.priority = event.priority + 1;\n }\n }\n\n _prepareNode(props) {\n const key = this.key || '';\n let {\n to,\n from\n } = props;\n to = is.obj(to) ? to[key] : to;\n\n if (to == null || isAsyncTo(to)) {\n to = undefined;\n }\n\n from = is.obj(from) ? from[key] : from;\n\n if (from == null) {\n from = undefined;\n }\n\n const range = {\n to,\n from\n };\n\n if (!hasAnimated(this)) {\n if (props.reverse) [to, from] = [from, to];\n from = getFluidValue(from);\n\n if (!is.und(from)) {\n this._set(from);\n } else if (!getAnimated(this)) {\n this._set(to);\n }\n }\n\n return range;\n }\n\n _update(_ref, isLoop) {\n let props = _extends({}, _ref);\n\n const {\n key,\n defaultProps\n } = this;\n if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n mergeActiveFn(this, props, 'onProps');\n sendEvent(this, 'onProps', props, this);\n\n const range = this._prepareNode(props);\n\n if (Object.isFrozen(this)) {\n throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n }\n\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n\n if (isAnimating(this)) {\n this._resume();\n }\n\n flushCalls(state.resumeQueue);\n sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then(result => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n\n return result;\n });\n }\n\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n\n const hasToProp = !is.und(range.to);\n const hasFromProp = !is.und(range.from);\n\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n\n const {\n key,\n defaultProps,\n animation: anim\n } = this;\n const {\n to: prevTo,\n from: prevFrom\n } = anim;\n let {\n to = prevTo,\n from = prevFrom\n } = range;\n\n if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n to = from;\n }\n\n if (props.reverse) [to, from] = [from, to];\n const hasFromChanged = !isEqual(from, prevFrom);\n\n if (hasFromChanged) {\n anim.from = from;\n }\n\n from = getFluidValue(from);\n const hasToChanged = !isEqual(to, prevTo);\n\n if (hasToChanged) {\n this._focus(to);\n }\n\n const hasAsyncTo = isAsyncTo(props.to);\n const {\n config\n } = anim;\n const {\n decay,\n velocity\n } = config;\n\n if (hasToProp || hasFromProp) {\n config.velocity = 0;\n }\n\n if (props.config && !hasAsyncTo) {\n mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n }\n\n let node = getAnimated(this);\n\n if (!node || is.und(to)) {\n return resolve(getFinishedResult(this, true));\n }\n\n const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n const value = reset ? from : this.get();\n const goal = computeGoal(to);\n const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n if (hasToChanged) {\n const nodeType = getAnimatedType(to);\n\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n }\n }\n\n const goalType = node.constructor;\n let started = hasFluidValue(to);\n let finished = false;\n\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n started = true;\n }\n }\n\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n }\n\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n\n if (started) {\n const {\n onRest\n } = anim;\n each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n\n this._pendingCalls.add(resolve);\n\n if (anim.changed) raf.batchedUpdates(() => {\n anim.changed = !reset;\n onRest == null ? void 0 : onRest(result, this);\n\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart == null ? void 0 : anim.onStart(result, this);\n }\n });\n }\n }\n\n if (reset) {\n this._set(value);\n }\n\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n\n _focus(value) {\n const anim = this.animation;\n\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n\n anim.to = value;\n\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n\n _attach() {\n let priority = 0;\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n addFluidObserver(to, this);\n\n if (isFrameValue(to)) {\n priority = to.priority + 1;\n }\n }\n\n this.priority = priority;\n }\n\n _detach() {\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n removeFluidObserver(to, this);\n }\n }\n\n _set(arg, idle = true) {\n const value = getFluidValue(arg);\n\n if (!is.und(value)) {\n const oldNode = getAnimated(this);\n\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n\n if (oldNode) {\n raf.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n\n return getAnimated(this);\n }\n\n _onStart() {\n const anim = this.animation;\n\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n }\n }\n\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n\n callProp(this.animation.onChange, value, this);\n }\n\n callProp(this.defaultProps.onChange, value, this);\n\n super._onChange(value, idle);\n }\n\n _start() {\n const anim = this.animation;\n getAnimated(this).reset(getFluidValue(anim.to));\n\n if (!anim.immediate) {\n anim.fromValues = anim.values.map(node => node.lastPosition);\n }\n\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n\n _resume() {\n if (Globals.skipAnimation) {\n this.finish();\n } else {\n frameLoop.start(this);\n }\n }\n\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each(anim.values, node => {\n node.done = true;\n });\n\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = undefined;\n }\n\n callFluidObservers(this, {\n type: 'idle',\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n flushCalls(this._pendingCalls, result);\n\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, 'onRest', result, this);\n }\n }\n }\n\n}\n\nfunction checkFinished(target, to) {\n const goal = computeGoal(to);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n let loopRet = callProp(loop);\n\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate(_extends({}, props, {\n loop,\n default: false,\n pause: undefined,\n to: !reverse || isAsyncTo(to) ? to : undefined,\n from: reset ? props.from : undefined,\n reset\n }, overrides));\n }\n}\nfunction createUpdate(props) {\n const {\n to,\n from\n } = props = inferTo(props);\n const keys = new Set();\n if (is.obj(to)) findDefined(to, keys);\n if (is.obj(from)) findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update = createUpdate(props);\n\n if (is.und(update.default)) {\n update.default = getDefaultProps(update);\n }\n\n return update;\n}\n\nfunction findDefined(values, keys) {\n eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n constructor(props, flush) {\n this.id = nextId++;\n this.springs = {};\n this.queue = [];\n this.ref = void 0;\n this._flush = void 0;\n this._initialProps = void 0;\n this._lastAsyncId = 0;\n this._active = new Set();\n this._changed = new Set();\n this._started = false;\n this._item = void 0;\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._events = {\n onStart: new Map(),\n onChange: new Map(),\n onRest: new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n\n if (flush) {\n this._flush = flush;\n }\n\n if (props) {\n this.start(_extends({\n default: true\n }, props));\n }\n }\n\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every(spring => spring.idle);\n }\n\n get item() {\n return this._item;\n }\n\n set item(item) {\n this._item = item;\n }\n\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n\n set(values) {\n for (const key in values) {\n const value = values[key];\n\n if (!is.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n\n return this;\n }\n\n start(props) {\n let {\n queue\n } = this;\n\n if (props) {\n queue = toArray(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n\n if (this._flush) {\n return this._flush(this, queue);\n }\n\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n\n if (keys) {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each(spring => spring.stop(!!arg));\n }\n\n return this;\n }\n\n pause(keys) {\n if (is.und(keys)) {\n this.start({\n pause: true\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].pause());\n }\n\n return this;\n }\n\n resume(keys) {\n if (is.und(keys)) {\n this.start({\n pause: false\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].resume());\n }\n\n return this;\n }\n\n each(iterator) {\n eachProp(this.springs, iterator);\n }\n\n _onFrame() {\n const {\n onStart,\n onChange,\n onRest\n } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush(onStart, ([onStart, result]) => {\n result.value = this.get();\n onStart(result, this, this._item);\n });\n }\n\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n\n if (changed && onChange.size) {\n flush(onChange, ([onChange, result]) => {\n result.value = values;\n onChange(result, this, this._item);\n });\n }\n\n if (idle) {\n this._started = false;\n flush(onRest, ([onRest, result]) => {\n result.value = values;\n onRest(result, this, this._item);\n });\n }\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._changed.add(event.parent);\n\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else return;\n\n raf.onFrame(this._onFrame);\n }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const {\n keys,\n to,\n from,\n loop,\n onRest,\n onResolve\n } = props;\n const defaults = is.obj(props.default) && props.default;\n\n if (loop) {\n props.loop = false;\n }\n\n if (to === false) props.to = null;\n if (from === false) props.from = null;\n const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n if (asyncTo) {\n props.to = undefined;\n props.onRest = undefined;\n\n if (defaults) {\n defaults.onRest = undefined;\n }\n } else {\n each(BATCHED_EVENTS, key => {\n const handler = props[key];\n\n if (is.fun(handler)) {\n const queue = ctrl['_events'][key];\n\n props[key] = ({\n finished,\n cancelled\n }) => {\n const result = queue.get(handler);\n\n if (result) {\n if (!finished) result.finished = false;\n if (cancelled) result.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n\n if (defaults) {\n defaults[key] = props[key];\n }\n }\n });\n }\n\n const state = ctrl['_state'];\n\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n\n const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n if (asyncTo || cancel && state.asyncId) {\n promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n\n start(props, resolve) {\n if (cancel) {\n stopAsync(state, ctrl['_lastAsyncId']);\n resolve(getCancelledResult(ctrl));\n } else {\n props.onRest = onRest;\n resolve(runAsync(asyncTo, props, state, ctrl));\n }\n }\n\n }\n }));\n }\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to);\n\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n\n if (onResolve) {\n raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = _extends({}, ctrl.springs);\n\n if (props) {\n each(toArray(props), props => {\n if (is.und(props.keys)) {\n props = createUpdate(props);\n }\n\n if (!is.obj(props.to)) {\n props = _extends({}, props, {\n to: undefined\n });\n }\n\n prepareSprings(springs, props, key => {\n return createSpring(key);\n });\n });\n }\n\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver(spring, ctrl);\n }\n });\n}\n\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n\n if (observer) {\n addFluidObserver(spring, observer);\n }\n\n return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each(props.keys, key => {\n const spring = springs[key] || (springs[key] = create(key));\n spring['_prepareNode'](props);\n });\n }\n}\n\nfunction prepareKeys(ctrl, queue) {\n each(queue, props => {\n prepareSprings(ctrl.springs, props, key => {\n return createSpring(key, ctrl);\n });\n });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause,\n immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({\n pause,\n immediate\n }), [pause, immediate]);\n const {\n Provider\n } = ctx;\n return React.createElement(Provider, {\n value: props\n }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\nconst SpringRef = () => {\n const current = [];\n\n const SpringRef = function SpringRef(props) {\n deprecateDirectCall();\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = _getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.current = current;\n\n SpringRef.add = function (ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n\n SpringRef.delete = function (ctrl) {\n const i = current.indexOf(ctrl);\n if (~i) current.splice(i, 1);\n };\n\n SpringRef.pause = function () {\n each(current, ctrl => ctrl.pause(...arguments));\n return this;\n };\n\n SpringRef.resume = function () {\n each(current, ctrl => ctrl.resume(...arguments));\n return this;\n };\n\n SpringRef.set = function (values) {\n each(current, ctrl => ctrl.set(values));\n };\n\n SpringRef.start = function (props) {\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = this._getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.stop = function () {\n each(current, ctrl => ctrl.stop(...arguments));\n return this;\n };\n\n SpringRef.update = function (props) {\n each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n\n const _getProps = function _getProps(arg, ctrl, index) {\n return is.fun(arg) ? arg(index, ctrl) : arg;\n };\n\n SpringRef._getProps = _getProps;\n return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n const propsFn = is.fun(props) && props;\n if (propsFn && !deps) deps = [];\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(() => ({\n ctrls: [],\n queue: [],\n\n flush(ctrl, updates) {\n const springs = getSprings(ctrl, updates);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n setSprings(ctrl, springs);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates));\n });\n forceUpdate();\n });\n }\n\n }), []);\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each(ctrls.current.slice(length, prevLength), ctrl => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n if (update) {\n updates[i] = declareUpdate(update);\n }\n }\n }\n\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const {\n queue\n } = state;\n\n if (queue.length) {\n state.queue = [];\n each(queue, cb => cb());\n }\n\n each(ctrls.current, (ctrl, i) => {\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext) {\n ctrl.start({\n default: context\n });\n }\n\n const update = updates[i];\n\n if (update) {\n replaceRef(ctrl, update.ref);\n\n if (ctrl.ref) {\n ctrl.queue.push(update);\n } else {\n ctrl.start(update);\n }\n }\n });\n });\n useOnce(() => () => {\n each(state.ctrls, ctrl => ctrl.stop(true));\n });\n const values = springs.map(x => _extends({}, x));\n return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n const isFn = is.fun(props);\n const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n const propsFn = is.fun(propsArg) && propsArg;\n if (propsFn && !deps) deps = [];\n let reverse = true;\n const result = useSprings(length, (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n reverse = reverse && props.reverse;\n return props;\n }, deps || [{}]);\n const ref = result[1];\n useLayoutEffect(() => {\n each(ref.current, (ctrl, i) => {\n const parent = ref.current[i + (reverse ? 1 : -1)];\n if (parent) ctrl.start({\n to: parent.springs\n });\n });\n }, deps);\n\n if (propsFn || arguments.length == 3) {\n ref['_getProps'] = (propsArg, ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent) props.to = parent.springs;\n return props;\n }\n };\n\n return result;\n }\n\n return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n TransitionPhase[\"MOUNT\"] = \"mount\";\n TransitionPhase[\"ENTER\"] = \"enter\";\n TransitionPhase[\"UPDATE\"] = \"update\";\n TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n const propsFn = is.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const items = toArray(data);\n const transitions = [];\n const usedTransitions = useRef(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useLayoutEffect(() => {\n usedTransitions.current = transitions;\n });\n useOnce(() => () => each(usedTransitions.current, t => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n }));\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useLayoutEffect(() => each(expired, ({\n ctrl,\n item,\n key\n }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n }));\n const reused = [];\n if (prevTransitions) each(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i) transitions[i] = t;\n }\n });\n each(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: TransitionPhase.MOUNT,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n\n if (reused.length) {\n let i = -1;\n const {\n leave\n } = propsFn ? propsFn() : props;\n each(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = _extends({}, t, {\n item: items[keyIndex]\n });\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n\n if (is.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n\n let delay = -trail;\n const forceUpdate = useForceUpdate();\n const defaultProps = getDefaultProps(props);\n const changes = new Map();\n each(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to;\n let phase;\n let propsDelay = callProp(p.delay || 0, key);\n\n if (prevPhase == TransitionPhase.MOUNT) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n\n if (prevPhase != TransitionPhase.LEAVE) {\n if (isLeave) {\n to = p.leave;\n phase = TransitionPhase.LEAVE;\n } else if (to = p.update) {\n phase = TransitionPhase.UPDATE;\n } else return;\n } else if (!isLeave) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else return;\n }\n\n to = callProp(to, t.item, i);\n to = is.obj(to) ? inferTo(to) : {\n to\n };\n\n if (!to.config) {\n const config = propsConfig || defaultProps.config;\n to.config = callProp(config, t.item, i, phase);\n }\n\n delay += trail;\n\n const payload = _extends({}, defaultProps, {\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n reset: false\n }, to);\n\n if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n const _p = propsFn ? propsFn() : props;\n\n const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n payload.from = callProp(from, t.item, i);\n }\n\n const {\n onResolve\n } = payload;\n\n payload.onResolve = result => {\n callProp(onResolve, result);\n const transitions = usedTransitions.current;\n const t = transitions.find(t => t.key === key);\n if (!t) return;\n\n if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n return;\n }\n\n if (t.ctrl.idle) {\n const idle = transitions.every(t => t.ctrl.idle);\n\n if (t.phase == TransitionPhase.LEAVE) {\n const expiry = callProp(expires, t.item);\n\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t.expired = true;\n\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n\n if (idle && transitions.some(t => t.expired)) {\n forceUpdate();\n }\n }\n };\n\n const springs = getSprings(t.ctrl, payload);\n changes.set(t, {\n phase,\n springs,\n payload\n });\n });\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n if (hasContext) each(transitions, t => {\n t.ctrl.start({\n default: context\n });\n });\n }, [context]);\n useLayoutEffect(() => {\n each(changes, ({\n phase,\n payload\n }, t) => {\n const {\n ctrl\n } = t;\n t.phase = phase;\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext && phase == TransitionPhase.ENTER) {\n ctrl.start({\n default: context\n });\n }\n\n if (payload) {\n replaceRef(ctrl, payload.ref);\n\n if (ctrl.ref) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n }\n }\n });\n }, reset ? void 0 : deps);\n\n const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n const {\n springs\n } = changes.get(t) || t.ctrl;\n const elem = render(_extends({}, springs), t.item, t, i);\n return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n })) : elem;\n }));\n\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n key,\n keys = key\n}, prevTransitions) {\n if (keys === null) {\n const reused = new Set();\n return items.map(item => {\n const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n if (t) {\n reused.add(t);\n return t.key;\n }\n\n return nextKey++;\n });\n }\n\n return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is.fun(result) ? result(trails[index]) : result;\n });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n constructor(source, args) {\n super();\n this.key = void 0;\n this.idle = true;\n this.calc = void 0;\n this._active = new Set();\n this.source = source;\n this.calc = createInterpolator(...args);\n\n const value = this._get();\n\n const nodeType = getAnimatedType(value);\n setAnimated(this, nodeType.create(value));\n }\n\n advance(_dt) {\n const value = this._get();\n\n const oldValue = this.get();\n\n if (!isEqual(value, oldValue)) {\n getAnimated(this).setValue(value);\n\n this._onChange(value, this.idle);\n }\n\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n\n _get() {\n const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n return this.calc(...inputs);\n }\n\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each(getPayload(this), node => {\n node.done = false;\n });\n\n if (Globals.skipAnimation) {\n raf.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop.start(this);\n }\n }\n }\n\n _attach() {\n let priority = 1;\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n addFluidObserver(source, this);\n }\n\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n\n this._start();\n }\n\n _detach() {\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n removeFluidObserver(source, this);\n }\n });\n\n this._active.clear();\n\n becomeIdle(this);\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n\n this._start();\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else if (event.type == 'priority') {\n this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n }\n }\n\n}\n\nfunction isIdle(source) {\n return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each(getPayload(self), node => {\n node.done = true;\n });\n callFluidObservers(self, {\n type: 'idle',\n parent: self\n });\n }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","import { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n\n const defaults = {};\n\n for (const key of keys) {\n const value = transform(props[key], key);\n\n if (!is.und(value)) {\n defaults[key] = value;\n }\n }\n\n return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n keys: 1,\n callId: 1,\n parentId: 1\n};\n\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n\n if (count) {\n return forward;\n }\n}\n\nfunction inferTo(props) {\n const to = getForwardProps(props);\n\n if (to) {\n const out = {\n to\n };\n eachProp(props, (val, key) => key in to || (out[key] = val));\n return out;\n }\n\n return _extends({}, props);\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props) return true;\n\n return false;\n}\nfunction isAsyncTo(to) {\n return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n var _ctrl$ref;\n\n (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n var _ctrl$ref2;\n\n (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n useLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n each(controllers, ctrl => {\n each(ctrl.queue, props => {\n const memoizedDelayProp = props.delay;\n\n props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, ref => {\n const controllers = ref.current;\n\n if (controllers.length) {\n const queues = controllers.map(ctrl => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1) {\n return n1 * x * x;\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n};\n\nconst easings = {\n linear: x => x,\n easeInQuad: x => x * x,\n easeOutQuad: x => 1 - (1 - x) * (1 - x),\n easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n easeInCubic: x => x * x * x,\n easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: x => x * x * x * x,\n easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: x => x * x * x * x * x,\n easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n easeOutSine: x => Math.sin(x * Math.PI / 2),\n easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: x => c3 * x * x * x - c1 * x * x,\n easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n easeInBounce: x => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n});\n\nclass AnimationConfig {\n constructor() {\n this.tension = void 0;\n this.friction = void 0;\n this.frequency = void 0;\n this.damping = void 0;\n this.mass = void 0;\n this.velocity = 0;\n this.restVelocity = void 0;\n this.precision = void 0;\n this.progress = void 0;\n this.duration = void 0;\n this.easing = void 0;\n this.clamp = void 0;\n this.bounce = void 0;\n this.decay = void 0;\n this.round = void 0;\n Object.assign(this, defaults);\n }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = _extends({}, defaultConfig);\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = _extends({}, defaultConfig, newConfig);\n }\n\n sanitizeConfig(config, newConfig);\n Object.assign(config, newConfig);\n\n for (const key in defaults) {\n if (config[key] == null) {\n config[key] = defaults[key];\n }\n }\n\n let {\n mass,\n frequency,\n damping\n } = config;\n\n if (!is.und(frequency)) {\n if (frequency < 0.01) frequency = 0.01;\n if (damping < 0) damping = 0;\n config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config.friction = 4 * Math.PI * damping * mass / frequency;\n }\n\n return config;\n}\n\nfunction sanitizeConfig(config, props) {\n if (!is.und(props.decay)) {\n config.duration = undefined;\n } else {\n const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n config.duration = undefined;\n config.decay = undefined;\n }\n\n if (isTensionConfig) {\n config.frequency = undefined;\n }\n }\n}\n\nconst emptyArray = [];\nclass Animation {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.to = void 0;\n this.from = void 0;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n\n}\n\nfunction scheduleProps(callId, {\n key,\n props,\n defaultProps,\n state,\n actions\n}) {\n return new Promise((resolve, reject) => {\n var _props$cancel;\n\n let delay;\n let timeout;\n let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n if (cancel) {\n onStart();\n } else {\n if (!is.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n\n let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n\n delay = callProp(props.delay || 0, key);\n\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n\n function onResume() {\n if (delay > 0 && !Globals.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n\n try {\n actions.start(_extends({}, props, {\n callId,\n cancel\n }), resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nconst getCancelledResult = value => ({\n value,\n cancelled: true,\n finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n const {\n callId,\n parentId,\n onRest\n } = props;\n const {\n asyncTo: prevTo,\n promise: prevPromise\n } = state;\n\n if (!parentId && to === prevTo && !props.reset) {\n return prevPromise;\n }\n\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to;\n const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n let preventBail;\n let bail;\n const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n const bailIfEnded = bailSignal => {\n const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAniamtionSignal();\n return (async () => {\n if (Globals.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n\n bailIfEnded(bailSignal);\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n to: arg1\n });\n props.parentId = callId;\n eachProp(defaultProps, (value, key) => {\n if (is.und(props[key])) {\n props[key] = value;\n }\n });\n const result = await target.start(props);\n bailIfEnded(bailSignal);\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n return result;\n })();\n };\n\n let result;\n\n if (Globals.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n\n try {\n let animating;\n\n if (is.arr(to)) {\n animating = (async queue => {\n for (const props of queue) {\n await animate(props);\n }\n })(to);\n } else {\n animating = Promise.resolve(to(animate, target.stop.bind(target)));\n }\n\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAniamtionSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : undefined;\n state.promise = parentId ? prevPromise : undefined;\n }\n }\n\n if (is.fun(onRest)) {\n raf.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, t => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = undefined;\n if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n constructor() {\n super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n this.result = void 0;\n }\n\n}\nclass SkipAniamtionSignal extends Error {\n constructor() {\n super('SkipAnimationSignal');\n this.result = void 0;\n }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n constructor(...args) {\n super(...args);\n this.id = nextId$1++;\n this.key = void 0;\n this._priority = 0;\n }\n\n get priority() {\n return this._priority;\n }\n\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n\n this._onPriorityChange(priority);\n }\n }\n\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n\n to(...args) {\n return Globals.to(this, args);\n }\n\n interpolate(...args) {\n deprecateInterpolate();\n return Globals.to(this, args);\n }\n\n toJSON() {\n return this.get();\n }\n\n observerAdded(count) {\n if (count == 1) this._attach();\n }\n\n observerRemoved(count) {\n if (count == 0) this._detach();\n }\n\n _attach() {}\n\n _detach() {}\n\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: 'change',\n parent: this,\n value,\n idle\n });\n }\n\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n\n callFluidObservers(this, {\n type: 'priority',\n parent: this,\n priority\n });\n }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n constructor(arg1, arg2) {\n super();\n this.key = void 0;\n this.animation = new Animation();\n this.queue = void 0;\n this.defaultProps = {};\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._pendingCalls = new Set();\n this._lastCallId = 0;\n this._lastToId = 0;\n this._memoizedDuration = 0;\n\n if (!is.und(arg1) || !is.und(arg2)) {\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n from: arg1\n });\n\n if (is.und(props.default)) {\n props.default = true;\n }\n\n this.start(props);\n }\n }\n\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n\n get goal() {\n return getFluidValue(this.animation.to);\n }\n\n get velocity() {\n const node = getAnimated(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n }\n\n get hasAnimated() {\n return hasAnimated(this);\n }\n\n get isAnimating() {\n return isAnimating(this);\n }\n\n get isPaused() {\n return isPaused(this);\n }\n\n get isDelayed() {\n return this._state.delayed;\n }\n\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let {\n config,\n toValues\n } = anim;\n const payload = getPayload(anim.to);\n\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray(getFluidValue(anim.to));\n }\n\n anim.values.forEach((node, i) => {\n if (node.done) return;\n const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n let finished = anim.immediate;\n let position = to;\n\n if (!finished) {\n position = node.lastPosition;\n\n if (config.tension <= 0) {\n node.done = true;\n return;\n }\n\n let elapsed = node.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n let velocity;\n\n if (!is.und(config.duration)) {\n let p = 1;\n\n if (config.duration > 0) {\n if (this._memoizedDuration !== config.duration) {\n this._memoizedDuration = config.duration;\n\n if (node.durationProgress > 0) {\n node.elapsedTime = config.duration * node.durationProgress;\n elapsed = node.elapsedTime += dt;\n }\n }\n\n p = (config.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node.durationProgress = p;\n }\n\n position = from + config.easing(p) * (to - from);\n velocity = (position - node.lastPosition) / dt;\n finished = p == 1;\n } else if (config.decay) {\n const decay = config.decay === true ? 0.998 : config.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node.lastPosition - position) < 0.1;\n velocity = v0 * e;\n } else {\n velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n const restVelocity = config.restVelocity || precision / 10;\n const bounceFactor = config.clamp ? 0 : config.bounce;\n const canBounce = !is.und(bounceFactor);\n const isGrowing = from == to ? node.v0 > 0 : from < to;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n\n if (!isMoving) {\n finished = Math.abs(to - position) <= precision;\n\n if (finished) {\n break;\n }\n }\n\n if (canBounce) {\n isBouncing = position == to || position > to == isGrowing;\n\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to;\n }\n }\n\n const springForce = -config.tension * 0.000001 * (position - to);\n const dampingForce = -config.friction * 0.001 * velocity;\n const acceleration = (springForce + dampingForce) / config.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n\n node.lastVelocity = velocity;\n\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n\n if (payload && !payload[i].done) {\n finished = false;\n }\n\n if (finished) {\n node.done = true;\n } else {\n idle = false;\n }\n\n if (node.setValue(position, config.round)) {\n changed = true;\n }\n });\n const node = getAnimated(this);\n const currVal = node.getValue();\n\n if (idle) {\n const finalVal = getFluidValue(anim.to);\n\n if ((currVal !== finalVal || changed) && !config.decay) {\n node.setValue(finalVal);\n\n this._onChange(finalVal);\n } else if (changed && config.decay) {\n this._onChange(currVal);\n }\n\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n\n set(value) {\n raf.batchedUpdates(() => {\n this._stop();\n\n this._focus(value);\n\n this._set(value);\n });\n return this;\n }\n\n pause() {\n this._update({\n pause: true\n });\n }\n\n resume() {\n this._update({\n pause: false\n });\n }\n\n finish() {\n if (isAnimating(this)) {\n const {\n to,\n config\n } = this.animation;\n raf.batchedUpdates(() => {\n this._onStart();\n\n if (!config.decay) {\n this._set(to, false);\n }\n\n this._stop();\n });\n }\n\n return this;\n }\n\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n\n start(to, arg2) {\n let queue;\n\n if (!is.und(to)) {\n queue = [is.obj(to) ? to : _extends({}, arg2, {\n to\n })];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n\n return Promise.all(queue.map(props => {\n const up = this._update(props);\n\n return up;\n })).then(results => getCombinedResult(this, results));\n }\n\n stop(cancel) {\n const {\n to\n } = this.animation;\n\n this._focus(this.get());\n\n stopAsync(this._state, cancel && this._lastCallId);\n raf.batchedUpdates(() => this._stop(to, cancel));\n return this;\n }\n\n reset() {\n this._update({\n reset: true\n });\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._start();\n } else if (event.type == 'priority') {\n this.priority = event.priority + 1;\n }\n }\n\n _prepareNode(props) {\n const key = this.key || '';\n let {\n to,\n from\n } = props;\n to = is.obj(to) ? to[key] : to;\n\n if (to == null || isAsyncTo(to)) {\n to = undefined;\n }\n\n from = is.obj(from) ? from[key] : from;\n\n if (from == null) {\n from = undefined;\n }\n\n const range = {\n to,\n from\n };\n\n if (!hasAnimated(this)) {\n if (props.reverse) [to, from] = [from, to];\n from = getFluidValue(from);\n\n if (!is.und(from)) {\n this._set(from);\n } else if (!getAnimated(this)) {\n this._set(to);\n }\n }\n\n return range;\n }\n\n _update(_ref, isLoop) {\n let props = _extends({}, _ref);\n\n const {\n key,\n defaultProps\n } = this;\n if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n mergeActiveFn(this, props, 'onProps');\n sendEvent(this, 'onProps', props, this);\n\n const range = this._prepareNode(props);\n\n if (Object.isFrozen(this)) {\n throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n }\n\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n\n if (isAnimating(this)) {\n this._resume();\n }\n\n flushCalls(state.resumeQueue);\n sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then(result => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n\n return result;\n });\n }\n\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n\n const hasToProp = !is.und(range.to);\n const hasFromProp = !is.und(range.from);\n\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n\n const {\n key,\n defaultProps,\n animation: anim\n } = this;\n const {\n to: prevTo,\n from: prevFrom\n } = anim;\n let {\n to = prevTo,\n from = prevFrom\n } = range;\n\n if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n to = from;\n }\n\n if (props.reverse) [to, from] = [from, to];\n const hasFromChanged = !isEqual(from, prevFrom);\n\n if (hasFromChanged) {\n anim.from = from;\n }\n\n from = getFluidValue(from);\n const hasToChanged = !isEqual(to, prevTo);\n\n if (hasToChanged) {\n this._focus(to);\n }\n\n const hasAsyncTo = isAsyncTo(props.to);\n const {\n config\n } = anim;\n const {\n decay,\n velocity\n } = config;\n\n if (hasToProp || hasFromProp) {\n config.velocity = 0;\n }\n\n if (props.config && !hasAsyncTo) {\n mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n }\n\n let node = getAnimated(this);\n\n if (!node || is.und(to)) {\n return resolve(getFinishedResult(this, true));\n }\n\n const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n const value = reset ? from : this.get();\n const goal = computeGoal(to);\n const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n if (hasToChanged) {\n const nodeType = getAnimatedType(to);\n\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n }\n }\n\n const goalType = node.constructor;\n let started = hasFluidValue(to);\n let finished = false;\n\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n started = true;\n }\n }\n\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n }\n\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n\n if (started) {\n const {\n onRest\n } = anim;\n each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n\n this._pendingCalls.add(resolve);\n\n if (anim.changed) raf.batchedUpdates(() => {\n anim.changed = !reset;\n onRest == null ? void 0 : onRest(result, this);\n\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart == null ? void 0 : anim.onStart(result, this);\n }\n });\n }\n }\n\n if (reset) {\n this._set(value);\n }\n\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n\n _focus(value) {\n const anim = this.animation;\n\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n\n anim.to = value;\n\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n\n _attach() {\n let priority = 0;\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n addFluidObserver(to, this);\n\n if (isFrameValue(to)) {\n priority = to.priority + 1;\n }\n }\n\n this.priority = priority;\n }\n\n _detach() {\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n removeFluidObserver(to, this);\n }\n }\n\n _set(arg, idle = true) {\n const value = getFluidValue(arg);\n\n if (!is.und(value)) {\n const oldNode = getAnimated(this);\n\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n\n if (oldNode) {\n raf.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n\n return getAnimated(this);\n }\n\n _onStart() {\n const anim = this.animation;\n\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n }\n }\n\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n\n callProp(this.animation.onChange, value, this);\n }\n\n callProp(this.defaultProps.onChange, value, this);\n\n super._onChange(value, idle);\n }\n\n _start() {\n const anim = this.animation;\n getAnimated(this).reset(getFluidValue(anim.to));\n\n if (!anim.immediate) {\n anim.fromValues = anim.values.map(node => node.lastPosition);\n }\n\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n\n _resume() {\n if (Globals.skipAnimation) {\n this.finish();\n } else {\n frameLoop.start(this);\n }\n }\n\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each(anim.values, node => {\n node.done = true;\n });\n\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = undefined;\n }\n\n callFluidObservers(this, {\n type: 'idle',\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n flushCalls(this._pendingCalls, result);\n\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, 'onRest', result, this);\n }\n }\n }\n\n}\n\nfunction checkFinished(target, to) {\n const goal = computeGoal(to);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n let loopRet = callProp(loop);\n\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate(_extends({}, props, {\n loop,\n default: false,\n pause: undefined,\n to: !reverse || isAsyncTo(to) ? to : undefined,\n from: reset ? props.from : undefined,\n reset\n }, overrides));\n }\n}\nfunction createUpdate(props) {\n const {\n to,\n from\n } = props = inferTo(props);\n const keys = new Set();\n if (is.obj(to)) findDefined(to, keys);\n if (is.obj(from)) findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update = createUpdate(props);\n\n if (is.und(update.default)) {\n update.default = getDefaultProps(update);\n }\n\n return update;\n}\n\nfunction findDefined(values, keys) {\n eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n constructor(props, flush) {\n this.id = nextId++;\n this.springs = {};\n this.queue = [];\n this.ref = void 0;\n this._flush = void 0;\n this._initialProps = void 0;\n this._lastAsyncId = 0;\n this._active = new Set();\n this._changed = new Set();\n this._started = false;\n this._item = void 0;\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._events = {\n onStart: new Map(),\n onChange: new Map(),\n onRest: new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n\n if (flush) {\n this._flush = flush;\n }\n\n if (props) {\n this.start(_extends({\n default: true\n }, props));\n }\n }\n\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n\n get item() {\n return this._item;\n }\n\n set item(item) {\n this._item = item;\n }\n\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n\n set(values) {\n for (const key in values) {\n const value = values[key];\n\n if (!is.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n\n return this;\n }\n\n start(props) {\n let {\n queue\n } = this;\n\n if (props) {\n queue = toArray(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n\n if (this._flush) {\n return this._flush(this, queue);\n }\n\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n\n if (keys) {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each(spring => spring.stop(!!arg));\n }\n\n return this;\n }\n\n pause(keys) {\n if (is.und(keys)) {\n this.start({\n pause: true\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].pause());\n }\n\n return this;\n }\n\n resume(keys) {\n if (is.und(keys)) {\n this.start({\n pause: false\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].resume());\n }\n\n return this;\n }\n\n each(iterator) {\n eachProp(this.springs, iterator);\n }\n\n _onFrame() {\n const {\n onStart,\n onChange,\n onRest\n } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush(onStart, ([onStart, result]) => {\n result.value = this.get();\n onStart(result, this, this._item);\n });\n }\n\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n\n if (changed && onChange.size) {\n flush(onChange, ([onChange, result]) => {\n result.value = values;\n onChange(result, this, this._item);\n });\n }\n\n if (idle) {\n this._started = false;\n flush(onRest, ([onRest, result]) => {\n result.value = values;\n onRest(result, this, this._item);\n });\n }\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._changed.add(event.parent);\n\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else return;\n\n raf.onFrame(this._onFrame);\n }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const {\n keys,\n to,\n from,\n loop,\n onRest,\n onResolve\n } = props;\n const defaults = is.obj(props.default) && props.default;\n\n if (loop) {\n props.loop = false;\n }\n\n if (to === false) props.to = null;\n if (from === false) props.from = null;\n const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n if (asyncTo) {\n props.to = undefined;\n props.onRest = undefined;\n\n if (defaults) {\n defaults.onRest = undefined;\n }\n } else {\n each(BATCHED_EVENTS, key => {\n const handler = props[key];\n\n if (is.fun(handler)) {\n const queue = ctrl['_events'][key];\n\n props[key] = ({\n finished,\n cancelled\n }) => {\n const result = queue.get(handler);\n\n if (result) {\n if (!finished) result.finished = false;\n if (cancelled) result.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n\n if (defaults) {\n defaults[key] = props[key];\n }\n }\n });\n }\n\n const state = ctrl['_state'];\n\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n\n const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n if (asyncTo || cancel && state.asyncId) {\n promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n\n start(props, resolve) {\n if (cancel) {\n stopAsync(state, ctrl['_lastAsyncId']);\n resolve(getCancelledResult(ctrl));\n } else {\n props.onRest = onRest;\n resolve(runAsync(asyncTo, props, state, ctrl));\n }\n }\n\n }\n }));\n }\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to);\n\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n\n if (onResolve) {\n raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = _extends({}, ctrl.springs);\n\n if (props) {\n each(toArray(props), props => {\n if (is.und(props.keys)) {\n props = createUpdate(props);\n }\n\n if (!is.obj(props.to)) {\n props = _extends({}, props, {\n to: undefined\n });\n }\n\n prepareSprings(springs, props, key => {\n return createSpring(key);\n });\n });\n }\n\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver(spring, ctrl);\n }\n });\n}\n\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n\n if (observer) {\n addFluidObserver(spring, observer);\n }\n\n return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each(props.keys, key => {\n const spring = springs[key] || (springs[key] = create(key));\n spring['_prepareNode'](props);\n });\n }\n}\n\nfunction prepareKeys(ctrl, queue) {\n each(queue, props => {\n prepareSprings(ctrl.springs, props, key => {\n return createSpring(key, ctrl);\n });\n });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause,\n immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({\n pause,\n immediate\n }), [pause, immediate]);\n const {\n Provider\n } = ctx;\n return React.createElement(Provider, {\n value: props\n }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\nconst SpringRef = () => {\n const current = [];\n\n const SpringRef = function SpringRef(props) {\n deprecateDirectCall();\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = _getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.current = current;\n\n SpringRef.add = function (ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n\n SpringRef.delete = function (ctrl) {\n const i = current.indexOf(ctrl);\n if (~i) current.splice(i, 1);\n };\n\n SpringRef.pause = function () {\n each(current, ctrl => ctrl.pause(...arguments));\n return this;\n };\n\n SpringRef.resume = function () {\n each(current, ctrl => ctrl.resume(...arguments));\n return this;\n };\n\n SpringRef.set = function (values) {\n each(current, ctrl => ctrl.set(values));\n };\n\n SpringRef.start = function (props) {\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = this._getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.stop = function () {\n each(current, ctrl => ctrl.stop(...arguments));\n return this;\n };\n\n SpringRef.update = function (props) {\n each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n\n const _getProps = function _getProps(arg, ctrl, index) {\n return is.fun(arg) ? arg(index, ctrl) : arg;\n };\n\n SpringRef._getProps = _getProps;\n return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n const propsFn = is.fun(props) && props;\n if (propsFn && !deps) deps = [];\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(() => ({\n ctrls: [],\n queue: [],\n\n flush(ctrl, updates) {\n const springs = getSprings(ctrl, updates);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n setSprings(ctrl, springs);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates));\n });\n forceUpdate();\n });\n }\n\n }), []);\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each(ctrls.current.slice(length, prevLength), ctrl => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n if (update) {\n updates[i] = declareUpdate(update);\n }\n }\n }\n\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const {\n queue\n } = state;\n\n if (queue.length) {\n state.queue = [];\n each(queue, cb => cb());\n }\n\n each(ctrls.current, (ctrl, i) => {\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext) {\n ctrl.start({\n default: context\n });\n }\n\n const update = updates[i];\n\n if (update) {\n replaceRef(ctrl, update.ref);\n\n if (ctrl.ref) {\n ctrl.queue.push(update);\n } else {\n ctrl.start(update);\n }\n }\n });\n });\n useOnce(() => () => {\n each(state.ctrls, ctrl => ctrl.stop(true));\n });\n const values = springs.map(x => _extends({}, x));\n return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n const isFn = is.fun(props);\n const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n var _passedRef;\n\n const propsFn = is.fun(propsArg) && propsArg;\n if (propsFn && !deps) deps = [];\n let reverse = true;\n let passedRef = undefined;\n const result = useSprings(length, (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n }, deps || [{}]);\n const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n useLayoutEffect(() => {\n each(ref.current, (ctrl, i) => {\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n ctrl.start({\n to: parent.springs\n });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n\n if (propsFn || arguments.length == 3) {\n ref['_getProps'] = (propsArg, ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent) props.to = parent.springs;\n return props;\n }\n };\n\n return result;\n }\n\n ref['start'] = propsArg => {\n const results = [];\n each(ref.current, (ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n results.push(ctrl.start(_extends({}, props, {\n to: parent.springs\n })));\n } else {\n results.push(ctrl.start(_extends({}, props)));\n }\n });\n return results;\n };\n\n return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n TransitionPhase[\"MOUNT\"] = \"mount\";\n TransitionPhase[\"ENTER\"] = \"enter\";\n TransitionPhase[\"UPDATE\"] = \"update\";\n TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n const propsFn = is.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const items = toArray(data);\n const transitions = [];\n const usedTransitions = useRef(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useLayoutEffect(() => {\n usedTransitions.current = transitions;\n });\n useOnce(() => {\n each(usedTransitions.current, t => {\n var _t$ctrl$ref;\n\n (_t$ctrl$ref = t.ctrl.ref) == null ? void 0 : _t$ctrl$ref.add(t.ctrl);\n const change = changes.get(t);\n\n if (change) {\n t.ctrl.start(change.payload);\n }\n });\n return () => {\n each(usedTransitions.current, t => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useLayoutEffect(() => each(expired, ({\n ctrl,\n item,\n key\n }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n }));\n const reused = [];\n if (prevTransitions) each(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i) transitions[i] = t;\n }\n });\n each(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: TransitionPhase.MOUNT,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n\n if (reused.length) {\n let i = -1;\n const {\n leave\n } = propsFn ? propsFn() : props;\n each(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = _extends({}, t, {\n item: items[keyIndex]\n });\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n\n if (is.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n\n let delay = -trail;\n const forceUpdate = useForceUpdate();\n const defaultProps = getDefaultProps(props);\n const changes = new Map();\n const exitingTransitions = useRef(new Map());\n const forceChange = useRef(false);\n each(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to;\n let phase;\n let propsDelay = callProp(p.delay || 0, key);\n\n if (prevPhase == TransitionPhase.MOUNT) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n\n if (prevPhase != TransitionPhase.LEAVE) {\n if (isLeave) {\n to = p.leave;\n phase = TransitionPhase.LEAVE;\n } else if (to = p.update) {\n phase = TransitionPhase.UPDATE;\n } else return;\n } else if (!isLeave) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else return;\n }\n\n to = callProp(to, t.item, i);\n to = is.obj(to) ? inferTo(to) : {\n to\n };\n\n if (!to.config) {\n const config = propsConfig || defaultProps.config;\n to.config = callProp(config, t.item, i, phase);\n }\n\n delay += trail;\n\n const payload = _extends({}, defaultProps, {\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n reset: false\n }, to);\n\n if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n const _p = propsFn ? propsFn() : props;\n\n const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n payload.from = callProp(from, t.item, i);\n }\n\n const {\n onResolve\n } = payload;\n\n payload.onResolve = result => {\n callProp(onResolve, result);\n const transitions = usedTransitions.current;\n const t = transitions.find(t => t.key === key);\n if (!t) return;\n\n if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n return;\n }\n\n if (t.ctrl.idle) {\n const idle = transitions.every(t => t.ctrl.idle);\n\n if (t.phase == TransitionPhase.LEAVE) {\n const expiry = callProp(expires, t.item);\n\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t.expired = true;\n\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n\n if (idle && transitions.some(t => t.expired)) {\n exitingTransitions.current.delete(t);\n\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n\n forceUpdate();\n }\n }\n };\n\n const springs = getSprings(t.ctrl, payload);\n\n if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n exitingTransitions.current.set(t, {\n phase,\n springs,\n payload\n });\n } else {\n changes.set(t, {\n phase,\n springs,\n payload\n });\n }\n });\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n if (hasContext) {\n each(transitions, t => {\n t.ctrl.start({\n default: context\n });\n });\n }\n }, [context]);\n each(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex(state => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useLayoutEffect(() => {\n each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n phase,\n payload\n }, t) => {\n const {\n ctrl\n } = t;\n t.phase = phase;\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext && phase == TransitionPhase.ENTER) {\n ctrl.start({\n default: context\n });\n }\n\n if (payload) {\n replaceRef(ctrl, payload.ref);\n\n if (ctrl.ref && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n });\n }, reset ? void 0 : deps);\n\n const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n const {\n springs\n } = changes.get(t) || t.ctrl;\n const elem = render(_extends({}, springs), t.item, t, i);\n return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n })) : elem;\n }));\n\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n key,\n keys = key\n}, prevTransitions) {\n if (keys === null) {\n const reused = new Set();\n return items.map(item => {\n const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n if (t) {\n reused.add(t);\n return t.key;\n }\n\n return nextKey++;\n });\n }\n\n return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is.fun(result) ? result(trails[index]) : result;\n });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n constructor(source, args) {\n super();\n this.key = void 0;\n this.idle = true;\n this.calc = void 0;\n this._active = new Set();\n this.source = source;\n this.calc = createInterpolator(...args);\n\n const value = this._get();\n\n const nodeType = getAnimatedType(value);\n setAnimated(this, nodeType.create(value));\n }\n\n advance(_dt) {\n const value = this._get();\n\n const oldValue = this.get();\n\n if (!isEqual(value, oldValue)) {\n getAnimated(this).setValue(value);\n\n this._onChange(value, this.idle);\n }\n\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n\n _get() {\n const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n return this.calc(...inputs);\n }\n\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each(getPayload(this), node => {\n node.done = false;\n });\n\n if (Globals.skipAnimation) {\n raf.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop.start(this);\n }\n }\n }\n\n _attach() {\n let priority = 1;\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n addFluidObserver(source, this);\n }\n\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n\n this._start();\n }\n\n _detach() {\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n removeFluidObserver(source, this);\n }\n });\n\n this._active.clear();\n\n becomeIdle(this);\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n\n this._start();\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else if (event.type == 'priority') {\n this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n }\n }\n\n}\n\nfunction isIdle(source) {\n return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each(getPayload(self), node => {\n node.done = true;\n });\n callFluidObservers(self, {\n type: 'idle',\n parent: self\n });\n }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","import { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n\n const defaults = {};\n\n for (const key of keys) {\n const value = transform(props[key], key);\n\n if (!is.und(value)) {\n defaults[key] = value;\n }\n }\n\n return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n keys: 1,\n callId: 1,\n parentId: 1\n};\n\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n\n if (count) {\n return forward;\n }\n}\n\nfunction inferTo(props) {\n const to = getForwardProps(props);\n\n if (to) {\n const out = {\n to\n };\n eachProp(props, (val, key) => key in to || (out[key] = val));\n return out;\n }\n\n return _extends({}, props);\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props) return true;\n\n return false;\n}\nfunction isAsyncTo(to) {\n return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n var _ctrl$ref;\n\n (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n var _ctrl$ref2;\n\n (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n useLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n each(controllers, ctrl => {\n each(ctrl.queue, props => {\n const memoizedDelayProp = props.delay;\n\n props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, ref => {\n const controllers = ref.current;\n\n if (controllers.length) {\n const queues = controllers.map(ctrl => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1) {\n return n1 * x * x;\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n};\n\nconst easings = {\n linear: x => x,\n easeInQuad: x => x * x,\n easeOutQuad: x => 1 - (1 - x) * (1 - x),\n easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n easeInCubic: x => x * x * x,\n easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: x => x * x * x * x,\n easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: x => x * x * x * x * x,\n easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n easeOutSine: x => Math.sin(x * Math.PI / 2),\n easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: x => c3 * x * x * x - c1 * x * x,\n easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n easeInBounce: x => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n});\n\nclass AnimationConfig {\n constructor() {\n this.tension = void 0;\n this.friction = void 0;\n this.frequency = void 0;\n this.damping = void 0;\n this.mass = void 0;\n this.velocity = 0;\n this.restVelocity = void 0;\n this.precision = void 0;\n this.progress = void 0;\n this.duration = void 0;\n this.easing = void 0;\n this.clamp = void 0;\n this.bounce = void 0;\n this.decay = void 0;\n this.round = void 0;\n Object.assign(this, defaults);\n }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = _extends({}, defaultConfig);\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = _extends({}, defaultConfig, newConfig);\n }\n\n sanitizeConfig(config, newConfig);\n Object.assign(config, newConfig);\n\n for (const key in defaults) {\n if (config[key] == null) {\n config[key] = defaults[key];\n }\n }\n\n let {\n mass,\n frequency,\n damping\n } = config;\n\n if (!is.und(frequency)) {\n if (frequency < 0.01) frequency = 0.01;\n if (damping < 0) damping = 0;\n config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config.friction = 4 * Math.PI * damping * mass / frequency;\n }\n\n return config;\n}\n\nfunction sanitizeConfig(config, props) {\n if (!is.und(props.decay)) {\n config.duration = undefined;\n } else {\n const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n config.duration = undefined;\n config.decay = undefined;\n }\n\n if (isTensionConfig) {\n config.frequency = undefined;\n }\n }\n}\n\nconst emptyArray = [];\nclass Animation {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.to = void 0;\n this.from = void 0;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n\n}\n\nfunction scheduleProps(callId, {\n key,\n props,\n defaultProps,\n state,\n actions\n}) {\n return new Promise((resolve, reject) => {\n var _props$cancel;\n\n let delay;\n let timeout;\n let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n if (cancel) {\n onStart();\n } else {\n if (!is.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n\n let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n\n delay = callProp(props.delay || 0, key);\n\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n\n function onResume() {\n if (delay > 0 && !Globals.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n\n try {\n actions.start(_extends({}, props, {\n callId,\n cancel\n }), resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nconst getCancelledResult = value => ({\n value,\n cancelled: true,\n finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n const {\n callId,\n parentId,\n onRest\n } = props;\n const {\n asyncTo: prevTo,\n promise: prevPromise\n } = state;\n\n if (!parentId && to === prevTo && !props.reset) {\n return prevPromise;\n }\n\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to;\n const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n let preventBail;\n let bail;\n const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n const bailIfEnded = bailSignal => {\n const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAniamtionSignal();\n return (async () => {\n if (Globals.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n\n bailIfEnded(bailSignal);\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n to: arg1\n });\n props.parentId = callId;\n eachProp(defaultProps, (value, key) => {\n if (is.und(props[key])) {\n props[key] = value;\n }\n });\n const result = await target.start(props);\n bailIfEnded(bailSignal);\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n return result;\n })();\n };\n\n let result;\n\n if (Globals.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n\n try {\n let animating;\n\n if (is.arr(to)) {\n animating = (async queue => {\n for (const props of queue) {\n await animate(props);\n }\n })(to);\n } else {\n animating = Promise.resolve(to(animate, target.stop.bind(target)));\n }\n\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAniamtionSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : undefined;\n state.promise = parentId ? prevPromise : undefined;\n }\n }\n\n if (is.fun(onRest)) {\n raf.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, t => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = undefined;\n if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n constructor() {\n super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n this.result = void 0;\n }\n\n}\nclass SkipAniamtionSignal extends Error {\n constructor() {\n super('SkipAnimationSignal');\n this.result = void 0;\n }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n constructor(...args) {\n super(...args);\n this.id = nextId$1++;\n this.key = void 0;\n this._priority = 0;\n }\n\n get priority() {\n return this._priority;\n }\n\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n\n this._onPriorityChange(priority);\n }\n }\n\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n\n to(...args) {\n return Globals.to(this, args);\n }\n\n interpolate(...args) {\n deprecateInterpolate();\n return Globals.to(this, args);\n }\n\n toJSON() {\n return this.get();\n }\n\n observerAdded(count) {\n if (count == 1) this._attach();\n }\n\n observerRemoved(count) {\n if (count == 0) this._detach();\n }\n\n _attach() {}\n\n _detach() {}\n\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: 'change',\n parent: this,\n value,\n idle\n });\n }\n\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n\n callFluidObservers(this, {\n type: 'priority',\n parent: this,\n priority\n });\n }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n constructor(arg1, arg2) {\n super();\n this.key = void 0;\n this.animation = new Animation();\n this.queue = void 0;\n this.defaultProps = {};\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._pendingCalls = new Set();\n this._lastCallId = 0;\n this._lastToId = 0;\n this._memoizedDuration = 0;\n\n if (!is.und(arg1) || !is.und(arg2)) {\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n from: arg1\n });\n\n if (is.und(props.default)) {\n props.default = true;\n }\n\n this.start(props);\n }\n }\n\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n\n get goal() {\n return getFluidValue(this.animation.to);\n }\n\n get velocity() {\n const node = getAnimated(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n }\n\n get hasAnimated() {\n return hasAnimated(this);\n }\n\n get isAnimating() {\n return isAnimating(this);\n }\n\n get isPaused() {\n return isPaused(this);\n }\n\n get isDelayed() {\n return this._state.delayed;\n }\n\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let {\n config,\n toValues\n } = anim;\n const payload = getPayload(anim.to);\n\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray(getFluidValue(anim.to));\n }\n\n anim.values.forEach((node, i) => {\n if (node.done) return;\n const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n let finished = anim.immediate;\n let position = to;\n\n if (!finished) {\n position = node.lastPosition;\n\n if (config.tension <= 0) {\n node.done = true;\n return;\n }\n\n let elapsed = node.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n let velocity;\n\n if (!is.und(config.duration)) {\n let p = 1;\n\n if (config.duration > 0) {\n if (this._memoizedDuration !== config.duration) {\n this._memoizedDuration = config.duration;\n\n if (node.durationProgress > 0) {\n node.elapsedTime = config.duration * node.durationProgress;\n elapsed = node.elapsedTime += dt;\n }\n }\n\n p = (config.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node.durationProgress = p;\n }\n\n position = from + config.easing(p) * (to - from);\n velocity = (position - node.lastPosition) / dt;\n finished = p == 1;\n } else if (config.decay) {\n const decay = config.decay === true ? 0.998 : config.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node.lastPosition - position) < 0.1;\n velocity = v0 * e;\n } else {\n velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n const restVelocity = config.restVelocity || precision / 10;\n const bounceFactor = config.clamp ? 0 : config.bounce;\n const canBounce = !is.und(bounceFactor);\n const isGrowing = from == to ? node.v0 > 0 : from < to;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n\n if (!isMoving) {\n finished = Math.abs(to - position) <= precision;\n\n if (finished) {\n break;\n }\n }\n\n if (canBounce) {\n isBouncing = position == to || position > to == isGrowing;\n\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to;\n }\n }\n\n const springForce = -config.tension * 0.000001 * (position - to);\n const dampingForce = -config.friction * 0.001 * velocity;\n const acceleration = (springForce + dampingForce) / config.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n\n node.lastVelocity = velocity;\n\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n\n if (payload && !payload[i].done) {\n finished = false;\n }\n\n if (finished) {\n node.done = true;\n } else {\n idle = false;\n }\n\n if (node.setValue(position, config.round)) {\n changed = true;\n }\n });\n const node = getAnimated(this);\n const currVal = node.getValue();\n\n if (idle) {\n const finalVal = getFluidValue(anim.to);\n\n if ((currVal !== finalVal || changed) && !config.decay) {\n node.setValue(finalVal);\n\n this._onChange(finalVal);\n } else if (changed && config.decay) {\n this._onChange(currVal);\n }\n\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n\n set(value) {\n raf.batchedUpdates(() => {\n this._stop();\n\n this._focus(value);\n\n this._set(value);\n });\n return this;\n }\n\n pause() {\n this._update({\n pause: true\n });\n }\n\n resume() {\n this._update({\n pause: false\n });\n }\n\n finish() {\n if (isAnimating(this)) {\n const {\n to,\n config\n } = this.animation;\n raf.batchedUpdates(() => {\n this._onStart();\n\n if (!config.decay) {\n this._set(to, false);\n }\n\n this._stop();\n });\n }\n\n return this;\n }\n\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n\n start(to, arg2) {\n let queue;\n\n if (!is.und(to)) {\n queue = [is.obj(to) ? to : _extends({}, arg2, {\n to\n })];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n\n return Promise.all(queue.map(props => {\n const up = this._update(props);\n\n return up;\n })).then(results => getCombinedResult(this, results));\n }\n\n stop(cancel) {\n const {\n to\n } = this.animation;\n\n this._focus(this.get());\n\n stopAsync(this._state, cancel && this._lastCallId);\n raf.batchedUpdates(() => this._stop(to, cancel));\n return this;\n }\n\n reset() {\n this._update({\n reset: true\n });\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._start();\n } else if (event.type == 'priority') {\n this.priority = event.priority + 1;\n }\n }\n\n _prepareNode(props) {\n const key = this.key || '';\n let {\n to,\n from\n } = props;\n to = is.obj(to) ? to[key] : to;\n\n if (to == null || isAsyncTo(to)) {\n to = undefined;\n }\n\n from = is.obj(from) ? from[key] : from;\n\n if (from == null) {\n from = undefined;\n }\n\n const range = {\n to,\n from\n };\n\n if (!hasAnimated(this)) {\n if (props.reverse) [to, from] = [from, to];\n from = getFluidValue(from);\n\n if (!is.und(from)) {\n this._set(from);\n } else if (!getAnimated(this)) {\n this._set(to);\n }\n }\n\n return range;\n }\n\n _update(_ref, isLoop) {\n let props = _extends({}, _ref);\n\n const {\n key,\n defaultProps\n } = this;\n if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n mergeActiveFn(this, props, 'onProps');\n sendEvent(this, 'onProps', props, this);\n\n const range = this._prepareNode(props);\n\n if (Object.isFrozen(this)) {\n throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n }\n\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n\n if (isAnimating(this)) {\n this._resume();\n }\n\n flushCalls(state.resumeQueue);\n sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then(result => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n\n return result;\n });\n }\n\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n\n const hasToProp = !is.und(range.to);\n const hasFromProp = !is.und(range.from);\n\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n\n const {\n key,\n defaultProps,\n animation: anim\n } = this;\n const {\n to: prevTo,\n from: prevFrom\n } = anim;\n let {\n to = prevTo,\n from = prevFrom\n } = range;\n\n if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n to = from;\n }\n\n if (props.reverse) [to, from] = [from, to];\n const hasFromChanged = !isEqual(from, prevFrom);\n\n if (hasFromChanged) {\n anim.from = from;\n }\n\n from = getFluidValue(from);\n const hasToChanged = !isEqual(to, prevTo);\n\n if (hasToChanged) {\n this._focus(to);\n }\n\n const hasAsyncTo = isAsyncTo(props.to);\n const {\n config\n } = anim;\n const {\n decay,\n velocity\n } = config;\n\n if (hasToProp || hasFromProp) {\n config.velocity = 0;\n }\n\n if (props.config && !hasAsyncTo) {\n mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n }\n\n let node = getAnimated(this);\n\n if (!node || is.und(to)) {\n return resolve(getFinishedResult(this, true));\n }\n\n const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n const value = reset ? from : this.get();\n const goal = computeGoal(to);\n const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n if (hasToChanged) {\n const nodeType = getAnimatedType(to);\n\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n }\n }\n\n const goalType = node.constructor;\n let started = hasFluidValue(to);\n let finished = false;\n\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n started = true;\n }\n }\n\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n }\n\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n\n if (started) {\n const {\n onRest\n } = anim;\n each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n\n this._pendingCalls.add(resolve);\n\n if (anim.changed) raf.batchedUpdates(() => {\n anim.changed = !reset;\n onRest == null ? void 0 : onRest(result, this);\n\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart == null ? void 0 : anim.onStart(result, this);\n }\n });\n }\n }\n\n if (reset) {\n this._set(value);\n }\n\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n\n _focus(value) {\n const anim = this.animation;\n\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n\n anim.to = value;\n\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n\n _attach() {\n let priority = 0;\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n addFluidObserver(to, this);\n\n if (isFrameValue(to)) {\n priority = to.priority + 1;\n }\n }\n\n this.priority = priority;\n }\n\n _detach() {\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n removeFluidObserver(to, this);\n }\n }\n\n _set(arg, idle = true) {\n const value = getFluidValue(arg);\n\n if (!is.und(value)) {\n const oldNode = getAnimated(this);\n\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n\n if (oldNode) {\n raf.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n\n return getAnimated(this);\n }\n\n _onStart() {\n const anim = this.animation;\n\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n }\n }\n\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n\n callProp(this.animation.onChange, value, this);\n }\n\n callProp(this.defaultProps.onChange, value, this);\n\n super._onChange(value, idle);\n }\n\n _start() {\n const anim = this.animation;\n getAnimated(this).reset(getFluidValue(anim.to));\n\n if (!anim.immediate) {\n anim.fromValues = anim.values.map(node => node.lastPosition);\n }\n\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n\n _resume() {\n if (Globals.skipAnimation) {\n this.finish();\n } else {\n frameLoop.start(this);\n }\n }\n\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each(anim.values, node => {\n node.done = true;\n });\n\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = undefined;\n }\n\n callFluidObservers(this, {\n type: 'idle',\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n flushCalls(this._pendingCalls, result);\n\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, 'onRest', result, this);\n }\n }\n }\n\n}\n\nfunction checkFinished(target, to) {\n const goal = computeGoal(to);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n let loopRet = callProp(loop);\n\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate(_extends({}, props, {\n loop,\n default: false,\n pause: undefined,\n to: !reverse || isAsyncTo(to) ? to : undefined,\n from: reset ? props.from : undefined,\n reset\n }, overrides));\n }\n}\nfunction createUpdate(props) {\n const {\n to,\n from\n } = props = inferTo(props);\n const keys = new Set();\n if (is.obj(to)) findDefined(to, keys);\n if (is.obj(from)) findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update = createUpdate(props);\n\n if (is.und(update.default)) {\n update.default = getDefaultProps(update);\n }\n\n return update;\n}\n\nfunction findDefined(values, keys) {\n eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n constructor(props, flush) {\n this.id = nextId++;\n this.springs = {};\n this.queue = [];\n this.ref = void 0;\n this._flush = void 0;\n this._initialProps = void 0;\n this._lastAsyncId = 0;\n this._active = new Set();\n this._changed = new Set();\n this._started = false;\n this._item = void 0;\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._events = {\n onStart: new Map(),\n onChange: new Map(),\n onRest: new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n\n if (flush) {\n this._flush = flush;\n }\n\n if (props) {\n this.start(_extends({\n default: true\n }, props));\n }\n }\n\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n\n get item() {\n return this._item;\n }\n\n set item(item) {\n this._item = item;\n }\n\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n\n set(values) {\n for (const key in values) {\n const value = values[key];\n\n if (!is.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n\n return this;\n }\n\n start(props) {\n let {\n queue\n } = this;\n\n if (props) {\n queue = toArray(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n\n if (this._flush) {\n return this._flush(this, queue);\n }\n\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n\n if (keys) {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each(spring => spring.stop(!!arg));\n }\n\n return this;\n }\n\n pause(keys) {\n if (is.und(keys)) {\n this.start({\n pause: true\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].pause());\n }\n\n return this;\n }\n\n resume(keys) {\n if (is.und(keys)) {\n this.start({\n pause: false\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].resume());\n }\n\n return this;\n }\n\n each(iterator) {\n eachProp(this.springs, iterator);\n }\n\n _onFrame() {\n const {\n onStart,\n onChange,\n onRest\n } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush(onStart, ([onStart, result]) => {\n result.value = this.get();\n onStart(result, this, this._item);\n });\n }\n\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n\n if (changed && onChange.size) {\n flush(onChange, ([onChange, result]) => {\n result.value = values;\n onChange(result, this, this._item);\n });\n }\n\n if (idle) {\n this._started = false;\n flush(onRest, ([onRest, result]) => {\n result.value = values;\n onRest(result, this, this._item);\n });\n }\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._changed.add(event.parent);\n\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else return;\n\n raf.onFrame(this._onFrame);\n }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const {\n keys,\n to,\n from,\n loop,\n onRest,\n onResolve\n } = props;\n const defaults = is.obj(props.default) && props.default;\n\n if (loop) {\n props.loop = false;\n }\n\n if (to === false) props.to = null;\n if (from === false) props.from = null;\n const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n if (asyncTo) {\n props.to = undefined;\n props.onRest = undefined;\n\n if (defaults) {\n defaults.onRest = undefined;\n }\n } else {\n each(BATCHED_EVENTS, key => {\n const handler = props[key];\n\n if (is.fun(handler)) {\n const queue = ctrl['_events'][key];\n\n props[key] = ({\n finished,\n cancelled\n }) => {\n const result = queue.get(handler);\n\n if (result) {\n if (!finished) result.finished = false;\n if (cancelled) result.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n\n if (defaults) {\n defaults[key] = props[key];\n }\n }\n });\n }\n\n const state = ctrl['_state'];\n\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n\n const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n if (asyncTo || cancel && state.asyncId) {\n promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n\n start(props, resolve) {\n if (cancel) {\n stopAsync(state, ctrl['_lastAsyncId']);\n resolve(getCancelledResult(ctrl));\n } else {\n props.onRest = onRest;\n resolve(runAsync(asyncTo, props, state, ctrl));\n }\n }\n\n }\n }));\n }\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to);\n\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n\n if (onResolve) {\n raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = _extends({}, ctrl.springs);\n\n if (props) {\n each(toArray(props), props => {\n if (is.und(props.keys)) {\n props = createUpdate(props);\n }\n\n if (!is.obj(props.to)) {\n props = _extends({}, props, {\n to: undefined\n });\n }\n\n prepareSprings(springs, props, key => {\n return createSpring(key);\n });\n });\n }\n\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver(spring, ctrl);\n }\n });\n}\n\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n\n if (observer) {\n addFluidObserver(spring, observer);\n }\n\n return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each(props.keys, key => {\n const spring = springs[key] || (springs[key] = create(key));\n spring['_prepareNode'](props);\n });\n }\n}\n\nfunction prepareKeys(ctrl, queue) {\n each(queue, props => {\n prepareSprings(ctrl.springs, props, key => {\n return createSpring(key, ctrl);\n });\n });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause,\n immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({\n pause,\n immediate\n }), [pause, immediate]);\n const {\n Provider\n } = ctx;\n return React.createElement(Provider, {\n value: props\n }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\nconst SpringRef = () => {\n const current = [];\n\n const SpringRef = function SpringRef(props) {\n deprecateDirectCall();\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = _getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.current = current;\n\n SpringRef.add = function (ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n\n SpringRef.delete = function (ctrl) {\n const i = current.indexOf(ctrl);\n if (~i) current.splice(i, 1);\n };\n\n SpringRef.pause = function () {\n each(current, ctrl => ctrl.pause(...arguments));\n return this;\n };\n\n SpringRef.resume = function () {\n each(current, ctrl => ctrl.resume(...arguments));\n return this;\n };\n\n SpringRef.set = function (values) {\n each(current, ctrl => ctrl.set(values));\n };\n\n SpringRef.start = function (props) {\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = this._getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.stop = function () {\n each(current, ctrl => ctrl.stop(...arguments));\n return this;\n };\n\n SpringRef.update = function (props) {\n each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n\n const _getProps = function _getProps(arg, ctrl, index) {\n return is.fun(arg) ? arg(index, ctrl) : arg;\n };\n\n SpringRef._getProps = _getProps;\n return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n const propsFn = is.fun(props) && props;\n if (propsFn && !deps) deps = [];\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(() => ({\n ctrls: [],\n queue: [],\n\n flush(ctrl, updates) {\n const springs = getSprings(ctrl, updates);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n setSprings(ctrl, springs);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates));\n });\n forceUpdate();\n });\n }\n\n }), []);\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each(ctrls.current.slice(length, prevLength), ctrl => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n if (update) {\n updates[i] = declareUpdate(update);\n }\n }\n }\n\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const {\n queue\n } = state;\n\n if (queue.length) {\n state.queue = [];\n each(queue, cb => cb());\n }\n\n each(ctrls.current, (ctrl, i) => {\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext) {\n ctrl.start({\n default: context\n });\n }\n\n const update = updates[i];\n\n if (update) {\n replaceRef(ctrl, update.ref);\n\n if (ctrl.ref) {\n ctrl.queue.push(update);\n } else {\n ctrl.start(update);\n }\n }\n });\n });\n useOnce(() => () => {\n each(state.ctrls, ctrl => ctrl.stop(true));\n });\n const values = springs.map(x => _extends({}, x));\n return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n const isFn = is.fun(props);\n const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n var _passedRef;\n\n const propsFn = is.fun(propsArg) && propsArg;\n if (propsFn && !deps) deps = [];\n let reverse = true;\n let passedRef = undefined;\n const result = useSprings(length, (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n }, deps || [{}]);\n const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n useLayoutEffect(() => {\n each(ref.current, (ctrl, i) => {\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n ctrl.start({\n to: parent.springs\n });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n\n if (propsFn || arguments.length == 3) {\n ref['_getProps'] = (propsArg, ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent) props.to = parent.springs;\n return props;\n }\n };\n\n return result;\n }\n\n ref['start'] = propsArg => {\n const results = [];\n each(ref.current, (ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n results.push(ctrl.start(_extends({}, props, {\n to: parent.springs\n })));\n } else {\n results.push(ctrl.start(_extends({}, props)));\n }\n });\n return results;\n };\n\n return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n TransitionPhase[\"MOUNT\"] = \"mount\";\n TransitionPhase[\"ENTER\"] = \"enter\";\n TransitionPhase[\"UPDATE\"] = \"update\";\n TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n const propsFn = is.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const items = toArray(data);\n const transitions = [];\n const usedTransitions = useRef(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useLayoutEffect(() => {\n usedTransitions.current = transitions;\n });\n useOnce(() => {\n each(usedTransitions.current, t => {\n var _t$ctrl$ref;\n\n (_t$ctrl$ref = t.ctrl.ref) == null ? void 0 : _t$ctrl$ref.add(t.ctrl);\n const change = changes.get(t);\n\n if (change) {\n t.ctrl.start(change.payload);\n }\n });\n return () => {\n each(usedTransitions.current, t => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useLayoutEffect(() => each(expired, ({\n ctrl,\n item,\n key\n }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n }));\n const reused = [];\n if (prevTransitions) each(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i) transitions[i] = t;\n }\n });\n each(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: TransitionPhase.MOUNT,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n\n if (reused.length) {\n let i = -1;\n const {\n leave\n } = propsFn ? propsFn() : props;\n each(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = _extends({}, t, {\n item: items[keyIndex]\n });\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n\n if (is.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n\n let delay = -trail;\n const forceUpdate = useForceUpdate();\n const defaultProps = getDefaultProps(props);\n const changes = new Map();\n const exitingTransitions = useRef(new Map());\n const forceChange = useRef(false);\n each(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to;\n let phase;\n let propsDelay = callProp(p.delay || 0, key);\n\n if (prevPhase == TransitionPhase.MOUNT) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n\n if (prevPhase != TransitionPhase.LEAVE) {\n if (isLeave) {\n to = p.leave;\n phase = TransitionPhase.LEAVE;\n } else if (to = p.update) {\n phase = TransitionPhase.UPDATE;\n } else return;\n } else if (!isLeave) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else return;\n }\n\n to = callProp(to, t.item, i);\n to = is.obj(to) ? inferTo(to) : {\n to\n };\n\n if (!to.config) {\n const config = propsConfig || defaultProps.config;\n to.config = callProp(config, t.item, i, phase);\n }\n\n delay += trail;\n\n const payload = _extends({}, defaultProps, {\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n reset: false\n }, to);\n\n if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n const _p = propsFn ? propsFn() : props;\n\n const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n payload.from = callProp(from, t.item, i);\n }\n\n const {\n onResolve\n } = payload;\n\n payload.onResolve = result => {\n callProp(onResolve, result);\n const transitions = usedTransitions.current;\n const t = transitions.find(t => t.key === key);\n if (!t) return;\n\n if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n return;\n }\n\n if (t.ctrl.idle) {\n const idle = transitions.every(t => t.ctrl.idle);\n\n if (t.phase == TransitionPhase.LEAVE) {\n const expiry = callProp(expires, t.item);\n\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t.expired = true;\n\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n\n if (idle && transitions.some(t => t.expired)) {\n exitingTransitions.current.delete(t);\n\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n\n forceUpdate();\n }\n }\n };\n\n const springs = getSprings(t.ctrl, payload);\n\n if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n exitingTransitions.current.set(t, {\n phase,\n springs,\n payload\n });\n } else {\n changes.set(t, {\n phase,\n springs,\n payload\n });\n }\n });\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n if (hasContext) {\n each(transitions, t => {\n t.ctrl.start({\n default: context\n });\n });\n }\n }, [context]);\n each(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex(state => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useLayoutEffect(() => {\n each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n phase,\n payload\n }, t) => {\n const {\n ctrl\n } = t;\n t.phase = phase;\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext && phase == TransitionPhase.ENTER) {\n ctrl.start({\n default: context\n });\n }\n\n if (payload) {\n replaceRef(ctrl, payload.ref);\n\n if (ctrl.ref && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n });\n }, reset ? void 0 : deps);\n\n const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n const {\n springs\n } = changes.get(t) || t.ctrl;\n const elem = render(_extends({}, springs), t.item, t, i);\n return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n })) : elem;\n }));\n\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n key,\n keys = key\n}, prevTransitions) {\n if (keys === null) {\n const reused = new Set();\n return items.map(item => {\n const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n if (t) {\n reused.add(t);\n return t.key;\n }\n\n return nextKey++;\n });\n }\n\n return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is.fun(result) ? result(trails[index]) : result;\n });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n constructor(source, args) {\n super();\n this.key = void 0;\n this.idle = true;\n this.calc = void 0;\n this._active = new Set();\n this.source = source;\n this.calc = createInterpolator(...args);\n\n const value = this._get();\n\n const nodeType = getAnimatedType(value);\n setAnimated(this, nodeType.create(value));\n }\n\n advance(_dt) {\n const value = this._get();\n\n const oldValue = this.get();\n\n if (!isEqual(value, oldValue)) {\n getAnimated(this).setValue(value);\n\n this._onChange(value, this.idle);\n }\n\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n\n _get() {\n const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n return this.calc(...inputs);\n }\n\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each(getPayload(this), node => {\n node.done = false;\n });\n\n if (Globals.skipAnimation) {\n raf.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop.start(this);\n }\n }\n }\n\n _attach() {\n let priority = 1;\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n addFluidObserver(source, this);\n }\n\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n\n this._start();\n }\n\n _detach() {\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n removeFluidObserver(source, this);\n }\n });\n\n this._active.clear();\n\n becomeIdle(this);\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n\n this._start();\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else if (event.type == 'priority') {\n this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n }\n }\n\n}\n\nfunction isIdle(source) {\n return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each(getPayload(self), node => {\n node.done = true;\n });\n callFluidObservers(self, {\n type: 'idle',\n parent: self\n });\n }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","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\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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}","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\nfunction 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\nfunction 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;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","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","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\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","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 {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","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","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","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","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\";\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\";\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\";\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 {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 {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","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","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\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 {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, 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 {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 {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\";\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 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 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 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\";\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 { timeParse, utcParse } from 'd3-time-format'\n\nexport const timePrecisions = [\n 'millisecond',\n 'second',\n 'minute',\n 'hour',\n 'day',\n 'month',\n 'year',\n] as const\n\nexport type TIME_PRECISION = typeof timePrecisions[number]\n\nexport const precisionCutOffs: ((date: Date) => void)[] = [\n date => date.setMilliseconds(0),\n date => date.setSeconds(0),\n date => date.setMinutes(0),\n date => date.setHours(0),\n date => date.setDate(1),\n date => date.setMonth(0),\n]\n\nexport const precisionCutOffsByType: Record<TIME_PRECISION, ((date: Date) => void)[]> = {\n millisecond: [],\n second: precisionCutOffs.slice(0, 1),\n minute: precisionCutOffs.slice(0, 2),\n hour: precisionCutOffs.slice(0, 3),\n day: precisionCutOffs.slice(0, 4),\n month: precisionCutOffs.slice(0, 5),\n year: precisionCutOffs.slice(0, 6),\n}\n\nexport const createPrecisionMethod = (precision: TIME_PRECISION) => (date: Date) => {\n precisionCutOffsByType[precision].forEach(cutOff => {\n cutOff(date)\n })\n\n return date\n}\n\nexport const createDateNormalizer = ({\n format = 'native',\n precision = 'millisecond',\n useUTC = true,\n}: {\n format?: 'native' | string\n precision?: TIME_PRECISION\n useUTC?: boolean\n}) => {\n const precisionFn = createPrecisionMethod(precision)\n\n return (value: Date | string | undefined) => {\n if (value === undefined) {\n return value\n }\n\n if (format === 'native' || value instanceof Date) {\n return precisionFn(value as Date)\n }\n\n const parseTime = useUTC ? utcParse(format) : timeParse(format)\n return precisionFn(parseTime(value as string) as Date)\n }\n}\n","import { NumberValue, scaleLinear, ScaleLinear as D3ScaleLinear } from 'd3-scale'\nimport { ScaleLinearSpec, ScaleLinear, ComputedSerieAxis, ScaleAxis } from './types'\n\nexport const createLinearScale = <Output extends NumberValue>(\n {\n min = 0,\n max = 'auto',\n stacked = false,\n reverse = false,\n clamp = false,\n nice = false,\n }: ScaleLinearSpec,\n data: ComputedSerieAxis<Output>,\n size: number,\n axis: ScaleAxis\n) => {\n let minValue: NumberValue\n if (min === 'auto') {\n minValue = stacked === true ? data.minStacked ?? 0 : data.min\n } else {\n minValue = min\n }\n\n let maxValue: NumberValue\n if (max === 'auto') {\n maxValue = stacked === true ? data.maxStacked ?? 0 : data.max\n } else {\n maxValue = max\n }\n\n const scale = scaleLinear<number, Output>()\n .rangeRound(axis === 'x' ? [0, size] : [size, 0])\n .domain(reverse ? [maxValue, minValue] : [minValue, maxValue])\n .clamp(clamp)\n\n if (nice === true) scale.nice()\n else if (typeof nice === 'number') scale.nice(nice)\n\n return castLinearScale<number, Output>(scale, stacked)\n}\n\nexport const castLinearScale = <Range, Output>(\n scale: D3ScaleLinear<Range, Output>,\n stacked = false\n) => {\n const typedScale = (scale as unknown) as ScaleLinear<number>\n typedScale.type = 'linear'\n typedScale.stacked = stacked\n\n return typedScale\n}\n","import { scalePoint } from 'd3-scale'\nimport { ComputedSerieAxis, ScalePoint, ScalePointSpec, StringValue } from './types'\n\nexport const createPointScale = <Input extends StringValue>(\n _spec: ScalePointSpec,\n data: ComputedSerieAxis<Input>,\n size: number\n) => {\n const scale = scalePoint<Input>().range([0, size]).domain(data.all)\n\n const typedScale = scale as ScalePoint<Input>\n typedScale.type = 'point'\n\n return typedScale\n}\n","import { scaleBand, ScaleBand as D3ScaleBand } from 'd3-scale'\nimport { ComputedSerieAxis, ScaleBand, ScaleBandSpec, StringValue, ScaleAxis } from './types'\n\nexport const createBandScale = <Input extends StringValue>(\n { round = true }: ScaleBandSpec,\n data: ComputedSerieAxis<Input>,\n size: number,\n axis: ScaleAxis\n) => {\n const scale = scaleBand<Input>()\n .range(axis === 'x' ? [0, size] : [size, 0])\n .domain(data.all)\n .round(round)\n\n return castBandScale<Input>(scale)\n}\n\nexport const castBandScale = <Input>(scale: D3ScaleBand<Input>) => {\n const typedScale = scale as ScaleBand<Input>\n typedScale.type = 'band'\n\n return typedScale\n}\n","import { NumberValue, scaleTime, scaleUtc } from 'd3-scale'\nimport { createDateNormalizer } from './timeHelpers'\nimport { ComputedSerieAxis, ScaleTime, ScaleTimeSpec } from './types'\n\nexport const createTimeScale = <Input extends Date | NumberValue>(\n {\n format = 'native',\n precision = 'millisecond',\n min = 'auto',\n max = 'auto',\n useUTC = true,\n nice = false,\n }: ScaleTimeSpec,\n data: ComputedSerieAxis<string | Date>,\n size: number\n) => {\n const normalize = createDateNormalizer({ format, precision, useUTC })\n\n let minValue: Date | undefined\n if (min === 'auto') {\n minValue = normalize(data.min)\n } else if (format !== 'native') {\n minValue = normalize(min)\n } else {\n minValue = min as Date\n }\n\n let maxValue: Date | undefined\n if (max === 'auto') {\n maxValue = normalize(data.max)\n } else if (format !== 'native') {\n maxValue = normalize(max)\n } else {\n maxValue = max as Date\n }\n\n const scale = useUTC ? scaleUtc() : scaleTime()\n\n scale.range([0, size])\n\n if (minValue && maxValue) scale.domain([minValue, maxValue])\n\n if (nice === true) scale.nice()\n else if (typeof nice === 'object' || typeof nice === 'number') scale.nice(nice)\n\n const typedScale = (scale as unknown) as ScaleTime<Input>\n\n typedScale.type = 'time'\n typedScale.useUTC = useUTC\n\n return typedScale\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 { scaleLinear } from 'd3-scale'\nimport { getValueFormatter } from '@nivo/core'\nimport { computeContinuousColorScaleColorStops } from '@nivo/colors'\nimport {\n BoxLegendSvgProps,\n ContinuousColorsLegendProps,\n LegendAnchor,\n LegendItemDirection,\n} from './types'\nimport { continuousColorsLegendDefaults } from './defaults'\n\nconst isObject = <T>(item: unknown): item is T =>\n typeof item === 'object' && !Array.isArray(item) && item !== null\n\nconst zeroPadding = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n}\n\nexport const computeDimensions = ({\n direction,\n itemsSpacing,\n padding: _padding,\n itemCount,\n itemWidth,\n itemHeight,\n}: Pick<BoxLegendSvgProps, 'direction' | 'padding'> &\n Record<'itemsSpacing' | 'itemCount' | 'itemWidth' | 'itemHeight', number>) => {\n if (typeof _padding !== 'number' && !isObject(_padding)) {\n throw new Error('Invalid property padding, must be one of: number, object')\n }\n\n const padding =\n typeof _padding === 'number'\n ? {\n top: _padding,\n right: _padding,\n bottom: _padding,\n left: _padding,\n }\n : {\n ...zeroPadding,\n ..._padding,\n }\n\n const horizontalPadding = padding.left + padding.right\n const verticalPadding = padding.top + padding.bottom\n let width = itemWidth + horizontalPadding\n let height = itemHeight + verticalPadding\n const spacing = (itemCount - 1) * itemsSpacing\n if (direction === 'row') {\n width = itemWidth * itemCount + spacing + horizontalPadding\n } else if (direction === 'column') {\n height = itemHeight * itemCount + spacing + verticalPadding\n }\n\n return { width, height, padding }\n}\n\nexport const computePositionFromAnchor = ({\n anchor,\n translateX,\n translateY,\n containerWidth,\n containerHeight,\n width,\n height,\n}: { anchor: LegendAnchor } & Record<\n 'translateX' | 'translateY' | 'containerWidth' | 'containerHeight' | 'width' | 'height',\n number\n>) => {\n let x = translateX\n let y = translateY\n\n switch (anchor) {\n case 'top':\n x += (containerWidth - width) / 2\n break\n\n case 'top-right':\n x += containerWidth - width\n break\n\n case 'right':\n x += containerWidth - width\n y += (containerHeight - height) / 2\n break\n\n case 'bottom-right':\n x += containerWidth - width\n y += containerHeight - height\n break\n\n case 'bottom':\n x += (containerWidth - width) / 2\n y += containerHeight - height\n break\n\n case 'bottom-left':\n y += containerHeight - height\n break\n\n case 'left':\n y += (containerHeight - height) / 2\n break\n\n case 'center':\n x += (containerWidth - width) / 2\n y += (containerHeight - height) / 2\n break\n }\n\n return { x, y }\n}\n\nexport const computeItemLayout = ({\n direction,\n justify,\n symbolSize,\n symbolSpacing,\n width,\n height,\n}: {\n direction: LegendItemDirection\n justify: boolean\n} & Record<'symbolSize' | 'symbolSpacing' | 'width' | 'height', number>) => {\n let symbolX\n let symbolY\n\n let labelX\n let labelY\n let labelAnchor: 'start' | 'middle' | 'end'\n let labelAlignment: 'alphabetic' | 'central' | 'text-before-edge'\n\n switch (direction) {\n case 'left-to-right':\n symbolX = 0\n symbolY = (height - symbolSize) / 2\n\n labelY = height / 2\n labelAlignment = 'central'\n if (justify) {\n labelX = width\n labelAnchor = 'end'\n } else {\n labelX = symbolSize + symbolSpacing\n labelAnchor = 'start'\n }\n break\n\n case 'right-to-left':\n symbolX = width - symbolSize\n symbolY = (height - symbolSize) / 2\n\n labelY = height / 2\n labelAlignment = 'central'\n if (justify) {\n labelX = 0\n labelAnchor = 'start'\n } else {\n labelX = width - symbolSize - symbolSpacing\n labelAnchor = 'end'\n }\n break\n\n case 'top-to-bottom':\n symbolX = (width - symbolSize) / 2\n symbolY = 0\n\n labelX = width / 2\n\n labelAnchor = 'middle'\n if (justify) {\n labelY = height\n labelAlignment = 'alphabetic'\n } else {\n labelY = symbolSize + symbolSpacing\n labelAlignment = 'text-before-edge'\n }\n break\n\n case 'bottom-to-top':\n symbolX = (width - symbolSize) / 2\n symbolY = height - symbolSize\n\n labelX = width / 2\n labelAnchor = 'middle'\n if (justify) {\n labelY = 0\n labelAlignment = 'text-before-edge'\n } else {\n labelY = height - symbolSize - symbolSpacing\n labelAlignment = 'alphabetic'\n }\n break\n }\n\n return {\n symbolX,\n symbolY,\n labelX,\n labelY,\n labelAnchor,\n labelAlignment,\n }\n}\n\nexport const computeContinuousColorsLegend = ({\n scale,\n ticks,\n length = continuousColorsLegendDefaults.length,\n thickness = continuousColorsLegendDefaults.thickness,\n direction = continuousColorsLegendDefaults.direction,\n tickPosition = continuousColorsLegendDefaults.tickPosition,\n tickSize = continuousColorsLegendDefaults.tickSize,\n tickSpacing = continuousColorsLegendDefaults.tickSpacing,\n tickOverlap = continuousColorsLegendDefaults.tickOverlap,\n tickFormat = continuousColorsLegendDefaults.tickFormat,\n title,\n titleAlign = continuousColorsLegendDefaults.titleAlign,\n titleOffset = continuousColorsLegendDefaults.titleOffset,\n}: ContinuousColorsLegendProps) => {\n // left to right for `row`, bottom to top for `column`\n const domain = direction === 'column' ? [...scale.domain()].reverse() : scale.domain()\n\n const positionScale = scaleLinear().domain(domain)\n if (domain.length === 2) {\n // sequential, quantize\n positionScale.range([0, length])\n } else if (domain.length === 3) {\n // diverging\n positionScale.range([0, length / 2, length])\n }\n\n let values: number[]\n if ('thresholds' in scale) {\n // quantize\n values = [domain[0], ...scale.thresholds(), domain[1]]\n } else {\n // sequential, diverging\n values = Array.isArray(ticks) ? ticks : (scale as any).ticks(ticks)\n }\n\n const colorStops = computeContinuousColorScaleColorStops(scale, 32)\n\n const formatValue = getValueFormatter(tickFormat)\n\n const computedTicks: {\n x1: number\n y1: number\n x2: number\n y2: number\n text: string\n textX: number\n textY: number\n textHorizontalAlign: 'start' | 'middle' | 'end'\n textVerticalAlign: 'alphabetic' | 'central' | 'hanging'\n }[] = []\n\n let width: number\n let height: number\n\n const gradientX1 = 0\n let gradientY1 = 0\n let gradientX2 = 0\n const gradientY2 = 0\n\n let titleX: number\n let titleY: number\n let titleRotation: number\n let titleVerticalAlign: 'alphabetic' | 'hanging'\n\n if (direction === 'row') {\n width = length\n height = thickness\n\n gradientX2 = 1\n\n let y1: number\n let y2: number\n\n let textY: number\n const textHorizontalAlign = 'middle'\n let textVerticalAlign: 'alphabetic' | 'hanging'\n\n titleRotation = 0\n if (titleAlign === 'start') {\n titleX = 0\n } else if (titleAlign === 'middle') {\n titleX = length / 2\n } else {\n titleX = length\n }\n\n if (tickPosition === 'before') {\n y1 = -tickSize\n y2 = tickOverlap ? thickness : 0\n\n textY = -tickSize - tickSpacing\n textVerticalAlign = 'alphabetic'\n\n titleY = thickness + titleOffset\n titleVerticalAlign = 'hanging'\n } else {\n y1 = tickOverlap ? 0 : thickness\n y2 = thickness + tickSize\n\n textY = y2 + tickSpacing\n textVerticalAlign = 'hanging'\n\n titleY = -titleOffset\n titleVerticalAlign = 'alphabetic'\n }\n\n values.forEach(value => {\n const x = positionScale(value)\n\n computedTicks.push({\n x1: x,\n y1,\n x2: x,\n y2,\n text: formatValue(value),\n textX: x,\n textY,\n textHorizontalAlign,\n textVerticalAlign,\n })\n })\n } else {\n width = thickness\n height = length\n\n gradientY1 = 1\n\n let x1: number\n let x2: number\n\n let textX: number\n let textHorizontalAlign: 'start' | 'end'\n const textVerticalAlign = 'central'\n\n titleRotation = -90\n if (titleAlign === 'start') {\n titleY = length\n } else if (titleAlign === 'middle') {\n titleY = length / 2\n } else {\n titleY = 0\n }\n\n if (tickPosition === 'before') {\n x1 = -tickSize\n x2 = tickOverlap ? thickness : 0\n\n textX = x1 - tickSpacing\n textHorizontalAlign = 'end'\n\n titleX = thickness + titleOffset\n titleVerticalAlign = 'hanging'\n } else {\n x1 = tickOverlap ? 0 : thickness\n x2 = thickness + tickSize\n\n textX = x2 + tickSpacing\n textHorizontalAlign = 'start'\n\n titleX = -titleOffset\n titleVerticalAlign = 'alphabetic'\n }\n\n values.forEach(value => {\n const y = positionScale(value)\n\n computedTicks.push({\n x1,\n y1: y,\n x2,\n y2: y,\n text: formatValue(value),\n textX,\n textY: y,\n textHorizontalAlign,\n textVerticalAlign,\n })\n })\n }\n\n return {\n width,\n height,\n gradientX1,\n gradientY1,\n gradientX2,\n gradientY2,\n colorStops,\n ticks: computedTicks,\n titleText: title,\n titleX,\n titleY,\n titleRotation,\n titleHorizontalAlign: titleAlign,\n titleVerticalAlign,\n }\n}\n","import { scaleLog } from 'd3-scale'\nimport { ComputedSerieAxis, ScaleAxis, ScaleLog, ScaleLogSpec } from './types'\n\nexport const createLogScale = (\n { base = 10, min = 'auto', max = 'auto' }: ScaleLogSpec,\n data: ComputedSerieAxis<number>,\n size: number,\n axis: ScaleAxis\n) => {\n const hasZero = data.all.some(v => v === 0)\n if (hasZero) {\n throw new Error(`a log scale domain must not include or cross zero`)\n }\n\n let sign: number\n let hasMixedSign = false\n data.all\n .filter(v => v != null)\n .forEach(v => {\n if (hasMixedSign) return\n if (sign === undefined) {\n sign = Math.sign(v)\n } else if (Math.sign(v) !== sign) {\n hasMixedSign = true\n }\n })\n\n if (hasMixedSign) {\n throw new Error(`a log scale domain must be strictly-positive or strictly-negative`)\n }\n\n let minValue: number\n if (min === 'auto') {\n minValue = data.min\n } else {\n minValue = min\n }\n\n let maxValue: number\n if (max === 'auto') {\n maxValue = data.max\n } else {\n maxValue = max\n }\n\n const scale = scaleLog<number, number>()\n .domain([minValue, maxValue])\n .rangeRound(axis === 'x' ? [0, size] : [size, 0])\n .base(base)\n .nice()\n\n const typedScale = scale as ScaleLog\n typedScale.type = 'log'\n\n return scale\n}\n","import { scaleSymlog } from 'd3-scale'\nimport { ComputedSerieAxis, ScaleAxis, ScaleSymlog, ScaleSymlogSpec } from './types'\n\nexport const createSymlogScale = (\n { constant = 1, min = 'auto', max = 'auto', reverse = false }: ScaleSymlogSpec,\n data: ComputedSerieAxis<number>,\n size: number,\n axis: ScaleAxis\n) => {\n let minValue: number\n if (min === 'auto') {\n minValue = data.min\n } else {\n minValue = min\n }\n\n let maxValue: number\n if (max === 'auto') {\n maxValue = data.max\n } else {\n maxValue = max\n }\n\n const scale = scaleSymlog<number, number>()\n .constant(constant)\n .rangeRound(axis === 'x' ? [0, size] : [size, 0])\n .nice()\n\n if (reverse === true) scale.domain([maxValue, minValue])\n else scale.domain([minValue, maxValue])\n\n const typedScale = scale as ScaleSymlog\n typedScale.type = 'symlog'\n\n return typedScale\n}\n","import {\n CountableTimeInterval,\n timeMillisecond,\n utcMillisecond,\n timeSecond,\n utcSecond,\n timeMinute,\n utcMinute,\n timeHour,\n utcHour,\n timeWeek,\n utcWeek,\n timeSunday,\n utcSunday,\n timeMonday,\n utcMonday,\n timeTuesday,\n utcTuesday,\n timeWednesday,\n utcWednesday,\n timeThursday,\n utcThursday,\n timeFriday,\n utcFriday,\n timeSaturday,\n utcSaturday,\n timeMonth,\n utcMonth,\n timeYear,\n utcYear,\n timeInterval,\n} from 'd3-time'\nimport { ScaleValue, TicksSpec, AnyScale, ScaleWithBandwidth } from './types'\n\nexport const centerScale = <Value>(scale: ScaleWithBandwidth) => {\n const bandwidth = scale.bandwidth()\n\n if (bandwidth === 0) return scale\n\n let offset = bandwidth / 2\n if (scale.round()) {\n offset = Math.round(offset)\n }\n\n return <T extends Value>(d: T) => (scale(d) ?? 0) + offset\n}\n\nconst timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end.getTime() - start.getTime()) / 864e5,\n date => Math.floor(date.getTime() / 864e5)\n)\n\nconst utcDay = timeInterval(\n date => date.setUTCHours(0, 0, 0, 0),\n (date, step) => date.setUTCDate(date.getUTCDate() + step),\n (start, end) => (end.getTime() - start.getTime()) / 864e5,\n date => Math.floor(date.getTime() / 864e5)\n)\n\nconst timeByType: Record<string, [CountableTimeInterval, CountableTimeInterval]> = {\n millisecond: [timeMillisecond, utcMillisecond],\n second: [timeSecond, utcSecond],\n minute: [timeMinute, utcMinute],\n hour: [timeHour, utcHour],\n day: [timeDay, utcDay],\n week: [timeWeek, utcWeek],\n sunday: [timeSunday, utcSunday],\n monday: [timeMonday, utcMonday],\n tuesday: [timeTuesday, utcTuesday],\n wednesday: [timeWednesday, utcWednesday],\n thursday: [timeThursday, utcThursday],\n friday: [timeFriday, utcFriday],\n saturday: [timeSaturday, utcSaturday],\n month: [timeMonth, utcMonth],\n year: [timeYear, utcYear],\n}\n\nconst timeTypes = Object.keys(timeByType)\nconst timeIntervalRegexp = new RegExp(`^every\\\\s*(\\\\d+)?\\\\s*(${timeTypes.join('|')})s?$`, 'i')\n\nconst isInteger = (value: unknown): value is number =>\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n\nexport const getScaleTicks = <Value extends ScaleValue>(\n scale: AnyScale,\n spec?: TicksSpec<Value>\n) => {\n // specific values\n if (Array.isArray(spec)) {\n return spec\n }\n\n if (typeof spec === 'string' && 'useUTC' in scale) {\n // time interval\n const matches = spec.match(timeIntervalRegexp)\n\n if (matches) {\n const [, amount, type] = matches\n // UTC is used as it's more predictable\n // however local time could be used too\n // let's see how it fits users' requirements\n const timeType = timeByType[type][scale.useUTC ? 1 : 0]\n\n if (type === 'day') {\n const [start, originalStop] = scale.domain()\n const stop = new Date(originalStop)\n\n // Set range to include last day in the domain since `interval.range` function is exclusive stop\n stop.setDate(stop.getDate() + 1)\n\n return timeType.every(Number(amount ?? 1))?.range(start, stop) ?? []\n }\n\n if (amount === undefined) {\n return scale.ticks(timeType)\n }\n\n const interval = timeType.every(Number(amount))\n\n if (interval) {\n return scale.ticks(interval)\n }\n }\n\n throw new Error(`Invalid tickValues: ${spec}`)\n }\n\n // continuous scales\n if ('ticks' in scale) {\n // default behaviour\n if (spec === undefined) {\n return scale.ticks()\n }\n\n // specific tick count\n if (isInteger(spec)) {\n return scale.ticks(spec)\n }\n }\n\n // non linear scale default\n return scale.domain()\n}\n","import { useMemo, memo } from 'react'\nimport * as React from 'react'\nimport { animated } from '@react-spring/web'\nimport { useTheme } from '@nivo/core'\nimport { ScaleValue } from '@nivo/scales'\nimport { AxisTickProps } from '../types'\n\nconst AxisTick = <Value extends ScaleValue>({\n value: _value,\n format,\n lineX,\n lineY,\n onClick,\n textBaseline,\n textAnchor,\n animatedProps,\n}: AxisTickProps<Value>) => {\n const theme = useTheme()\n\n const value = format?.(_value) ?? _value\n\n const props = useMemo(() => {\n const style = { opacity: animatedProps.opacity }\n\n if (!onClick) {\n return { style }\n }\n\n return {\n style: { ...style, cursor: 'pointer' },\n onClick: (event: React.MouseEvent<SVGGElement, MouseEvent>) => onClick(event, value),\n }\n }, [animatedProps.opacity, onClick, value])\n\n return (\n <animated.g transform={animatedProps.transform} {...props}>\n <line x1={0} x2={lineX} y1={0} y2={lineY} style={theme.axis.ticks.line} />\n <animated.text\n dominantBaseline={textBaseline}\n textAnchor={textAnchor}\n transform={animatedProps.textTransform}\n style={theme.axis.ticks.text}\n >\n {value}\n </animated.text>\n </animated.g>\n )\n}\n\nconst memoizedAxisTick = memo(AxisTick) as typeof AxisTick\n\nexport { memoizedAxisTick as AxisTick }\n","import { useMemo, memo } from 'react'\nimport * as React from 'react'\nimport { useSpring, useTransition, animated } from '@react-spring/web'\nimport { useTheme, useMotionConfig } from '@nivo/core'\nimport { ScaleValue, AnyScale } from '@nivo/scales'\nimport { computeCartesianTicks, getFormatter } from '../compute'\nimport { AxisTick } from './AxisTick'\nimport { AxisProps } from '../types'\n\nconst Axis = <Value extends ScaleValue>({\n axis,\n scale,\n x = 0,\n y = 0,\n length,\n ticksPosition,\n tickValues,\n tickSize = 5,\n tickPadding = 5,\n tickRotation = 0,\n format,\n renderTick = AxisTick,\n legend,\n legendPosition = 'end',\n legendOffset = 0,\n onClick,\n ariaHidden,\n}: AxisProps<Value> & {\n axis: 'x' | 'y'\n scale: AnyScale\n x?: number\n y?: number\n length: number\n onClick?: (event: React.MouseEvent<SVGGElement, MouseEvent>, value: Value | string) => void\n}) => {\n const theme = useTheme()\n\n const formatValue = useMemo(() => getFormatter(format, scale), [format, scale])\n\n const { ticks, textAlign, textBaseline } = computeCartesianTicks({\n axis,\n scale,\n ticksPosition,\n tickValues,\n tickSize,\n tickPadding,\n tickRotation,\n })\n\n let legendNode = null\n if (legend !== undefined) {\n let legendX = 0\n let legendY = 0\n let legendRotation = 0\n let textAnchor\n\n if (axis === 'y') {\n legendRotation = -90\n legendX = legendOffset\n if (legendPosition === 'start') {\n textAnchor = 'start'\n legendY = length\n } else if (legendPosition === 'middle') {\n textAnchor = 'middle'\n legendY = length / 2\n } else if (legendPosition === 'end') {\n textAnchor = 'end'\n }\n } else {\n legendY = legendOffset\n if (legendPosition === 'start') {\n textAnchor = 'start'\n } else if (legendPosition === 'middle') {\n textAnchor = 'middle'\n legendX = length / 2\n } else if (legendPosition === 'end') {\n textAnchor = 'end'\n legendX = length\n }\n }\n\n legendNode = (\n <text\n transform={`translate(${legendX}, ${legendY}) rotate(${legendRotation})`}\n textAnchor={textAnchor}\n style={{\n dominantBaseline: 'central',\n ...theme.axis.legend.text,\n }}\n >\n {legend}\n </text>\n )\n }\n\n const { animate, config: springConfig } = useMotionConfig()\n\n const animatedProps = useSpring({\n transform: `translate(${x},${y})`,\n lineX2: axis === 'x' ? length : 0,\n lineY2: axis === 'x' ? 0 : length,\n config: springConfig,\n immediate: !animate,\n })\n\n const transition = useTransition<\n typeof ticks[0],\n { opacity: number; transform: string; textTransform: string }\n >(ticks, {\n keys: tick => tick.key,\n initial: tick => ({\n opacity: 1,\n transform: `translate(${tick.x},${tick.y})`,\n textTransform: `translate(${tick.textX},${tick.textY}) rotate(${tickRotation})`,\n }),\n from: tick => ({\n opacity: 0,\n transform: `translate(${tick.x},${tick.y})`,\n textTransform: `translate(${tick.textX},${tick.textY}) rotate(${tickRotation})`,\n }),\n enter: tick => ({\n opacity: 1,\n transform: `translate(${tick.x},${tick.y})`,\n textTransform: `translate(${tick.textX},${tick.textY}) rotate(${tickRotation})`,\n }),\n update: tick => ({\n opacity: 1,\n transform: `translate(${tick.x},${tick.y})`,\n textTransform: `translate(${tick.textX},${tick.textY}) rotate(${tickRotation})`,\n }),\n leave: {\n opacity: 0,\n },\n config: springConfig,\n immediate: !animate,\n })\n\n return (\n <animated.g transform={animatedProps.transform} aria-hidden={ariaHidden}>\n {transition((transitionProps, tick, _state, tickIndex) => {\n return React.createElement(renderTick, {\n tickIndex,\n format: formatValue,\n rotate: tickRotation,\n textBaseline,\n textAnchor: textAlign,\n animatedProps: transitionProps,\n ...tick,\n ...(onClick ? { onClick } : {}),\n })\n })}\n <animated.line\n style={theme.axis.domain.line}\n x1={0}\n x2={animatedProps.lineX2}\n y1={0}\n y2={animatedProps.lineY2}\n />\n {legendNode}\n </animated.g>\n )\n}\n\nconst memoizedAxis = memo(Axis) as typeof Axis\n\nexport { memoizedAxis as Axis }\n","import { OrdinalColorScaleConfig } from '@nivo/colors'\nimport { ArcTransitionMode } from '@nivo/arcs'\nimport { PieTooltip } from './PieTooltip'\n\nexport const defaultProps = {\n id: 'id',\n value: 'value',\n sortByValue: false,\n innerRadius: 0,\n padAngle: 0,\n cornerRadius: 0,\n\n layers: ['arcLinkLabels', 'arcs', 'arcLabels', 'legends'],\n\n // layout\n startAngle: 0,\n endAngle: 360,\n fit: true,\n activeInnerRadiusOffset: 0,\n activeOuterRadiusOffset: 0,\n\n // border\n borderWidth: 0,\n borderColor: {\n from: 'color',\n modifiers: [['darker', 1]],\n },\n\n // arc labels\n enableArcLabels: true,\n arcLabel: 'formattedValue',\n arcLabelsSkipAngle: 0,\n arcLabelsRadiusOffset: 0.5,\n arcLabelsTextColor: { theme: 'labels.text.fill' },\n\n // arc link labels\n enableArcLinkLabels: true,\n arcLinkLabel: 'id',\n arcLinkLabelsSkipAngle: 0,\n arcLinkLabelsOffset: 0,\n arcLinkLabelsDiagonalLength: 16,\n arcLinkLabelsStraightLength: 24,\n arcLinkLabelsThickness: 1,\n arcLinkLabelsTextOffset: 6,\n arcLinkLabelsTextColor: { theme: 'labels.text.fill' },\n arcLinkLabelsColor: { theme: 'axis.ticks.line.stroke' },\n\n colors: { scheme: 'nivo' } as unknown as OrdinalColorScaleConfig,\n defs: [],\n fill: [],\n\n isInteractive: true,\n\n animate: true,\n motionConfig: 'gentle',\n transitionMode: 'innerRadius' as ArcTransitionMode,\n\n tooltip: PieTooltip,\n\n legends: [],\n\n role: 'img',\n\n pixelRatio: typeof window !== 'undefined' ? window.devicePixelRatio ?? 1 : 1,\n}\n","import { memo } from 'react'\nimport { ScaleValue, AnyScale } from '@nivo/scales'\nimport { Axis } from './Axis'\nimport { positions } from '../props'\nimport { AxisProps } from '../types'\n\nexport const Axes = memo(\n <X extends ScaleValue, Y extends ScaleValue>({\n xScale,\n yScale,\n width,\n height,\n top,\n right,\n bottom,\n left,\n }: {\n xScale: AnyScale\n yScale: AnyScale\n width: number\n height: number\n top?: AxisProps<X> | null\n right?: AxisProps<Y> | null\n bottom?: AxisProps<X> | null\n left?: AxisProps<Y> | null\n }) => {\n const axes = { top, right, bottom, left }\n\n return (\n <>\n {positions.map(position => {\n const axis = axes[position] as typeof position extends 'bottom' | 'top'\n ? AxisProps<X> | undefined\n : AxisProps<Y> | undefined\n\n if (!axis) return null\n\n const isXAxis = position === 'top' || position === 'bottom'\n const ticksPosition =\n position === 'top' || position === 'left' ? 'before' : 'after'\n\n return (\n <Axis\n key={position}\n {...axis}\n axis={isXAxis ? 'x' : 'y'}\n x={position === 'right' ? width : 0}\n y={position === 'bottom' ? height : 0}\n scale={isXAxis ? xScale : yScale}\n length={isXAxis ? width : height}\n ticksPosition={ticksPosition}\n />\n )\n })}\n </>\n )\n }\n)\n","import { memo } from 'react'\nimport { SpringValues, animated } from '@react-spring/web'\nimport { useTheme } from '@nivo/core'\n\nexport const GridLine = memo(\n ({\n animatedProps,\n }: {\n animatedProps: SpringValues<{\n opacity: number\n x1: number\n x2: number\n y1: number\n y2: number\n }>\n }) => {\n const theme = useTheme()\n\n return <animated.line {...animatedProps} {...(theme.grid.line as unknown)} />\n }\n)\n","import { memo } from 'react'\nimport { useTransition } from '@react-spring/web'\nimport { useMotionConfig } from '@nivo/core'\nimport { GridLine } from './GridLine'\nimport { Line } from '../types'\n\nexport const GridLines = memo(({ lines }: { lines: Line[] }) => {\n const { animate, config: springConfig } = useMotionConfig()\n\n const transition = useTransition<Line, Record<'opacity' | 'x1' | 'x2' | 'y1' | 'y2', number>>(\n lines,\n {\n keys: line => line.key,\n initial: line => ({\n opacity: 1,\n x1: line.x1,\n x2: line.x2,\n y1: line.y1,\n y2: line.y2,\n }),\n from: line => ({\n opacity: 0,\n x1: line.x1,\n x2: line.x2,\n y1: line.y1,\n y2: line.y2,\n }),\n enter: line => ({\n opacity: 1,\n x1: line.x1,\n x2: line.x2,\n y1: line.y1,\n y2: line.y2,\n }),\n update: line => ({\n opacity: 1,\n x1: line.x1,\n x2: line.x2,\n y1: line.y1,\n y2: line.y2,\n }),\n leave: {\n opacity: 0,\n },\n config: springConfig,\n immediate: !animate,\n }\n )\n\n return (\n <g>\n {transition((animatedProps, line) => (\n <GridLine {...line} key={line.key} animatedProps={animatedProps} />\n ))}\n </g>\n )\n})\n","import { useMemo, memo } from 'react'\nimport { ScaleValue, AnyScale, TicksSpec } from '@nivo/scales'\nimport { GridLines } from './GridLines'\nimport { computeGridLines } from '../compute'\n\nexport const Grid = memo(\n <X extends ScaleValue, Y extends ScaleValue>({\n width,\n height,\n xScale,\n yScale,\n xValues,\n yValues,\n }: {\n width: number\n height: number\n xScale?: AnyScale | null\n xValues?: TicksSpec<X>\n yScale?: AnyScale | null\n yValues?: TicksSpec<Y>\n }) => {\n const xLines = useMemo(() => {\n if (!xScale) return false\n\n return computeGridLines({\n width,\n height,\n scale: xScale,\n axis: 'x',\n values: xValues,\n })\n }, [xScale, xValues, width, height])\n\n const yLines = useMemo(() => {\n if (!yScale) return false\n\n return computeGridLines({\n width,\n height,\n scale: yScale,\n axis: 'y',\n values: yValues,\n })\n }, [height, width, yScale, yValues])\n\n return (\n <>\n {xLines && <GridLines lines={xLines} />}\n {yLines && <GridLines lines={yLines} />}\n </>\n )\n }\n)\n","import { CompleteTheme, degreesToRadians } from '@nivo/core'\nimport {\n computeDimensions,\n computePositionFromAnchor,\n computeItemLayout,\n computeContinuousColorsLegend,\n} from './compute'\nimport { AnchoredContinuousColorsLegendProps, LegendCanvasProps } from './types'\nimport { continuousColorsLegendDefaults } from './defaults'\n\nconst textAlignMapping = {\n start: 'left',\n middle: 'center',\n end: 'right',\n} as const\n\nexport const renderLegendToCanvas = (\n ctx: CanvasRenderingContext2D,\n {\n data,\n\n containerWidth,\n containerHeight,\n translateX = 0,\n translateY = 0,\n anchor,\n direction,\n padding: _padding = 0,\n justify = false,\n\n // items\n itemsSpacing = 0,\n itemWidth,\n itemHeight,\n itemDirection = 'left-to-right',\n itemTextColor,\n\n // symbol\n symbolSize = 16,\n symbolSpacing = 8,\n // @todo add support for shapes\n // symbolShape = LegendSvgItem.defaultProps.symbolShape,\n\n theme,\n }: LegendCanvasProps\n) => {\n const { width, height, padding } = computeDimensions({\n itemCount: data.length,\n itemWidth,\n itemHeight,\n itemsSpacing,\n direction,\n padding: _padding,\n })\n\n const { x, y } = computePositionFromAnchor({\n anchor,\n translateX,\n translateY,\n containerWidth,\n containerHeight,\n width,\n height,\n })\n\n const xStep = direction === 'row' ? itemWidth + itemsSpacing : 0\n const yStep = direction === 'column' ? itemHeight + itemsSpacing : 0\n\n ctx.save()\n ctx.translate(x, y)\n\n ctx.font = `${theme.legends.text.fontSize}px ${theme.legends.text.fontFamily || 'sans-serif'}`\n\n data.forEach((d, i) => {\n const itemX = i * xStep + padding.left\n const itemY = i * yStep + padding.top\n\n const { symbolX, symbolY, labelX, labelY, labelAnchor, labelAlignment } = computeItemLayout(\n {\n direction: itemDirection,\n justify,\n symbolSize,\n symbolSpacing,\n width: itemWidth,\n height: itemHeight,\n }\n )\n\n ctx.fillStyle = d.color ?? 'black'\n ctx.fillRect(itemX + symbolX, itemY + symbolY, symbolSize, symbolSize)\n\n ctx.textAlign = textAlignMapping[labelAnchor]\n\n if (labelAlignment === 'central') {\n ctx.textBaseline = 'middle'\n }\n\n ctx.fillStyle = itemTextColor ?? theme.legends.text.fill ?? 'black'\n ctx.fillText(String(d.label), itemX + labelX, itemY + labelY)\n })\n\n ctx.restore()\n}\n\nexport const renderContinuousColorLegendToCanvas = (\n ctx: CanvasRenderingContext2D,\n {\n containerWidth,\n containerHeight,\n anchor,\n translateX = 0,\n translateY = 0,\n scale,\n length = continuousColorsLegendDefaults.length,\n thickness = continuousColorsLegendDefaults.thickness,\n direction = continuousColorsLegendDefaults.direction,\n ticks: _ticks,\n tickPosition = continuousColorsLegendDefaults.tickPosition,\n tickSize = continuousColorsLegendDefaults.tickSize,\n tickSpacing = continuousColorsLegendDefaults.tickSpacing,\n tickOverlap = continuousColorsLegendDefaults.tickOverlap,\n tickFormat = continuousColorsLegendDefaults.tickFormat,\n title,\n titleAlign = continuousColorsLegendDefaults.titleAlign,\n titleOffset = continuousColorsLegendDefaults.titleOffset,\n theme,\n }: AnchoredContinuousColorsLegendProps & {\n theme: CompleteTheme\n }\n) => {\n const {\n width,\n height,\n gradientX1,\n gradientY1,\n gradientX2,\n gradientY2,\n colorStops,\n ticks,\n titleText,\n titleX,\n titleY,\n titleRotation,\n titleVerticalAlign,\n titleHorizontalAlign,\n } = computeContinuousColorsLegend({\n scale,\n ticks: _ticks,\n length,\n thickness,\n direction,\n tickPosition,\n tickSize,\n tickSpacing,\n tickOverlap,\n tickFormat,\n title,\n titleAlign,\n titleOffset,\n })\n\n const { x, y } = computePositionFromAnchor({\n anchor,\n translateX,\n translateY,\n containerWidth,\n containerHeight,\n width,\n height,\n })\n\n const initialStyles = {\n font: ctx.font,\n textAlign: ctx.textAlign,\n textBaseline: ctx.textBaseline,\n }\n ctx.save()\n\n ctx.translate(x, y)\n\n const gradient = ctx.createLinearGradient(\n gradientX1 * width,\n gradientY1 * height,\n gradientX2 * width,\n gradientY2 * height\n )\n colorStops.forEach(colorStop => {\n gradient.addColorStop(colorStop.offset, colorStop.stopColor)\n })\n\n ctx.fillStyle = gradient\n ctx.fillRect(0, 0, width, height)\n\n ctx.font = `${\n theme.legends.ticks.text.fontWeight ? `${theme.legends.ticks.text.fontWeight} ` : ''\n }${theme.legends.ticks.text.fontSize}px ${theme.legends.ticks.text.fontFamily}`\n\n ticks.forEach(tick => {\n if ((theme.legends.ticks.line.strokeWidth ?? 0) > 0) {\n ctx.lineWidth = Number(theme.axis.ticks.line.strokeWidth)\n if (theme.axis.ticks.line.stroke) {\n ctx.strokeStyle = theme.axis.ticks.line.stroke\n }\n ctx.lineCap = 'square'\n\n ctx.beginPath()\n ctx.moveTo(tick.x1, tick.y1)\n ctx.lineTo(tick.x2, tick.y2)\n ctx.stroke()\n }\n\n if (theme.legends.ticks.text.fill) {\n ctx.fillStyle = theme.legends.ticks.text.fill\n }\n ctx.textAlign = tick.textHorizontalAlign === 'middle' ? 'center' : tick.textHorizontalAlign\n ctx.textBaseline = tick.textVerticalAlign === 'central' ? 'middle' : tick.textVerticalAlign\n\n ctx.fillText(tick.text, tick.textX, tick.textY)\n })\n\n if (titleText) {\n ctx.save()\n ctx.translate(titleX, titleY)\n ctx.rotate(degreesToRadians(titleRotation))\n\n ctx.font = `${\n theme.legends.title.text.fontWeight ? `${theme.legends.title.text.fontWeight} ` : ''\n }${theme.legends.title.text.fontSize}px ${theme.legends.title.text.fontFamily}`\n if (theme.legends.title.text.fill) {\n ctx.fillStyle = theme.legends.title.text.fill\n }\n ctx.textAlign = titleHorizontalAlign === 'middle' ? 'center' : titleHorizontalAlign\n ctx.textBaseline = titleVerticalAlign\n\n ctx.fillText(titleText, 0, 0)\n\n ctx.restore()\n }\n\n ctx.restore()\n\n ctx.font = initialStyles.font\n ctx.textAlign = initialStyles.textAlign\n ctx.textBaseline = initialStyles.textBaseline\n}\n","import { createElement } from 'react'\nimport omit from 'lodash/omit'\nimport { useSpring, animated } from '@react-spring/web'\nimport { useTheme, useMotionConfig } from '@nivo/core'\nimport { NoteSvg } from './types'\n\nexport const AnnotationNote = <Datum,>({\n datum,\n x,\n y,\n note,\n}: {\n datum: Datum\n x: number\n y: number\n note: NoteSvg<Datum>\n}) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n\n const animatedProps = useSpring({\n x,\n y,\n config: springConfig,\n immediate: !animate,\n })\n\n if (typeof note === 'function') {\n return createElement(note, { x, y, datum })\n }\n\n return (\n <>\n {theme.annotations.text.outlineWidth > 0 && (\n <animated.text\n x={animatedProps.x}\n y={animatedProps.y}\n style={{\n ...theme.annotations.text,\n strokeLinejoin: 'round',\n strokeWidth: theme.annotations.text.outlineWidth * 2,\n stroke: theme.annotations.text.outlineColor,\n }}\n >\n {note}\n </animated.text>\n )}\n <animated.text\n x={animatedProps.x}\n y={animatedProps.y}\n style={omit(theme.annotations.text, ['outlineWidth', 'outlineColor'])}\n >\n {note}\n </animated.text>\n </>\n )\n}\n","import { useMemo } from 'react'\nimport { animated } from '@react-spring/web'\nimport { useAnimatedPath, useTheme } from '@nivo/core'\n\nexport const AnnotationLink = ({\n points,\n isOutline = false,\n}: {\n points: [number, number][]\n isOutline?: boolean\n}) => {\n const theme = useTheme()\n\n const path = useMemo(() => {\n const [firstPoint, ...otherPoints] = points\n\n return otherPoints.reduce(\n (acc, [x, y]) => `${acc} L${x},${y}`,\n `M${firstPoint[0]},${firstPoint[1]}`\n )\n }, [points])\n\n const animatedPath = useAnimatedPath(path)\n\n if (isOutline && theme.annotations.link.outlineWidth <= 0) {\n return null\n }\n\n const style = { ...theme.annotations.link }\n if (isOutline) {\n style.strokeLinecap = 'square'\n style.strokeWidth =\n theme.annotations.link.strokeWidth + theme.annotations.link.outlineWidth * 2\n style.stroke = theme.annotations.link.outlineColor\n }\n\n return <animated.path fill=\"none\" d={animatedPath} style={style} />\n}\n","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import { useSpring, animated } from '@react-spring/web'\nimport { useMotionConfig, useTheme } from '@nivo/core'\n\nexport const CircleAnnotationOutline = ({ x, y, size }: { x: number; y: number; size: number }) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n\n const animatedProps = useSpring({\n x,\n y,\n radius: size / 2,\n config: springConfig,\n immediate: !animate,\n })\n\n return (\n <>\n {theme.annotations.outline.outlineWidth > 0 && (\n <animated.circle\n cx={animatedProps.x}\n cy={animatedProps.y}\n r={animatedProps.radius}\n style={{\n ...theme.annotations.outline,\n fill: 'none',\n strokeWidth:\n theme.annotations.outline.strokeWidth +\n theme.annotations.outline.outlineWidth * 2,\n stroke: theme.annotations.outline.outlineColor,\n }}\n />\n )}\n <animated.circle\n cx={animatedProps.x}\n cy={animatedProps.y}\n r={animatedProps.radius}\n style={theme.annotations.outline}\n />\n </>\n )\n}\n","import { useSpring, animated } from '@react-spring/web'\nimport { useMotionConfig, useTheme } from '@nivo/core'\nimport { defaultProps } from './props'\n\nexport const DotAnnotationOutline = ({\n x,\n y,\n size = defaultProps.dotSize,\n}: {\n x: number\n y: number\n size?: number\n}) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n\n const animatedProps = useSpring({\n x,\n y,\n radius: size / 2,\n config: springConfig,\n immediate: !animate,\n })\n\n return (\n <>\n {theme.annotations.outline.outlineWidth > 0 && (\n <animated.circle\n cx={animatedProps.x}\n cy={animatedProps.y}\n r={animatedProps.radius}\n style={{\n ...theme.annotations.outline,\n fill: 'none',\n strokeWidth: theme.annotations.outline.outlineWidth * 2,\n stroke: theme.annotations.outline.outlineColor,\n }}\n />\n )}\n <animated.circle\n cx={animatedProps.x}\n cy={animatedProps.y}\n r={animatedProps.radius}\n style={theme.annotations.symbol}\n />\n </>\n )\n}\n","import { useSpring, animated } from '@react-spring/web'\nimport { useMotionConfig, useTheme } from '@nivo/core'\n\nexport const RectAnnotationOutline = ({\n x,\n y,\n width,\n height,\n}: {\n x: number\n y: number\n width: number\n height: number\n}) => {\n const theme = useTheme()\n const { animate, config: springConfig } = useMotionConfig()\n\n const animatedProps = useSpring({\n x: x - width / 2,\n y: y - height / 2,\n width,\n height,\n config: springConfig,\n immediate: !animate,\n })\n\n return (\n <>\n {theme.annotations.outline.outlineWidth > 0 && (\n <animated.rect\n x={animatedProps.x}\n y={animatedProps.y}\n width={animatedProps.width}\n height={animatedProps.height}\n style={{\n ...theme.annotations.outline,\n fill: 'none',\n strokeWidth:\n theme.annotations.outline.strokeWidth +\n theme.annotations.outline.outlineWidth * 2,\n stroke: theme.annotations.outline.outlineColor,\n }}\n />\n )}\n <animated.rect\n x={animatedProps.x}\n y={animatedProps.y}\n width={animatedProps.width}\n height={animatedProps.height}\n style={theme.annotations.outline}\n />\n </>\n )\n}\n","import { useComputedAnnotation } from './hooks'\nimport { AnnotationNote } from './AnnotationNote'\nimport { AnnotationLink } from './AnnotationLink'\nimport { CircleAnnotationOutline } from './CircleAnnotationOutline'\nimport { DotAnnotationOutline } from './DotAnnotationOutline'\nimport { RectAnnotationOutline } from './RectAnnotationOutline'\nimport { BoundAnnotation } from './types'\nimport { isCircleAnnotation, isDotAnnotation, isRectAnnotation, isSvgNote } from './utils'\n\nexport const Annotation = <Datum,>(annotation: BoundAnnotation<Datum>) => {\n const { datum, x, y, note } = annotation\n const computed = useComputedAnnotation(annotation)\n\n if (!isSvgNote(note)) {\n throw new Error('note should be a valid react element')\n }\n\n return (\n <>\n <AnnotationLink points={computed.points} isOutline={true} />\n {isCircleAnnotation(annotation) && (\n <CircleAnnotationOutline x={x} y={y} size={annotation.size} />\n )}\n {isDotAnnotation(annotation) && (\n <DotAnnotationOutline x={x} y={y} size={annotation.size} />\n )}\n {isRectAnnotation(annotation) && (\n <RectAnnotationOutline\n x={x}\n y={y}\n width={annotation.width}\n height={annotation.height}\n />\n )}\n <AnnotationLink points={computed.points} />\n <AnnotationNote datum={datum} x={computed.text[0]} y={computed.text[1]} note={note} />\n </>\n )\n}\n","import { useState, useCallback } from 'react'\nimport * as React from 'react'\nimport { useTheme } from '@nivo/core'\nimport { LegendSvgItemProps } from '../types'\nimport { computeItemLayout } from '../compute'\nimport { SymbolCircle, SymbolDiamond, SymbolSquare, SymbolTriangle } from './symbols'\n\ntype Style = Partial<{\n itemBackground: string\n itemOpacity: number\n itemTextColor: string\n symbolBorderColor: string\n symbolBorderWidth: number\n symbolSize: number\n}>\n\nconst symbolByShape = {\n circle: SymbolCircle,\n diamond: SymbolDiamond,\n square: SymbolSquare,\n triangle: SymbolTriangle,\n}\n\nexport const LegendSvgItem = ({\n x,\n y,\n width,\n height,\n data,\n direction = 'left-to-right',\n justify = false,\n textColor,\n background = 'transparent',\n opacity = 1,\n\n symbolShape = 'square',\n symbolSize = 16,\n symbolSpacing = 8,\n symbolBorderWidth = 0,\n symbolBorderColor = 'transparent',\n\n onClick,\n onMouseEnter,\n onMouseLeave,\n toggleSerie,\n\n effects,\n}: LegendSvgItemProps) => {\n const [style, setStyle] = useState<Style>({})\n const theme = useTheme()\n\n const handleMouseEnter = useCallback(\n (event: React.MouseEvent<SVGRectElement>) => {\n if (effects) {\n const applyEffects = effects.filter(({ on }) => on === 'hover')\n const style = applyEffects.reduce(\n (acc, effect) => ({\n ...acc,\n ...effect.style,\n }),\n {}\n )\n setStyle(style)\n }\n\n onMouseEnter?.(data, event)\n },\n [onMouseEnter, data, effects]\n )\n const handleMouseLeave = useCallback(\n (event: React.MouseEvent<SVGRectElement>) => {\n if (effects) {\n const applyEffects = effects.filter(({ on }) => on !== 'hover')\n const style = applyEffects.reduce(\n (acc, effect) => ({\n ...acc,\n ...effect.style,\n }),\n {}\n )\n setStyle(style)\n }\n\n onMouseLeave?.(data, event)\n },\n [onMouseLeave, data, effects]\n )\n\n const { symbolX, symbolY, labelX, labelY, labelAnchor, labelAlignment } = computeItemLayout({\n direction,\n justify,\n symbolSize: style.symbolSize ?? symbolSize,\n symbolSpacing,\n width,\n height,\n })\n\n const isInteractive = [onClick, onMouseEnter, onMouseLeave, toggleSerie].some(\n handler => handler !== undefined\n )\n\n const SymbolShape = typeof symbolShape === 'function' ? symbolShape : symbolByShape[symbolShape]\n\n return (\n <g\n transform={`translate(${x},${y})`}\n style={{\n opacity: style.itemOpacity ?? opacity,\n }}\n >\n <rect\n width={width}\n height={height}\n fill={style.itemBackground ?? background}\n style={{\n cursor: isInteractive ? 'pointer' : 'auto',\n }}\n onClick={event => {\n onClick?.(data, event)\n toggleSerie?.(data.id)\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n {React.createElement(SymbolShape, {\n id: data.id,\n x: symbolX,\n y: symbolY,\n size: style.symbolSize ?? symbolSize,\n fill: data.fill ?? data.color ?? 'black',\n borderWidth: style.symbolBorderWidth ?? symbolBorderWidth,\n borderColor: style.symbolBorderColor ?? symbolBorderColor,\n ...(data.hidden ? theme.legends.hidden.symbol : undefined),\n })}\n <text\n textAnchor={labelAnchor}\n style={{\n ...theme.legends.text,\n fill: style.itemTextColor ?? textColor ?? theme.legends.text.fill ?? 'black',\n dominantBaseline: labelAlignment,\n pointerEvents: 'none',\n userSelect: 'none',\n ...(data.hidden ? theme.legends.hidden.text : undefined),\n }}\n x={labelX}\n y={labelY}\n >\n {data.label}\n </text>\n </g>\n )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolCircle = ({\n x,\n y,\n size,\n fill,\n opacity = 1,\n borderWidth = 0,\n borderColor = 'transparent',\n}: SymbolProps) => {\n return (\n <circle\n r={size / 2}\n cx={x + size / 2}\n cy={y + size / 2}\n fill={fill}\n opacity={opacity}\n strokeWidth={borderWidth}\n stroke={borderColor}\n style={{\n pointerEvents: 'none',\n }}\n />\n )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolDiamond = ({\n x,\n y,\n size,\n fill,\n opacity = 1,\n borderWidth = 0,\n borderColor = 'transparent',\n}: SymbolProps) => {\n return (\n <g transform={`translate(${x},${y})`}>\n <path\n d={`\n M${size / 2} 0\n L${size * 0.8} ${size / 2}\n L${size / 2} ${size}\n L${size * 0.2} ${size / 2}\n L${size / 2} 0\n `}\n fill={fill}\n opacity={opacity}\n strokeWidth={borderWidth}\n stroke={borderColor}\n style={{\n pointerEvents: 'none',\n }}\n />\n </g>\n )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolSquare = ({\n x,\n y,\n size,\n fill,\n opacity = 1,\n borderWidth = 0,\n borderColor = 'transparent',\n}: SymbolProps) => {\n return (\n <rect\n x={x}\n y={y}\n fill={fill}\n opacity={opacity}\n strokeWidth={borderWidth}\n stroke={borderColor}\n width={size}\n height={size}\n style={{\n pointerEvents: 'none',\n }}\n />\n )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolTriangle = ({\n x,\n y,\n size,\n fill,\n opacity = 1,\n borderWidth = 0,\n borderColor = 'transparent',\n}: SymbolProps) => {\n return (\n <g transform={`translate(${x},${y})`}>\n <path\n d={`\n M${size / 2} 0\n L${size} ${size}\n L0 ${size}\n L${size / 2} 0\n `}\n fill={fill}\n opacity={opacity}\n strokeWidth={borderWidth}\n stroke={borderColor}\n style={{\n pointerEvents: 'none',\n }}\n />\n </g>\n )\n}\n","import { LegendSvgItem } from './LegendSvgItem'\nimport { LegendSvgProps } from '../types'\nimport { computeDimensions } from '../compute'\n\nexport const LegendSvg = ({\n data,\n\n x,\n y,\n direction,\n padding: _padding = 0,\n justify,\n effects,\n\n itemWidth,\n itemHeight,\n itemDirection = 'left-to-right',\n itemsSpacing = 0,\n itemTextColor,\n itemBackground = 'transparent',\n itemOpacity = 1,\n\n symbolShape,\n symbolSize,\n symbolSpacing,\n symbolBorderWidth,\n symbolBorderColor,\n\n onClick,\n onMouseEnter,\n onMouseLeave,\n toggleSerie,\n}: LegendSvgProps) => {\n const { padding } = computeDimensions({\n itemCount: data.length,\n itemWidth,\n itemHeight,\n itemsSpacing,\n direction,\n padding: _padding,\n })\n\n const xStep = direction === 'row' ? itemWidth + itemsSpacing : 0\n const yStep = direction === 'column' ? itemHeight + itemsSpacing : 0\n\n return (\n <g transform={`translate(${x},${y})`}>\n {data.map((data, i) => (\n <LegendSvgItem\n key={i}\n data={data}\n x={i * xStep + padding.left}\n y={i * yStep + padding.top}\n width={itemWidth}\n height={itemHeight}\n direction={itemDirection}\n justify={justify}\n effects={effects}\n textColor={itemTextColor}\n background={itemBackground}\n opacity={itemOpacity}\n symbolShape={symbolShape}\n symbolSize={symbolSize}\n symbolSpacing={symbolSpacing}\n symbolBorderWidth={symbolBorderWidth}\n symbolBorderColor={symbolBorderColor}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n toggleSerie={toggleSerie}\n />\n ))}\n </g>\n )\n}\n","import { LegendSvg } from './LegendSvg'\nimport { BoxLegendSvgProps } from '../types'\nimport { computeDimensions, computePositionFromAnchor } from '../compute'\n\nexport const BoxLegendSvg = ({\n data,\n\n containerWidth,\n containerHeight,\n translateX = 0,\n translateY = 0,\n anchor,\n direction,\n padding = 0,\n justify,\n\n itemsSpacing = 0,\n itemWidth,\n itemHeight,\n itemDirection,\n itemTextColor,\n itemBackground,\n itemOpacity,\n\n symbolShape,\n symbolSize,\n symbolSpacing,\n symbolBorderWidth,\n symbolBorderColor,\n\n onClick,\n onMouseEnter,\n onMouseLeave,\n toggleSerie,\n\n effects,\n}: BoxLegendSvgProps) => {\n const { width, height } = computeDimensions({\n itemCount: data.length,\n itemsSpacing,\n itemWidth,\n itemHeight,\n direction,\n padding,\n })\n\n const { x, y } = computePositionFromAnchor({\n anchor,\n translateX,\n translateY,\n containerWidth,\n containerHeight,\n width,\n height,\n })\n\n return (\n <LegendSvg\n data={data}\n x={x}\n y={y}\n direction={direction}\n padding={padding}\n justify={justify}\n effects={effects}\n itemsSpacing={itemsSpacing}\n itemWidth={itemWidth}\n itemHeight={itemHeight}\n itemDirection={itemDirection}\n itemTextColor={itemTextColor}\n itemBackground={itemBackground}\n itemOpacity={itemOpacity}\n symbolShape={symbolShape}\n symbolSize={symbolSize}\n symbolSpacing={symbolSpacing}\n symbolBorderWidth={symbolBorderWidth}\n symbolBorderColor={symbolBorderColor}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n toggleSerie={typeof toggleSerie === 'boolean' ? undefined : toggleSerie}\n />\n )\n}\n","import {\n schemeCategory10,\n schemeAccent,\n schemeDark2,\n schemePaired,\n schemePastel1,\n schemePastel2,\n schemeSet1,\n schemeSet2,\n schemeSet3,\n} from 'd3-scale-chromatic'\n\nexport const categoricalColorSchemes = {\n nivo: ['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'],\n category10: schemeCategory10,\n accent: schemeAccent,\n dark2: schemeDark2,\n paired: schemePaired,\n pastel1: schemePastel1,\n pastel2: schemePastel2,\n set1: schemeSet1,\n set2: schemeSet2,\n set3: schemeSet3,\n}\n\nexport type CategoricalColorSchemeId = keyof typeof categoricalColorSchemes\n\nexport const categoricalColorSchemeIds = Object.keys(\n categoricalColorSchemes\n) as CategoricalColorSchemeId[]\n","import {\n schemeBrBG,\n interpolateBrBG,\n schemePRGn,\n interpolatePRGn,\n schemePiYG,\n interpolatePiYG,\n schemePuOr,\n interpolatePuOr,\n schemeRdBu,\n interpolateRdBu,\n schemeRdGy,\n interpolateRdGy,\n schemeRdYlBu,\n interpolateRdYlBu,\n schemeRdYlGn,\n interpolateRdYlGn,\n schemeSpectral,\n interpolateSpectral,\n} from 'd3-scale-chromatic'\n\n// Diverging color schemes support a size k ranging from 3 to 11\nexport const divergingColorSchemes = {\n brown_blueGreen: schemeBrBG,\n purpleRed_green: schemePRGn,\n pink_yellowGreen: schemePiYG,\n purple_orange: schemePuOr,\n red_blue: schemeRdBu,\n red_grey: schemeRdGy,\n red_yellow_blue: schemeRdYlBu,\n red_yellow_green: schemeRdYlGn,\n spectral: schemeSpectral,\n}\n\nexport type DivergingColorSchemeId = keyof typeof divergingColorSchemes\n\nexport const divergingColorSchemeIds = Object.keys(\n divergingColorSchemes\n) as DivergingColorSchemeId[]\n\nexport const divergingColorInterpolators = {\n brown_blueGreen: interpolateBrBG,\n purpleRed_green: interpolatePRGn,\n pink_yellowGreen: interpolatePiYG,\n purple_orange: interpolatePuOr,\n red_blue: interpolateRdBu,\n red_grey: interpolateRdGy,\n red_yellow_blue: interpolateRdYlBu,\n red_yellow_green: interpolateRdYlGn,\n spectral: interpolateSpectral,\n}\n\nexport type DivergingColorInterpolatorId = keyof typeof divergingColorInterpolators\n","import {\n // single hue\n schemeBlues,\n interpolateBlues,\n schemeGreens,\n interpolateGreens,\n schemeGreys,\n interpolateGreys,\n schemeOranges,\n interpolateOranges,\n schemePurples,\n interpolatePurples,\n schemeReds,\n interpolateReds,\n // multi hue\n schemeBuGn,\n interpolateBuGn,\n schemeBuPu,\n interpolateBuPu,\n schemeGnBu,\n interpolateGnBu,\n schemeOrRd,\n interpolateOrRd,\n schemePuBuGn,\n interpolatePuBuGn,\n schemePuBu,\n interpolatePuBu,\n schemePuRd,\n interpolatePuRd,\n schemeRdPu,\n interpolateRdPu,\n schemeYlGnBu,\n interpolateYlGnBu,\n schemeYlGn,\n interpolateYlGn,\n schemeYlOrBr,\n interpolateYlOrBr,\n schemeYlOrRd,\n interpolateYlOrRd,\n interpolateTurbo,\n interpolateViridis,\n interpolateInferno,\n interpolateMagma,\n interpolatePlasma,\n interpolateCividis,\n interpolateWarm,\n interpolateCool,\n interpolateCubehelixDefault,\n} from 'd3-scale-chromatic'\n\n// Sequential, single-hue color schemes support a size k ranging from 3 to 9\n// Sequential, multi-hue color schemes support a size k ranging from 3 to 9\nexport const sequentialColorSchemes = {\n // single hue\n blues: schemeBlues,\n greens: schemeGreens,\n greys: schemeGreys,\n oranges: schemeOranges,\n purples: schemePurples,\n reds: schemeReds,\n // multi hue\n blue_green: schemeBuGn,\n blue_purple: schemeBuPu,\n green_blue: schemeGnBu,\n orange_red: schemeOrRd,\n purple_blue_green: schemePuBuGn,\n purple_blue: schemePuBu,\n purple_red: schemePuRd,\n red_purple: schemeRdPu,\n yellow_green_blue: schemeYlGnBu,\n yellow_green: schemeYlGn,\n yellow_orange_brown: schemeYlOrBr,\n yellow_orange_red: schemeYlOrRd,\n}\n\nexport type SequentialColorSchemeId = keyof typeof sequentialColorSchemes\n\nexport const sequentialColorSchemeIds = Object.keys(\n sequentialColorSchemes\n) as SequentialColorSchemeId[]\n\nexport const sequentialColorInterpolators = {\n // single hue\n blues: interpolateBlues,\n greens: interpolateGreens,\n greys: interpolateGreys,\n oranges: interpolateOranges,\n purples: interpolatePurples,\n reds: interpolateReds,\n // multi hue\n turbo: interpolateTurbo,\n viridis: interpolateViridis,\n inferno: interpolateInferno,\n magma: interpolateMagma,\n plasma: interpolatePlasma,\n cividis: interpolateCividis,\n warm: interpolateWarm,\n cool: interpolateCool,\n cubehelixDefault: interpolateCubehelixDefault,\n blue_green: interpolateBuGn,\n blue_purple: interpolateBuPu,\n green_blue: interpolateGnBu,\n orange_red: interpolateOrRd,\n purple_blue_green: interpolatePuBuGn,\n purple_blue: interpolatePuBu,\n purple_red: interpolatePuRd,\n red_purple: interpolateRdPu,\n yellow_green_blue: interpolateYlGnBu,\n yellow_green: interpolateYlGn,\n yellow_orange_brown: interpolateYlOrBr,\n yellow_orange_red: interpolateYlOrRd,\n}\n\nexport type SequentialColorInterpolatorId = keyof typeof sequentialColorInterpolators\n","import {\n categoricalColorSchemes,\n categoricalColorSchemeIds,\n CategoricalColorSchemeId,\n} from './categorical'\nimport { divergingColorSchemes, divergingColorSchemeIds, DivergingColorSchemeId } from './diverging'\nimport {\n sequentialColorSchemes,\n sequentialColorSchemeIds,\n SequentialColorSchemeId,\n} from './sequential'\n\nexport const colorSchemes = {\n ...categoricalColorSchemes,\n ...divergingColorSchemes,\n ...sequentialColorSchemes,\n}\n\nexport type ColorSchemeId =\n | CategoricalColorSchemeId\n | DivergingColorSchemeId\n | SequentialColorSchemeId\n\nexport const colorSchemeIds = Object.keys(colorSchemes) as ColorSchemeId[]\n\nexport const isCategoricalColorScheme = (\n scheme: ColorSchemeId\n): scheme is CategoricalColorSchemeId =>\n categoricalColorSchemeIds.includes(scheme as CategoricalColorSchemeId)\n\nexport const isDivergingColorScheme = (scheme: ColorSchemeId): scheme is DivergingColorSchemeId =>\n divergingColorSchemeIds.includes(scheme as DivergingColorSchemeId)\n\nexport const isSequentialColorScheme = (scheme: ColorSchemeId): scheme is SequentialColorSchemeId =>\n sequentialColorSchemeIds.includes(scheme as SequentialColorSchemeId)\n","import { interpolateRainbow, interpolateSinebow } from 'd3-scale-chromatic'\n\nexport const cyclicalColorInterpolators = {\n rainbow: interpolateRainbow,\n sinebow: interpolateSinebow,\n}\n\nexport type CyclicalColorInterpolatorId = keyof typeof cyclicalColorInterpolators\n","import { divergingColorInterpolators, DivergingColorInterpolatorId } from './diverging'\nimport { sequentialColorInterpolators, SequentialColorInterpolatorId } from './sequential'\nimport { cyclicalColorInterpolators, CyclicalColorInterpolatorId } from './cyclical'\n\nexport const colorInterpolators = {\n ...divergingColorInterpolators,\n ...sequentialColorInterpolators,\n ...cyclicalColorInterpolators,\n}\n\nexport type ColorInterpolatorId =\n | DivergingColorInterpolatorId\n | SequentialColorInterpolatorId\n | CyclicalColorInterpolatorId\n\nexport const colorInterpolatorIds = Object.keys(colorInterpolators) as ColorInterpolatorId[]\n","import { useMemo } from 'react'\nimport { get, isPlainObject } from 'lodash'\nimport { rgb, RGBColor } from 'd3-color'\nimport { Theme } from '@nivo/core'\n\nexport type ColorModifierBrightness = ['brighter', number]\n\nexport type ColorModifierDarkness = ['darker', number]\n\nexport type ColorModifierOpacity = ['opacity', number]\n\nexport type ColorModifier = ColorModifierBrightness | ColorModifierDarkness | ColorModifierOpacity\n\nexport type ColorModifierFunction = (color: RGBColor) => RGBColor\n\nexport type InheritedColorConfigStaticColor = string\n\nexport type InheritedColorConfigCustomFunction<Datum> = (d: Datum, ...drest: Datum[]) => string\n\nexport interface InheritedColorConfigFromTheme {\n theme: string\n}\n\nexport interface InheritedColorConfigFromContext {\n from: string\n modifiers?: ColorModifier[]\n}\n\nexport type InheritedColorConfig<Datum> =\n | InheritedColorConfigStaticColor\n | InheritedColorConfigCustomFunction<Datum>\n | InheritedColorConfigFromTheme\n | InheritedColorConfigFromContext\n\nconst isInheritedColorConfigFromTheme = <Datum>(\n config: InheritedColorConfig<Datum>\n): config is InheritedColorConfigFromTheme => {\n return (config as InheritedColorConfigFromTheme).theme !== undefined\n}\n\nconst isInheritedColorConfigFromContext = <Datum>(\n config: InheritedColorConfig<Datum>\n): config is InheritedColorConfigFromContext => {\n return (config as InheritedColorConfigFromContext).from !== undefined\n}\n\n/**\n * Create a color generator for items which\n * might inherit from parent context,\n * for example labels, outlines…\n *\n * Support the following strategies:\n * - custom function\n * - color from theme\n * - color from parent, with optional color modifiers\n * - static color\n */\nexport const getInheritedColorGenerator = <Datum = any>(\n config: InheritedColorConfig<Datum>,\n theme?: Theme\n) => {\n // user provided function\n if (typeof config === 'function') {\n return config\n }\n\n if (isPlainObject(config)) {\n // use color from theme\n if (isInheritedColorConfigFromTheme(config)) {\n if (theme === undefined) {\n throw new Error(`Unable to use color from theme as no theme was provided`)\n }\n\n const themeColor = get(theme, config.theme)\n if (themeColor === undefined) {\n throw new Error(`Color from theme is undefined at path: '${config.theme}'`)\n }\n\n return () => themeColor\n }\n\n // use color from parent with optional color modifiers\n if (isInheritedColorConfigFromContext(config)) {\n const getColor = (d: Datum) => get(d, config.from)\n\n if (Array.isArray(config.modifiers)) {\n const modifiers: ColorModifierFunction[] = []\n for (const modifier of config.modifiers) {\n const [modifierType, amount] = modifier\n if (modifierType === 'brighter') {\n modifiers.push(color => color.brighter(amount))\n } else if (modifierType === 'darker') {\n modifiers.push(color => color.darker(amount))\n } else if (modifierType === 'opacity') {\n modifiers.push(color => {\n color.opacity = amount\n\n return color\n })\n } else {\n throw new Error(\n `Invalid color modifier: '${modifierType}', must be one of: 'brighter', 'darker', 'opacity'`\n )\n }\n }\n\n if (modifiers.length === 0) return getColor\n\n return (datum: Datum) =>\n modifiers\n .reduce((color, modify) => modify(color), rgb(getColor(datum)))\n .toString()\n }\n\n // no modifier\n return getColor\n }\n\n throw new Error(\n `Invalid color spec, you should either specify 'theme' or 'from' when using a config object`\n )\n }\n\n // use provided color statically\n return () => config as string\n}\n\nexport const useInheritedColor = <Datum = any>(\n config: InheritedColorConfig<Datum>,\n theme?: Theme\n) => useMemo(() => getInheritedColorGenerator<Datum>(config, theme), [config, theme])\n","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\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\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\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\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 { useMemo } from 'react'\nimport { get, isPlainObject } from 'lodash'\nimport { scaleOrdinal } from 'd3-scale'\nimport {\n ColorSchemeId,\n colorSchemes,\n isCategoricalColorScheme,\n isSequentialColorScheme,\n isDivergingColorScheme,\n} from './schemes'\n\n/**\n * Static color.\n */\nexport type OrdinalColorScaleConfigStaticColor = string\n\n/**\n * User defined function, receiving the current datum.\n */\nexport type OrdinalColorScaleConfigCustomFunction<Datum> = (d: Datum) => string\n\n/**\n * Pre-defined color scheme.\n */\nexport interface OrdinalColorScaleConfigScheme {\n scheme: ColorSchemeId\n // size is useful for diverging & sequential colors,\n // as they are array of array, whereas categorical colors\n // are simple arrays, if the size isn't specified,\n // the bigger array will be selected, this means the 11th\n // for diverging colors and 9th for sequential ones.\n size?: number\n}\n\n/**\n * User defined colors.\n */\nexport type OrdinalColorScaleConfigCustomColors = string[]\n\n/**\n * Get color from datum.\n */\nexport interface OrdinalColorScaleConfigDatumProperty {\n // path to the color property\n datum: string\n}\n\nexport type OrdinalColorScaleConfig<Datum = any> =\n | OrdinalColorScaleConfigStaticColor\n | OrdinalColorScaleConfigCustomFunction<Datum>\n | OrdinalColorScaleConfigScheme\n | OrdinalColorScaleConfigCustomColors\n | OrdinalColorScaleConfigDatumProperty\n\nconst isOrdinalColorScaleConfigScheme = <Datum>(\n config: OrdinalColorScaleConfig<Datum>\n): config is OrdinalColorScaleConfigScheme => {\n return (config as OrdinalColorScaleConfigScheme).scheme !== undefined\n}\n\nconst isOrdinalColorScaleConfigDatumProperty = <Datum>(\n config: OrdinalColorScaleConfig<Datum>\n): config is OrdinalColorScaleConfigDatumProperty => {\n return (config as OrdinalColorScaleConfigDatumProperty).datum !== undefined\n}\n\nexport type DatumIdentityAccessor<Datum> = (datum: Datum) => string | number\n\nexport type OrdinalColorScale<Datum> = (d: Datum) => string\n\n/**\n * Compute an ordinal color scale\n */\nexport const getOrdinalColorScale = <Datum = any>(\n config: OrdinalColorScaleConfig<Datum>,\n identity?: string | DatumIdentityAccessor<Datum>\n): OrdinalColorScale<Datum> => {\n // user defined function\n if (typeof config === 'function') {\n return config\n }\n\n // compute accessor to the datum identity\n const getIdentity =\n typeof identity === 'function' ? identity : (datum: Datum) => get(datum, identity as string)\n\n // user defined color array\n if (Array.isArray(config)) {\n const scale = scaleOrdinal(config)\n const generator = (datum: Datum) => scale(getIdentity(datum))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n if (isPlainObject(config)) {\n // use color from current datum\n if (isOrdinalColorScaleConfigDatumProperty(config)) {\n return (datum: Datum) => get(datum, config.datum)\n }\n\n // ordinal scale from predefined scheme\n if (isOrdinalColorScaleConfigScheme(config)) {\n // categorical color scheme\n if (isCategoricalColorScheme(config.scheme)) {\n const scale = scaleOrdinal(colorSchemes[config.scheme])\n const generator = (datum: Datum) => scale(getIdentity(datum))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n // Diverging color schemes support a size k ranging from 3 to 11\n if (isDivergingColorScheme(config.scheme)) {\n if (config.size !== undefined && (config.size < 3 || config.size > 11)) {\n throw new Error(\n `Invalid size '${config.size}' for diverging color scheme '${config.scheme}', must be between 3~11`\n )\n }\n\n const scale = scaleOrdinal(colorSchemes[config.scheme][config.size || 11])\n const generator = (d: Datum) => scale(getIdentity(d))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n // Sequential, single-hue color schemes support a size k ranging from 3 to 9.\n // Sequential, multi-hue color schemes support a size k ranging from 3 to 9.\n if (isSequentialColorScheme(config.scheme)) {\n if (config.size !== undefined && (config.size < 3 || config.size > 9)) {\n throw new Error(\n `Invalid size '${config.size}' for sequential color scheme '${config.scheme}', must be between 3~9`\n )\n }\n\n const scale = scaleOrdinal(colorSchemes[config.scheme][config.size || 9])\n const generator = (d: Datum) => scale(getIdentity(d))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n }\n\n throw new Error(\n `Invalid colors, when using an object, you should either pass a 'datum' or a 'scheme' property`\n )\n }\n\n // static color\n return () => config as string\n}\n\nexport const useOrdinalColorScale = <Datum = any>(\n config: OrdinalColorScaleConfig<Datum>,\n identity: string | DatumIdentityAccessor<Datum>\n) => useMemo(() => getOrdinalColorScale<Datum>(config, identity), [config, identity])\n","export var slice = Array.prototype.slice;\n","import {slice} 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\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = 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(slice.call(_)), 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(slice.call(_)), 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 { Annotation, useAnnotations } from '@nivo/annotations'\nimport { BarAnnotationsProps } from './types'\n\nexport const BarAnnotations = <RawDatum,>({ bars, annotations }: BarAnnotationsProps<RawDatum>) => {\n const boundAnnotations = useAnnotations({\n data: bars,\n annotations,\n getPosition: bar => ({\n x: bar.x + bar.width / 2,\n y: bar.y + bar.height / 2,\n }),\n getDimensions: ({ height, width }) => ({\n width,\n height,\n size: Math.max(width, height),\n }),\n })\n\n return (\n <>\n {boundAnnotations.map((annotation, i) => (\n <Annotation key={i} {...annotation} />\n ))}\n </>\n )\n}\n","import { BoxLegendSvg } from '@nivo/legends'\nimport { BarLegendProps, LegendData } from './types'\n\ninterface BarLegendsProps {\n width: number\n height: number\n legends: [BarLegendProps, LegendData[]][]\n toggleSerie: (id: string | number) => void\n}\n\nexport const BarLegends = ({ width, height, legends, toggleSerie }: BarLegendsProps) => (\n <>\n {legends.map(([legend, data], i) => (\n <BoxLegendSvg\n key={i}\n {...legend}\n containerWidth={width}\n containerHeight={height}\n data={legend.data ?? data}\n toggleSerie={\n legend.toggleSerie && legend.dataFrom === 'keys' ? toggleSerie : undefined\n }\n />\n ))}\n </>\n)\n","import { BarTooltipProps } from './types'\nimport { BasicTooltip } from '@nivo/tooltip'\n\nexport const BarTooltip = <RawDatum,>({ color, label, ...data }: BarTooltipProps<RawDatum>) => {\n return <BasicTooltip id={label} value={data.formattedValue} enableChip={true} color={color} />\n}\n","import { createElement, MouseEvent, useCallback, useMemo } from 'react'\nimport { animated, to } from '@react-spring/web'\nimport { useTheme } from '@nivo/core'\nimport { useTooltip } from '@nivo/tooltip'\nimport { BarDatum, BarItemProps } from './types'\n\nexport const BarItem = <RawDatum extends BarDatum>({\n bar: { data, ...bar },\n\n style: {\n borderColor,\n color,\n height,\n labelColor,\n labelOpacity,\n labelX,\n labelY,\n transform,\n width,\n },\n\n borderRadius,\n borderWidth,\n\n label,\n shouldRenderLabel,\n\n isInteractive,\n onClick,\n onMouseEnter,\n onMouseLeave,\n\n tooltip,\n\n isFocusable,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n}: BarItemProps<RawDatum>) => {\n const theme = useTheme()\n const { showTooltipFromEvent, showTooltipAt, hideTooltip } = useTooltip()\n\n const renderTooltip = useMemo(() => () => createElement(tooltip, { ...bar, ...data }), [\n tooltip,\n bar,\n data,\n ])\n\n const handleClick = useCallback(\n (event: MouseEvent<SVGRectElement>) => {\n onClick?.({ color: bar.color, ...data }, event)\n },\n [bar, data, onClick]\n )\n const handleTooltip = useCallback(\n (event: MouseEvent<SVGRectElement>) => showTooltipFromEvent(renderTooltip(), event),\n [showTooltipFromEvent, renderTooltip]\n )\n const handleMouseEnter = useCallback(\n (event: MouseEvent<SVGRectElement>) => {\n onMouseEnter?.(data, event)\n showTooltipFromEvent(renderTooltip(), event)\n },\n [data, onMouseEnter, showTooltipFromEvent, renderTooltip]\n )\n const handleMouseLeave = useCallback(\n (event: MouseEvent<SVGRectElement>) => {\n onMouseLeave?.(data, event)\n hideTooltip()\n },\n [data, hideTooltip, onMouseLeave]\n )\n\n // extra handlers to allow keyboard navigation\n const handleFocus = useCallback(() => {\n showTooltipAt(renderTooltip(), [bar.absX + bar.width / 2, bar.absY])\n }, [showTooltipAt, renderTooltip, bar])\n const handleBlur = useCallback(() => {\n hideTooltip()\n }, [hideTooltip])\n\n return (\n <animated.g transform={transform}>\n <animated.rect\n width={to(width, value => Math.max(value, 0))}\n height={to(height, value => Math.max(value, 0))}\n rx={borderRadius}\n ry={borderRadius}\n fill={data.fill ?? color}\n strokeWidth={borderWidth}\n stroke={borderColor}\n focusable={isFocusable}\n tabIndex={isFocusable ? 0 : undefined}\n aria-label={ariaLabel ? ariaLabel(data) : undefined}\n aria-labelledby={ariaLabelledBy ? ariaLabelledBy(data) : undefined}\n aria-describedby={ariaDescribedBy ? ariaDescribedBy(data) : undefined}\n onMouseEnter={isInteractive ? handleMouseEnter : undefined}\n onMouseMove={isInteractive ? handleTooltip : undefined}\n onMouseLeave={isInteractive ? handleMouseLeave : undefined}\n onClick={isInteractive ? handleClick : undefined}\n onFocus={isInteractive && isFocusable ? handleFocus : undefined}\n onBlur={isInteractive && isFocusable ? handleBlur : undefined}\n />\n {shouldRenderLabel && (\n <animated.text\n x={labelX}\n y={labelY}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n fillOpacity={labelOpacity}\n style={{\n ...theme.labels.text,\n pointerEvents: 'none',\n fill: labelColor,\n }}\n >\n {label}\n </animated.text>\n )}\n </animated.g>\n )\n}\n","import { ScaleBandSpec, ScaleBand, computeScale } from '@nivo/scales'\n\n/**\n * Generates indexed scale.\n */\nexport const getIndexScale = <RawDatum>(\n data: RawDatum[],\n getIndex: (datum: RawDatum) => string,\n padding: number,\n indexScale: ScaleBandSpec,\n size: number,\n axis: 'x' | 'y'\n) => {\n return (computeScale(\n indexScale,\n { all: data.map(getIndex), min: 0, max: 0 },\n size,\n axis\n ) as ScaleBand<string>).padding(padding)\n}\n\n/**\n * This method ensures all the provided keys exist in the entire series.\n */\nexport const normalizeData = <RawDatum>(data: RawDatum[], keys: string[]) =>\n data.map(\n item =>\n ({\n ...keys.reduce<Record<string, unknown>>((acc, key) => {\n acc[key] = null\n return acc\n }, {}),\n ...item,\n } as RawDatum)\n )\n\nexport const filterNullValues = <RawDatum extends Record<string, unknown>>(data: RawDatum) =>\n Object.keys(data).reduce<Record<string, unknown>>((acc, key) => {\n if (data[key]) {\n acc[key] = data[key]\n }\n return acc\n }, {}) as Exclude<RawDatum, null | undefined | false | '' | 0>\n\nexport const coerceValue = <T>(value: T) => [value, Number(value)] as const\n","import { Margin } from '@nivo/core'\nimport { OrdinalColorScale } from '@nivo/colors'\nimport { Scale, ScaleBand, computeScale } from '@nivo/scales'\nimport { BarDatum, BarSvgProps, ComputedBarDatum, ComputedDatum } from '../types'\nimport { coerceValue, filterNullValues, getIndexScale, normalizeData } from './common'\n\ntype Params<RawDatum, XScaleInput, YScaleInput> = {\n data: RawDatum[]\n formatValue: (value: number) => string\n getColor: OrdinalColorScale<ComputedDatum<RawDatum>>\n getIndex: (datum: RawDatum) => string\n getTooltipLabel: (datum: ComputedDatum<RawDatum>) => string\n innerPadding: number\n keys: string[]\n xScale: XScaleInput extends string ? ScaleBand<XScaleInput> : Scale<XScaleInput, number>\n yScale: YScaleInput extends string ? ScaleBand<YScaleInput> : Scale<YScaleInput, number>\n margin: Margin\n}\n\nconst gt = (value: number, other: number) => value > other\nconst lt = (value: number, other: number) => value < other\n\nconst range = (start: number, end: number) =>\n Array.from(' '.repeat(end - start), (_, index) => start + index)\n\nconst clampToZero = (value: number) => (gt(value, 0) ? 0 : value)\nconst zeroIfNotFinite = (value: number) => (isFinite(value) ? value : 0)\n\n/**\n * Generates x/y scales & bars for vertical grouped bar chart.\n */\nconst generateVerticalGroupedBars = <RawDatum extends Record<string, unknown>>(\n {\n data,\n formatValue,\n getColor,\n getIndex,\n getTooltipLabel,\n innerPadding = 0,\n keys,\n xScale,\n yScale,\n margin,\n }: Params<RawDatum, string, number>,\n barWidth: number,\n reverse: boolean,\n yRef: number\n): ComputedBarDatum<RawDatum>[] => {\n const compare = reverse ? lt : gt\n const getY = (d: number) => (compare(d, 0) ? yScale(d) ?? 0 : yRef)\n const getHeight = (d: number, y: number) => (compare(d, 0) ? yRef - y : (yScale(d) ?? 0) - yRef)\n const cleanedData = data.map(filterNullValues)\n\n const bars: ComputedBarDatum<RawDatum>[] = []\n keys.forEach((key, i) =>\n range(0, xScale.domain().length).forEach(index => {\n const [rawValue, value] = coerceValue(data[index][key])\n const indexValue = getIndex(data[index])\n const x = (xScale(indexValue) ?? 0) + barWidth * i + innerPadding * i\n const y = getY(value)\n const barHeight = getHeight(value, y)\n const barData: ComputedDatum<RawDatum> = {\n id: key,\n value: rawValue === null ? rawValue : value,\n formattedValue: formatValue(value),\n hidden: false,\n index,\n indexValue,\n data: cleanedData[index],\n }\n\n bars.push({\n key: `${key}.${barData.indexValue}`,\n index: bars.length,\n data: barData,\n x,\n y,\n absX: margin.left + x,\n absY: margin.top + y,\n width: barWidth,\n height: barHeight,\n color: getColor(barData),\n label: getTooltipLabel(barData),\n })\n })\n )\n\n return bars\n}\n\n/**\n * Generates x/y scales & bars for horizontal grouped bar chart.\n */\nconst generateHorizontalGroupedBars = <RawDatum extends Record<string, unknown>>(\n {\n data,\n formatValue,\n getIndex,\n getColor,\n getTooltipLabel,\n keys,\n innerPadding = 0,\n xScale,\n yScale,\n margin,\n }: Params<RawDatum, number, string>,\n barHeight: number,\n reverse: boolean,\n xRef: number\n): ComputedBarDatum<RawDatum>[] => {\n const compare = reverse ? lt : gt\n const getX = (d: number) => (compare(d, 0) ? xRef : xScale(d) ?? 0)\n const getWidth = (d: number, x: number) => (compare(d, 0) ? (xScale(d) ?? 0) - xRef : xRef - x)\n const cleanedData = data.map(filterNullValues)\n\n const bars: ComputedBarDatum<RawDatum>[] = []\n keys.forEach((key, i) =>\n range(0, yScale.domain().length).forEach(index => {\n const [rawValue, value] = coerceValue(data[index][key])\n const indexValue = getIndex(data[index])\n const x = getX(value)\n const y = (yScale(indexValue) ?? 0) + barHeight * i + innerPadding * i\n const barWidth = getWidth(value, x)\n const barData: ComputedDatum<RawDatum> = {\n id: key,\n value: rawValue === null ? rawValue : value,\n formattedValue: formatValue(value),\n hidden: false,\n index,\n indexValue,\n data: cleanedData[index],\n }\n\n bars.push({\n key: `${key}.${barData.indexValue}`,\n index: bars.length,\n data: barData,\n x,\n y,\n absX: margin.left + x,\n absY: margin.top + y,\n width: barWidth,\n height: barHeight,\n color: getColor(barData),\n label: getTooltipLabel(barData),\n })\n })\n )\n\n return bars\n}\n\n/**\n * Generates x/y scales & bars for grouped bar chart.\n */\nexport const generateGroupedBars = <RawDatum extends BarDatum>({\n layout,\n minValue,\n maxValue,\n reverse,\n width,\n height,\n padding = 0,\n innerPadding = 0,\n valueScale,\n indexScale: indexScaleConfig,\n hiddenIds = [],\n ...props\n}: Pick<\n Required<BarSvgProps<RawDatum>>,\n | 'data'\n | 'height'\n | 'indexScale'\n | 'innerPadding'\n | 'keys'\n | 'layout'\n | 'maxValue'\n | 'minValue'\n | 'padding'\n | 'reverse'\n | 'valueScale'\n | 'width'\n> & {\n formatValue: (value: number) => string\n getColor: OrdinalColorScale<ComputedDatum<RawDatum>>\n getIndex: (datum: RawDatum) => string\n getTooltipLabel: (datum: ComputedDatum<RawDatum>) => string\n margin: Margin\n hiddenIds?: string[]\n}) => {\n const keys = props.keys.filter(key => !hiddenIds.includes(key))\n const data = normalizeData(props.data, keys)\n const [axis, otherAxis, size] =\n layout === 'vertical' ? (['y', 'x', width] as const) : (['x', 'y', height] as const)\n const indexScale = getIndexScale(\n data,\n props.getIndex,\n padding,\n indexScaleConfig,\n size,\n otherAxis\n )\n\n const scaleSpec = {\n max: maxValue,\n min: minValue,\n reverse,\n ...valueScale,\n }\n\n const clampMin = scaleSpec.min === 'auto' ? clampToZero : (value: number) => value\n\n const values = data\n .reduce<number[]>((acc, entry) => [...acc, ...keys.map(k => entry[k] as number)], [])\n .filter(Boolean)\n const min = clampMin(Math.min(...values))\n const max = zeroIfNotFinite(Math.max(...values))\n\n const scale = computeScale(\n scaleSpec as any,\n { all: values, min, max },\n axis === 'x' ? width : height,\n axis\n )\n\n const [xScale, yScale] = layout === 'vertical' ? [indexScale, scale] : [scale, indexScale]\n\n const bandwidth = (indexScale.bandwidth() - innerPadding * (keys.length - 1)) / keys.length\n const params = [\n { ...props, data, keys, innerPadding, xScale, yScale } as Params<RawDatum, any, any>,\n bandwidth,\n scaleSpec.reverse,\n scale(0) ?? 0,\n ] as const\n\n const bars: ComputedBarDatum<RawDatum>[] =\n bandwidth > 0\n ? layout === 'vertical'\n ? generateVerticalGroupedBars(...params)\n : generateHorizontalGroupedBars(...params)\n : []\n\n return { xScale, yScale, bars }\n}\n","import { Margin } from '@nivo/core'\nimport { OrdinalColorScale } from '@nivo/colors'\nimport { Scale, ScaleBand, computeScale } from '@nivo/scales'\nimport { Series, SeriesPoint, stack, stackOffsetDiverging } from 'd3-shape'\nimport { BarDatum, BarSvgProps, ComputedBarDatum, ComputedDatum } from '../types'\nimport { coerceValue, filterNullValues, getIndexScale, normalizeData } from './common'\n\ntype StackDatum<RawDatum> = SeriesPoint<RawDatum>\n\ntype Params<RawDatum, XScaleInput, YScaleInput> = {\n formatValue: (value: number) => string\n getColor: OrdinalColorScale<ComputedDatum<RawDatum>>\n getIndex: (datum: RawDatum) => string\n getTooltipLabel: (datum: ComputedDatum<RawDatum>) => string\n innerPadding: number\n stackedData: Series<RawDatum, string>[]\n xScale: XScaleInput extends string ? ScaleBand<XScaleInput> : Scale<XScaleInput, number>\n yScale: YScaleInput extends string ? ScaleBand<YScaleInput> : Scale<YScaleInput, number>\n margin: Margin\n}\n\nconst flattenDeep = <T>(arr: T[]): T =>\n arr.some(Array.isArray) ? flattenDeep(([] as T[]).concat(...arr)) : ((arr as unknown) as T)\n\nconst filterZerosIfLog = (array: number[], type: string) =>\n type === 'log' ? array.filter(num => num !== 0) : array\n\n/**\n * Generates x/y scales & bars for vertical stacked bar chart.\n */\nconst generateVerticalStackedBars = <RawDatum extends Record<string, unknown>>(\n {\n formatValue,\n getColor,\n getIndex,\n getTooltipLabel,\n innerPadding,\n stackedData,\n xScale,\n yScale,\n margin,\n }: Params<RawDatum, string, number>,\n barWidth: number,\n reverse: boolean\n): ComputedBarDatum<RawDatum>[] => {\n const getY = (d: StackDatum<RawDatum>) => yScale(d[reverse ? 0 : 1])\n const getHeight = (d: StackDatum<RawDatum>, y: number) => (yScale(d[reverse ? 1 : 0]) ?? 0) - y\n\n const bars: ComputedBarDatum<RawDatum>[] = []\n stackedData.forEach(stackedDataItem =>\n xScale.domain().forEach((index, i) => {\n const d = stackedDataItem[i]\n const x = xScale(getIndex(d.data)) ?? 0\n const y = (getY(d) ?? 0) + innerPadding * 0.5\n const barHeight = getHeight(d, y) - innerPadding\n const [rawValue, value] = coerceValue(d.data[stackedDataItem.key])\n\n const barData: ComputedDatum<RawDatum> = {\n id: stackedDataItem.key,\n value: rawValue === null ? rawValue : value,\n formattedValue: formatValue(value),\n hidden: false,\n index: i,\n indexValue: index,\n data: filterNullValues(d.data),\n }\n\n bars.push({\n key: `${stackedDataItem.key}.${index}`,\n index: bars.length,\n data: barData,\n x,\n y,\n absX: margin.left + x,\n absY: margin.top + y,\n width: barWidth,\n height: barHeight,\n color: getColor(barData),\n label: getTooltipLabel(barData),\n })\n })\n )\n\n return bars\n}\n\n/**\n * Generates x/y scales & bars for horizontal stacked bar chart.\n */\nconst generateHorizontalStackedBars = <RawDatum extends Record<string, unknown>>(\n {\n formatValue,\n getColor,\n getIndex,\n getTooltipLabel,\n innerPadding,\n stackedData,\n xScale,\n yScale,\n margin,\n }: Params<RawDatum, number, string>,\n barHeight: number,\n reverse: boolean\n): ComputedBarDatum<RawDatum>[] => {\n const getX = (d: StackDatum<RawDatum>) => xScale(d[reverse ? 1 : 0])\n const getWidth = (d: StackDatum<RawDatum>, x: number) => (xScale(d[reverse ? 0 : 1]) ?? 0) - x\n\n const bars: ComputedBarDatum<RawDatum>[] = []\n stackedData.forEach(stackedDataItem =>\n yScale.domain().forEach((index, i) => {\n const d = stackedDataItem[i]\n const y = yScale(getIndex(d.data)) ?? 0\n const x = (getX(d) ?? 0) + innerPadding * 0.5\n const barWidth = getWidth(d, x) - innerPadding\n const [rawValue, value] = coerceValue(d.data[stackedDataItem.key])\n\n const barData: ComputedDatum<RawDatum> = {\n id: stackedDataItem.key,\n value: rawValue === null ? rawValue : value,\n formattedValue: formatValue(value),\n hidden: false,\n index: i,\n indexValue: index,\n data: filterNullValues(d.data),\n }\n\n bars.push({\n key: `${stackedDataItem.key}.${index}`,\n index: bars.length,\n data: barData,\n x,\n y,\n absX: margin.left + x,\n absY: margin.top + y,\n width: barWidth,\n height: barHeight,\n color: getColor(barData),\n label: getTooltipLabel(barData),\n })\n })\n )\n\n return bars\n}\n\n/**\n * Generates x/y scales & bars for stacked bar chart.\n */\nexport const generateStackedBars = <RawDatum extends BarDatum>({\n data,\n layout,\n minValue,\n maxValue,\n reverse,\n width,\n height,\n padding = 0,\n valueScale,\n indexScale: indexScaleConfig,\n hiddenIds = [],\n ...props\n}: Pick<\n Required<BarSvgProps<RawDatum>>,\n | 'data'\n | 'height'\n | 'indexScale'\n | 'innerPadding'\n | 'keys'\n | 'layout'\n | 'maxValue'\n | 'minValue'\n | 'padding'\n | 'reverse'\n | 'valueScale'\n | 'width'\n> & {\n formatValue: (value: number) => string\n getColor: OrdinalColorScale<ComputedDatum<RawDatum>>\n getIndex: (datum: RawDatum) => string\n getTooltipLabel: (datum: ComputedDatum<RawDatum>) => string\n margin: Margin\n hiddenIds?: string[]\n}) => {\n const keys = props.keys.filter(key => !hiddenIds.includes(key))\n const stackedData = stack<RawDatum, string>().keys(keys).offset(stackOffsetDiverging)(\n normalizeData(data, keys)\n )\n\n const [axis, otherAxis, size] =\n layout === 'vertical' ? (['y', 'x', width] as const) : (['x', 'y', height] as const)\n const indexScale = getIndexScale(\n data,\n props.getIndex,\n padding,\n indexScaleConfig,\n size,\n otherAxis\n )\n\n const scaleSpec = {\n max: maxValue,\n min: minValue,\n reverse,\n ...valueScale,\n }\n\n const values = filterZerosIfLog(\n flattenDeep((stackedData as unknown) as number[][]),\n valueScale.type\n )\n const min = Math.min(...values)\n const max = Math.max(...values)\n\n const scale = computeScale(\n scaleSpec as any,\n { all: values, min, max },\n axis === 'x' ? width : height,\n axis\n )\n\n const [xScale, yScale] = layout === 'vertical' ? [indexScale, scale] : [scale, indexScale]\n\n const innerPadding = props.innerPadding > 0 ? props.innerPadding : 0\n const bandwidth = indexScale.bandwidth()\n const params = [\n { ...props, innerPadding, stackedData, xScale, yScale } as Params<RawDatum, any, any>,\n bandwidth,\n scaleSpec.reverse,\n ] as const\n\n const bars: ComputedBarDatum<RawDatum>[] =\n bandwidth > 0\n ? layout === 'vertical'\n ? generateVerticalStackedBars(...params)\n : generateHorizontalStackedBars(...params)\n : []\n\n return { xScale, yScale, bars }\n}\n","import {\n BarDatum,\n BarLegendProps,\n BarSvgProps,\n BarsWithHidden,\n LegendData,\n LegendLabelDatum,\n} from '../types'\nimport { getPropertyAccessor } from '@nivo/core'\nimport { uniqBy } from 'lodash'\n\nexport const getLegendDataForKeys = <RawDatum extends BarDatum>(\n bars: BarsWithHidden<RawDatum>,\n layout: NonNullable<BarSvgProps<RawDatum>['layout']>,\n direction: BarLegendProps['direction'],\n groupMode: NonNullable<BarSvgProps<RawDatum>['groupMode']>,\n reverse: boolean,\n getLegendLabel: (datum: LegendLabelDatum<RawDatum>) => string\n): LegendData[] => {\n const data = uniqBy(\n bars.map(bar => ({\n id: bar.data.id,\n label: getLegendLabel(bar.data),\n hidden: bar.data.hidden,\n color: bar.color ?? '#000',\n })),\n ({ id }) => id\n )\n\n if (\n (layout === 'vertical' &&\n groupMode === 'stacked' &&\n direction === 'column' &&\n reverse !== true) ||\n (layout === 'horizontal' && groupMode === 'stacked' && reverse === true)\n ) {\n data.reverse()\n }\n\n return data\n}\n\nexport const getLegendDataForIndexes = <RawDatum extends BarDatum>(\n bars: BarsWithHidden<RawDatum>,\n layout: NonNullable<BarSvgProps<RawDatum>['layout']>,\n getLegendLabel: (datum: LegendLabelDatum<RawDatum>) => string\n): LegendData[] => {\n const data = uniqBy(\n bars.map(bar => ({\n id: bar.data.indexValue ?? '',\n label: getLegendLabel(bar.data),\n hidden: bar.data.hidden,\n color: bar.color ?? '#000',\n })),\n ({ id }) => id\n )\n\n if (layout === 'horizontal') {\n data.reverse()\n }\n\n return data\n}\n\nexport const getLegendData = <RawDatum extends BarDatum>({\n bars,\n direction,\n from,\n groupMode,\n layout,\n legendLabel,\n reverse,\n}: Pick<Required<BarSvgProps<RawDatum>>, 'layout' | 'groupMode' | 'reverse'> & {\n bars: BarsWithHidden<RawDatum>\n direction: BarLegendProps['direction']\n from: BarLegendProps['dataFrom']\n legendLabel: BarSvgProps<RawDatum>['legendLabel']\n}) => {\n const getLegendLabel = getPropertyAccessor(\n legendLabel ?? (from === 'indexes' ? 'indexValue' : 'id')\n )\n\n if (from === 'indexes') {\n return getLegendDataForIndexes(bars, layout, getLegendLabel)\n }\n\n return getLegendDataForKeys(bars, layout, direction, groupMode, reverse, getLegendLabel)\n}\n","import { Axes, Grid } from '@nivo/axes'\nimport { BarAnnotations } from './BarAnnotations'\nimport { BarDatum, BarLayer, BarLayerId, BarSvgProps, ComputedBarDatumWithValue } from './types'\nimport { BarLegends } from './BarLegends'\nimport {\n CartesianMarkers,\n Container,\n SvgWrapper,\n // @ts-ignore\n bindDefs,\n useDimensions,\n useMotionConfig,\n} from '@nivo/core'\nimport { Fragment, ReactNode, createElement, useMemo } from 'react'\nimport { svgDefaultProps } from './props'\nimport { useTransition } from '@react-spring/web'\nimport { useBar } from './hooks'\n\ntype InnerBarProps<RawDatum extends BarDatum> = Omit<\n BarSvgProps<RawDatum>,\n 'animate' | 'motionConfig' | 'renderWrapper' | 'theme'\n>\n\nconst InnerBar = <RawDatum extends BarDatum>({\n data,\n indexBy,\n keys,\n\n margin: partialMargin,\n width,\n height,\n\n groupMode,\n layout,\n reverse,\n minValue,\n maxValue,\n\n valueScale,\n indexScale,\n\n padding,\n innerPadding,\n\n axisTop,\n axisRight,\n axisBottom = svgDefaultProps.axisBottom,\n axisLeft = svgDefaultProps.axisLeft,\n enableGridX = svgDefaultProps.enableGridX,\n enableGridY = svgDefaultProps.enableGridY,\n gridXValues,\n gridYValues,\n\n layers = svgDefaultProps.layers as BarLayer<RawDatum>[],\n barComponent = svgDefaultProps.barComponent,\n\n enableLabel,\n label,\n labelSkipWidth,\n labelSkipHeight,\n labelTextColor,\n\n markers = svgDefaultProps.markers,\n\n colorBy,\n colors,\n defs = svgDefaultProps.defs,\n fill = svgDefaultProps.fill,\n borderRadius = svgDefaultProps.borderRadius,\n borderWidth = svgDefaultProps.borderWidth,\n borderColor,\n\n annotations = svgDefaultProps.annotations,\n\n legendLabel,\n tooltipLabel,\n\n valueFormat,\n\n isInteractive = svgDefaultProps.isInteractive,\n tooltip = svgDefaultProps.tooltip,\n onClick,\n onMouseEnter,\n onMouseLeave,\n\n legends,\n\n role = svgDefaultProps.role,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n isFocusable = svgDefaultProps.isFocusable,\n barAriaLabel,\n barAriaLabelledBy,\n barAriaDescribedBy,\n\n initialHiddenIds,\n}: InnerBarProps<RawDatum>) => {\n const { animate, config: springConfig } = useMotionConfig()\n const { outerWidth, outerHeight, margin, innerWidth, innerHeight } = useDimensions(\n width,\n height,\n partialMargin\n )\n\n const {\n bars,\n barsWithValue,\n xScale,\n yScale,\n getLabel,\n getTooltipLabel,\n getBorderColor,\n getLabelColor,\n shouldRenderBarLabel,\n toggleSerie,\n legendsWithData,\n } = useBar<RawDatum>({\n indexBy,\n label,\n tooltipLabel,\n valueFormat,\n colors,\n colorBy,\n borderColor,\n labelTextColor,\n groupMode,\n layout,\n reverse,\n data,\n keys,\n minValue,\n maxValue,\n margin,\n width: innerWidth,\n height: innerHeight,\n padding,\n innerPadding,\n valueScale,\n indexScale,\n enableLabel,\n labelSkipWidth,\n labelSkipHeight,\n legends,\n legendLabel,\n initialHiddenIds,\n })\n\n const transition = useTransition<\n ComputedBarDatumWithValue<RawDatum>,\n {\n borderColor: string\n color: string\n height: number\n labelColor: string\n labelOpacity: number\n labelX: number\n labelY: number\n opacity: number\n transform: string\n width: number\n }\n >(barsWithValue, {\n keys: bar => bar.key,\n from: bar => ({\n borderColor: getBorderColor(bar) as string,\n color: bar.color,\n height: 0,\n labelColor: getLabelColor(bar) as string,\n labelOpacity: 0,\n labelX: bar.width / 2,\n labelY: bar.height / 2,\n transform: `translate(${bar.x}, ${bar.y + bar.height})`,\n width: bar.width,\n ...(layout === 'vertical'\n ? {}\n : {\n height: bar.height,\n transform: `translate(${bar.x}, ${bar.y})`,\n width: 0,\n }),\n }),\n enter: bar => ({\n borderColor: getBorderColor(bar) as string,\n color: bar.color,\n height: bar.height,\n labelColor: getLabelColor(bar) as string,\n labelOpacity: 1,\n labelX: bar.width / 2,\n labelY: bar.height / 2,\n transform: `translate(${bar.x}, ${bar.y})`,\n width: bar.width,\n }),\n update: bar => ({\n borderColor: getBorderColor(bar) as string,\n color: bar.color,\n height: bar.height,\n labelColor: getLabelColor(bar) as string,\n labelOpacity: 1,\n labelX: bar.width / 2,\n labelY: bar.height / 2,\n transform: `translate(${bar.x}, ${bar.y})`,\n width: bar.width,\n }),\n leave: bar => ({\n borderColor: getBorderColor(bar) as string,\n color: bar.color,\n height: 0,\n labelColor: getLabelColor(bar) as string,\n labelOpacity: 0,\n labelX: bar.width / 2,\n labelY: 0,\n transform: `translate(${bar.x}, ${bar.y + bar.height})`,\n width: bar.width,\n ...(layout === 'vertical'\n ? {}\n : {\n labelX: 0,\n labelY: bar.height / 2,\n height: bar.height,\n transform: `translate(${bar.x}, ${bar.y})`,\n width: 0,\n }),\n }),\n config: springConfig,\n immediate: !animate,\n })\n\n const commonProps = useMemo(\n () => ({\n borderRadius,\n borderWidth,\n enableLabel,\n isInteractive,\n labelSkipWidth,\n labelSkipHeight,\n onClick,\n onMouseEnter,\n onMouseLeave,\n getTooltipLabel,\n tooltip,\n isFocusable,\n ariaLabel: barAriaLabel,\n ariaLabelledBy: barAriaLabelledBy,\n ariaDescribedBy: barAriaDescribedBy,\n }),\n [\n borderRadius,\n borderWidth,\n enableLabel,\n getTooltipLabel,\n isInteractive,\n labelSkipHeight,\n labelSkipWidth,\n onClick,\n onMouseEnter,\n onMouseLeave,\n tooltip,\n isFocusable,\n barAriaLabel,\n barAriaLabelledBy,\n barAriaDescribedBy,\n ]\n )\n\n const boundDefs = bindDefs(defs, bars, fill, {\n dataKey: 'data',\n targetKey: 'data.fill',\n })\n\n const layerById: Record<BarLayerId, ReactNode> = {\n annotations: null,\n axes: null,\n bars: null,\n grid: null,\n legends: null,\n markers: null,\n }\n\n if (layers.includes('annotations')) {\n layerById.annotations = (\n <BarAnnotations key=\"annotations\" bars={bars} annotations={annotations} />\n )\n }\n\n if (layers.includes('axes')) {\n layerById.axes = (\n <Axes\n key=\"axes\"\n xScale={xScale as any}\n yScale={yScale as any}\n width={innerWidth}\n height={innerHeight}\n top={axisTop}\n right={axisRight}\n bottom={axisBottom}\n left={axisLeft}\n />\n )\n }\n\n if (layers.includes('bars')) {\n layerById.bars = (\n <Fragment key=\"bars\">\n {transition((style, bar) =>\n createElement(barComponent, {\n ...commonProps,\n bar,\n style,\n shouldRenderLabel: shouldRenderBarLabel(bar),\n label: getLabel(bar.data),\n })\n )}\n </Fragment>\n )\n }\n\n if (layers.includes('grid')) {\n layerById.grid = (\n <Grid\n key=\"grid\"\n width={innerWidth}\n height={innerHeight}\n xScale={enableGridX ? (xScale as any) : null}\n yScale={enableGridY ? (yScale as any) : null}\n xValues={gridXValues}\n yValues={gridYValues}\n />\n )\n }\n\n if (layers.includes('legends')) {\n layerById.legends = (\n <BarLegends\n key=\"legends\"\n width={innerWidth}\n height={innerHeight}\n legends={legendsWithData}\n toggleSerie={toggleSerie}\n />\n )\n }\n\n if (layers.includes('markers')) {\n layerById.markers = (\n <CartesianMarkers<number | string, number>\n key=\"markers\"\n markers={markers as any[]}\n width={innerWidth}\n height={innerHeight}\n xScale={xScale as (v: number | string) => number}\n yScale={yScale as (v: number) => number}\n />\n )\n }\n\n // We use `any` here until we can figure out the best way to type xScale/yScale\n const layerContext: any = useMemo(\n () => ({\n ...commonProps,\n margin,\n innerWidth,\n innerHeight,\n width,\n height,\n bars,\n xScale,\n yScale,\n }),\n [commonProps, margin, innerWidth, innerHeight, width, height, bars, xScale, yScale]\n )\n\n return (\n <SvgWrapper\n width={outerWidth}\n height={outerHeight}\n margin={margin}\n defs={boundDefs}\n role={role}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n ariaDescribedBy={ariaDescribedBy}\n isFocusable={isFocusable}\n >\n {layers.map((layer, i) => {\n if (typeof layer === 'function') {\n return <Fragment key={i}>{createElement(layer, layerContext)}</Fragment>\n }\n\n return layerById?.[layer] ?? null\n })}\n </SvgWrapper>\n )\n}\n\nexport const Bar = <RawDatum extends BarDatum>({\n isInteractive = svgDefaultProps.isInteractive,\n animate = svgDefaultProps.animate,\n motionConfig = svgDefaultProps.motionConfig,\n theme,\n renderWrapper,\n ...otherProps\n}: BarSvgProps<RawDatum>) => (\n <Container\n {...{\n animate,\n isInteractive,\n motionConfig,\n renderWrapper,\n theme,\n }}\n >\n <InnerBar<RawDatum> isInteractive={isInteractive} {...otherProps} />\n </Container>\n)\n","import { BarCanvasLayer, BarCanvasProps, BarDatum, ComputedBarDatum } from './types'\nimport {\n Container,\n Margin,\n getRelativeCursor,\n isCursorInRect,\n useDimensions,\n useTheme,\n} from '@nivo/core'\nimport {\n ForwardedRef,\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport { canvasDefaultProps } from './props'\nimport {\n renderAnnotationsToCanvas,\n useAnnotations,\n useComputedAnnotations,\n} from '@nivo/annotations'\nimport { renderAxesToCanvas, renderGridLinesToCanvas } from '@nivo/axes'\nimport { renderLegendToCanvas } from '@nivo/legends'\nimport { useTooltip } from '@nivo/tooltip'\nimport { useBar } from './hooks'\n\ndeclare module 'react' {\n // eslint-disable-next-line @typescript-eslint/ban-types\n function forwardRef<T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => React.ReactElement | null\n ): (props: P & React.RefAttributes<T>) => React.ReactElement | null\n}\n\ntype InnerBarCanvasProps<RawDatum extends BarDatum> = Omit<\n BarCanvasProps<RawDatum>,\n 'renderWrapper' | 'theme'\n> & {\n canvasRef: ForwardedRef<HTMLCanvasElement>\n}\n\nconst findBarUnderCursor = <RawDatum,>(\n nodes: ComputedBarDatum<RawDatum>[],\n margin: Margin,\n x: number,\n y: number\n) =>\n nodes.find(node =>\n isCursorInRect(node.x + margin.left, node.y + margin.top, node.width, node.height, x, y)\n )\n\nconst isNumber = (value: unknown): value is number => typeof value === 'number'\n\nconst InnerBarCanvas = <RawDatum extends BarDatum>({\n data,\n indexBy,\n keys,\n\n margin: partialMargin,\n width,\n height,\n\n groupMode,\n layout,\n reverse,\n minValue,\n maxValue,\n\n valueScale,\n indexScale,\n\n padding,\n innerPadding,\n\n axisTop,\n axisRight,\n axisBottom = canvasDefaultProps.axisBottom,\n axisLeft = canvasDefaultProps.axisLeft,\n enableGridX = canvasDefaultProps.enableGridX,\n enableGridY = canvasDefaultProps.enableGridY,\n gridXValues,\n gridYValues,\n\n layers = canvasDefaultProps.layers as BarCanvasLayer<RawDatum>[],\n renderBar = (\n ctx,\n {\n bar: { color, height, width, x, y },\n\n borderColor,\n borderRadius,\n borderWidth,\n label,\n labelColor,\n shouldRenderLabel,\n }\n ) => {\n ctx.fillStyle = color\n\n if (borderWidth > 0) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderWidth\n }\n\n ctx.beginPath()\n\n if (borderRadius > 0) {\n const radius = Math.min(borderRadius, height)\n\n ctx.moveTo(x + radius, y)\n ctx.lineTo(x + width - radius, y)\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius)\n ctx.lineTo(x + width, y + height - radius)\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height)\n ctx.lineTo(x + radius, y + height)\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius)\n ctx.lineTo(x, y + radius)\n ctx.quadraticCurveTo(x, y, x + radius, y)\n ctx.closePath()\n } else {\n ctx.rect(x, y, width, height)\n }\n\n ctx.fill()\n\n if (borderWidth > 0) {\n ctx.stroke()\n }\n\n if (shouldRenderLabel) {\n ctx.textBaseline = 'middle'\n ctx.textAlign = 'center'\n ctx.fillStyle = labelColor\n ctx.fillText(label, x + width / 2, y + height / 2)\n }\n },\n\n enableLabel,\n label,\n labelSkipWidth,\n labelSkipHeight,\n labelTextColor,\n\n colorBy,\n colors,\n borderRadius = canvasDefaultProps.borderRadius,\n borderWidth = canvasDefaultProps.borderWidth,\n borderColor,\n\n annotations = canvasDefaultProps.annotations,\n\n legendLabel,\n tooltipLabel,\n\n valueFormat,\n\n isInteractive = canvasDefaultProps.isInteractive,\n tooltip = canvasDefaultProps.tooltip,\n onClick,\n onMouseEnter,\n onMouseLeave,\n\n legends,\n\n pixelRatio = canvasDefaultProps.pixelRatio,\n\n canvasRef,\n}: InnerBarCanvasProps<RawDatum>) => {\n const canvasEl = useRef<HTMLCanvasElement | null>(null)\n\n const theme = useTheme()\n const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n width,\n height,\n partialMargin\n )\n\n const {\n bars,\n barsWithValue,\n xScale,\n yScale,\n getLabel,\n getTooltipLabel,\n getBorderColor,\n getLabelColor,\n shouldRenderBarLabel,\n legendsWithData,\n } = useBar<RawDatum>({\n indexBy,\n label,\n tooltipLabel,\n valueFormat,\n colors,\n colorBy,\n borderColor,\n labelTextColor,\n groupMode,\n layout,\n reverse,\n data,\n keys,\n minValue,\n maxValue,\n margin,\n width: innerWidth,\n height: innerHeight,\n padding,\n innerPadding,\n valueScale,\n indexScale,\n enableLabel,\n labelSkipWidth,\n labelSkipHeight,\n legends,\n legendLabel,\n })\n\n const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n // Using any because return type isn't correct\n const boundAnnotations: any = useComputedAnnotations({\n annotations: useAnnotations({\n data: bars,\n annotations,\n getPosition: node => ({\n x: node.x,\n y: node.y,\n }),\n getDimensions: ({ width, height }) => ({\n width,\n height,\n size: Math.max(width, height),\n }),\n }),\n })\n\n // We use `any` here until we can figure out the best way to type xScale/yScale\n const layerContext: any = useMemo(\n () => ({\n borderRadius,\n borderWidth,\n enableLabel,\n isInteractive,\n labelSkipWidth,\n labelSkipHeight,\n onClick,\n onMouseEnter,\n onMouseLeave,\n getTooltipLabel,\n tooltip,\n margin,\n innerWidth,\n innerHeight,\n width,\n height,\n bars,\n xScale,\n yScale,\n }),\n [\n borderRadius,\n borderWidth,\n enableLabel,\n getTooltipLabel,\n height,\n innerHeight,\n innerWidth,\n isInteractive,\n labelSkipHeight,\n labelSkipWidth,\n margin,\n onClick,\n onMouseEnter,\n onMouseLeave,\n bars,\n xScale,\n yScale,\n tooltip,\n width,\n ]\n )\n\n useEffect(() => {\n const ctx = canvasEl.current?.getContext('2d')\n\n if (!canvasEl.current) return\n if (!ctx) return\n\n canvasEl.current.width = outerWidth * pixelRatio\n canvasEl.current.height = outerHeight * pixelRatio\n\n ctx.scale(pixelRatio, pixelRatio)\n\n ctx.fillStyle = theme.background\n ctx.fillRect(0, 0, outerWidth, outerHeight)\n ctx.translate(margin.left, margin.top)\n\n layers.forEach(layer => {\n if (layer === 'grid') {\n if (isNumber(theme.grid.line.strokeWidth) && theme.grid.line.strokeWidth > 0) {\n ctx.lineWidth = theme.grid.line.strokeWidth\n ctx.strokeStyle = theme.grid.line.stroke as string\n\n if (enableGridX) {\n renderGridLinesToCanvas<string | number>(ctx, {\n width,\n height,\n scale: xScale as any,\n axis: 'x',\n values: gridXValues,\n })\n }\n\n if (enableGridY) {\n renderGridLinesToCanvas<string | number>(ctx, {\n width,\n height,\n scale: yScale as any,\n axis: 'y',\n values: gridYValues,\n })\n }\n }\n } else if (layer === 'axes') {\n renderAxesToCanvas(ctx, {\n xScale: xScale as any,\n yScale: yScale as any,\n width: innerWidth,\n height: innerHeight,\n top: axisTop,\n right: axisRight,\n bottom: axisBottom,\n left: axisLeft,\n theme,\n })\n } else if (layer === 'bars') {\n barsWithValue.forEach(bar => {\n renderBar(ctx, {\n bar,\n borderColor: getBorderColor(bar) as string,\n borderRadius,\n borderWidth,\n label: getLabel(bar.data),\n labelColor: getLabelColor(bar) as string,\n shouldRenderLabel: shouldRenderBarLabel(bar),\n })\n })\n } else if (layer === 'legends') {\n legendsWithData.forEach(([legend, data]) => {\n renderLegendToCanvas(ctx, {\n ...legend,\n data,\n containerWidth: innerWidth,\n containerHeight: innerHeight,\n theme,\n })\n })\n } else if (layer === 'annotations') {\n renderAnnotationsToCanvas(ctx, { annotations: boundAnnotations, theme })\n } else if (typeof layer === 'function') {\n layer(ctx, layerContext)\n }\n })\n\n ctx.save()\n }, [\n axisBottom,\n axisLeft,\n axisRight,\n axisTop,\n barsWithValue,\n borderRadius,\n borderWidth,\n boundAnnotations,\n enableGridX,\n enableGridY,\n getBorderColor,\n getLabel,\n getLabelColor,\n gridXValues,\n gridYValues,\n groupMode,\n height,\n innerHeight,\n innerWidth,\n layerContext,\n layers,\n layout,\n legendsWithData,\n margin.left,\n margin.top,\n outerHeight,\n outerWidth,\n pixelRatio,\n renderBar,\n xScale,\n yScale,\n reverse,\n shouldRenderBarLabel,\n theme,\n width,\n ])\n\n const handleMouseHover = useCallback(\n (event: React.MouseEvent<HTMLCanvasElement>) => {\n if (!bars) return\n if (!canvasEl.current) return\n\n const [x, y] = getRelativeCursor(canvasEl.current, event)\n const bar = findBarUnderCursor(bars, margin, x, y)\n\n if (bar !== undefined) {\n showTooltipFromEvent(\n createElement(tooltip, {\n ...bar.data,\n color: bar.color,\n label: bar.label,\n value: Number(bar.data.value),\n }),\n event\n )\n\n if (event.type === 'mouseenter') {\n onMouseEnter?.(bar.data, event)\n }\n } else {\n hideTooltip()\n }\n },\n [hideTooltip, margin, onMouseEnter, bars, showTooltipFromEvent, tooltip]\n )\n\n const handleMouseLeave = useCallback(\n (event: React.MouseEvent<HTMLCanvasElement>) => {\n if (!bars) return\n if (!canvasEl.current) return\n\n hideTooltip()\n\n const [x, y] = getRelativeCursor(canvasEl.current, event)\n const bar = findBarUnderCursor(bars, margin, x, y)\n\n if (bar) {\n onMouseLeave?.(bar.data, event)\n }\n },\n [hideTooltip, margin, onMouseLeave, bars]\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLCanvasElement>) => {\n if (!bars) return\n if (!canvasEl.current) return\n\n const [x, y] = getRelativeCursor(canvasEl.current, event)\n const bar = findBarUnderCursor(bars, margin, x, y)\n\n if (bar !== undefined) {\n onClick?.({ ...bar.data, color: bar.color }, event)\n }\n },\n [margin, onClick, bars]\n )\n\n return (\n <canvas\n ref={canvas => {\n canvasEl.current = canvas\n if (canvasRef && 'current' in canvasRef) canvasRef.current = canvas\n }}\n width={outerWidth * pixelRatio}\n height={outerHeight * pixelRatio}\n style={{\n width: outerWidth,\n height: outerHeight,\n cursor: isInteractive ? 'auto' : 'normal',\n }}\n onMouseEnter={isInteractive ? handleMouseHover : undefined}\n onMouseMove={isInteractive ? handleMouseHover : undefined}\n onMouseLeave={isInteractive ? handleMouseLeave : undefined}\n onClick={isInteractive ? handleClick : undefined}\n />\n )\n}\n\nexport const BarCanvas = forwardRef(\n <RawDatum extends BarDatum>(\n { isInteractive, renderWrapper, theme, ...props }: BarCanvasProps<RawDatum>,\n ref: ForwardedRef<HTMLCanvasElement>\n ) => (\n <Container {...{ isInteractive, renderWrapper, theme }} animate={false}>\n <InnerBarCanvas<RawDatum> {...props} canvasRef={ref} />\n </Container>\n )\n)\n","import { Bar } from './Bar'\nimport { BarDatum, BarSvgProps } from './types'\nimport { ResponsiveWrapper } from '@nivo/core'\n\nexport const ResponsiveBar = <RawDatum extends BarDatum>(\n props: Omit<BarSvgProps<RawDatum>, 'height' | 'width'>\n) => (\n <ResponsiveWrapper>\n {({ width, height }) => <Bar<RawDatum> width={width} height={height} {...props} />}\n </ResponsiveWrapper>\n)\n","import { BarDatum, BarCanvasProps } from './types'\nimport { BarCanvas } from './BarCanvas'\nimport { ForwardedRef, forwardRef } from 'react'\nimport { ResponsiveWrapper } from '@nivo/core'\n\nexport const ResponsiveBarCanvas = forwardRef(function ResponsiveBarCanvas<\n RawDatum extends BarDatum\n>(props: Omit<BarCanvasProps<RawDatum>, 'height' | 'width'>, ref: ForwardedRef<HTMLCanvasElement>) {\n return (\n <ResponsiveWrapper>\n {({ width, height }) => (\n <BarCanvas width={width} height={height} {...props} ref={ref} />\n )}\n </ResponsiveWrapper>\n )\n})\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n\n return result;\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\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}} 'à ' {{time}}\",\n long: \"{{date}} 'à ' {{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;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à ' p\",\n yesterday: \"'hier à ' p\",\n today: \"'aujourd’hui à ' p\",\n tomorrow: \"'demain à ' p'\",\n nextWeek: \"eeee 'prochain à ' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n var options = dirtyOptions || {};\n var unit = String(options.unit);\n var suffix;\n\n if (number === 0) {\n return number;\n }\n\n if (unit === 'year' || unit === 'hour' || unit === 'week') {\n if (number === 1) {\n suffix = 'ère';\n } else {\n suffix = 'ème';\n }\n } else {\n if (number === 1) {\n suffix = 'er';\n } else {\n suffix = 'ème';\n }\n }\n\n return number + suffix;\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 (quarter) {\n return Number(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 })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n code: 'fr',\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;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^t[1234]/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/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, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (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 (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","var 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};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\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;","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};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\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'] // 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\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\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\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 // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `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 (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\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 buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/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 (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 (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;","import toInteger from \"../toInteger/index.js\";\nimport getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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}","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _Motion = require('./Motion');\n\nexports.Motion = _interopRequire(_Motion);\n\nvar _StaggeredMotion = require('./StaggeredMotion');\n\nexports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\nvar _TransitionMotion = require('./TransitionMotion');\n\nexports.TransitionMotion = _interopRequire(_TransitionMotion);\n\nvar _spring = require('./spring');\n\nexports.spring = _interopRequire(_spring);\n\nvar _presets = require('./presets');\n\nexports.presets = _interopRequire(_presets);\n\nvar _stripStyle = require('./stripStyle');\n\nexports.stripStyle = _interopRequire(_stripStyle);\n\n// deprecated, dummy warning function\n\nvar _reorderKeys = require('./reorderKeys');\n\nexports.reorderKeys = _interopRequire(_reorderKeys);","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","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 colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\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","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\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","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 Map = getNative(root, 'Map');\n\nmodule.exports = Map;\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 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 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","/** 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 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 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","/**\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","/**\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","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var 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","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var 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","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","import 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\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 * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","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 baseDifference = require('./_baseDifference'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nmodule.exports = without;\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","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","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","// [[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 noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\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._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.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 = this._x2 =\n this._y0 = this._y1 = this._y2 = 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; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\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","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n value = String(value || '')\n\n if (rtl.test(value)) {\n return 'rtl'\n }\n\n if (ltr.test(value)) {\n return 'ltr'\n }\n\n return 'neutral'\n}\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 baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\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","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 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","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 {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 _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function memoize(fn) {\n var cache = {};\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|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|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|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|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 index = 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 index;\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\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","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var 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)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(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(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : 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 if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n 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 var 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 '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 var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.24.0\"\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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var 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 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 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 * 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 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 root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\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 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","/**\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","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var 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 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 * 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 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","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\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","/** 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","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\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 baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\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","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 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 assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\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 flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\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 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","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 arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require('./lib/axios');","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.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 _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\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\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 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\n // We rehydrate only once and use the sheet that is created first\n if (!this.options.isServer && 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\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 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\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 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 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","//\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","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 baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\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\";\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 {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\";\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\";\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\";\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 { isPlainObject } from 'is-plain-object'\nimport { Operation } from 'slate'\n\n/**\n * `History` objects hold all of the operations that are applied to a value, so\n * they can be undone or redone as necessary.\n */\n\nexport interface History {\n redos: Operation[][]\n undos: Operation[][]\n}\n\nexport const History = {\n /**\n * Check if a value is a `History` object.\n */\n\n isHistory(value: any): value is History {\n return (\n isPlainObject(value) &&\n Array.isArray(value.redos) &&\n Array.isArray(value.undos) &&\n (value.redos.length === 0 || Operation.isOperationList(value.redos[0])) &&\n (value.undos.length === 0 || Operation.isOperationList(value.undos[0]))\n )\n },\n}\n","import { BaseEditor, Editor } from 'slate'\nimport { History } from './history'\n\n/**\n * Weakmaps for attaching state to the editor.\n */\n\nexport const HISTORY = new WeakMap<Editor, History>()\nexport const SAVING = new WeakMap<Editor, boolean | undefined>()\nexport const MERGING = new WeakMap<Editor, boolean | undefined>()\n\n/**\n * `HistoryEditor` contains helpers for history-enabled editors.\n */\n\nexport interface HistoryEditor extends BaseEditor {\n history: History\n undo: () => void\n redo: () => void\n}\n\nexport const HistoryEditor = {\n /**\n * Check if a value is a `HistoryEditor` object.\n */\n\n isHistoryEditor(value: any): value is HistoryEditor {\n return History.isHistory(value.history) && Editor.isEditor(value)\n },\n\n /**\n * Get the merge flag's current value.\n */\n\n isMerging(editor: HistoryEditor): boolean | undefined {\n return MERGING.get(editor)\n },\n\n /**\n * Get the saving flag's current value.\n */\n\n isSaving(editor: HistoryEditor): boolean | undefined {\n return SAVING.get(editor)\n },\n\n /**\n * Redo to the previous saved state.\n */\n\n redo(editor: HistoryEditor): void {\n editor.redo()\n },\n\n /**\n * Undo to the previous saved state.\n */\n\n undo(editor: HistoryEditor): void {\n editor.undo()\n },\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n */\n\n withoutMerging(editor: HistoryEditor, fn: () => void): void {\n const prev = HistoryEditor.isMerging(editor)\n MERGING.set(editor, false)\n fn()\n MERGING.set(editor, prev)\n },\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n */\n\n withoutSaving(editor: HistoryEditor, fn: () => void): void {\n const prev = HistoryEditor.isSaving(editor)\n SAVING.set(editor, false)\n fn()\n SAVING.set(editor, prev)\n },\n}\n","import { Editor, Operation, Path } from 'slate'\n\nimport { HistoryEditor } from './history-editor'\n\n/**\n * The `withHistory` plugin keeps track of the operation history of a Slate\n * editor as operations are applied to it, using undo and redo stacks.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withHistory = <T extends Editor>(editor: T) => {\n const e = editor as T & HistoryEditor\n const { apply } = e\n e.history = { undos: [], redos: [] }\n\n e.redo = () => {\n const { history } = e\n const { redos } = history\n\n if (redos.length > 0) {\n const batch = redos[redos.length - 1]\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n for (const op of batch) {\n e.apply(op)\n }\n })\n })\n\n history.redos.pop()\n history.undos.push(batch)\n }\n }\n\n e.undo = () => {\n const { history } = e\n const { undos } = history\n\n if (undos.length > 0) {\n const batch = undos[undos.length - 1]\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n const inverseOps = batch.map(Operation.inverse).reverse()\n\n for (const op of inverseOps) {\n e.apply(op)\n }\n })\n })\n\n history.redos.push(batch)\n history.undos.pop()\n }\n }\n\n e.apply = (op: Operation) => {\n const { operations, history } = e\n const { undos } = history\n const lastBatch = undos[undos.length - 1]\n const lastOp = lastBatch && lastBatch[lastBatch.length - 1]\n const overwrite = shouldOverwrite(op, lastOp)\n let save = HistoryEditor.isSaving(e)\n let merge = HistoryEditor.isMerging(e)\n\n if (save == null) {\n save = shouldSave(op, lastOp)\n }\n\n if (save) {\n if (merge == null) {\n if (lastBatch == null) {\n merge = false\n } else if (operations.length !== 0) {\n merge = true\n } else {\n merge = shouldMerge(op, lastOp) || overwrite\n }\n }\n\n if (lastBatch && merge) {\n if (overwrite) {\n lastBatch.pop()\n }\n\n lastBatch.push(op)\n } else {\n const batch = [op]\n undos.push(batch)\n }\n\n while (undos.length > 100) {\n undos.shift()\n }\n\n if (shouldClear(op)) {\n history.redos = []\n }\n }\n\n apply(op)\n }\n\n return e\n}\n\n/**\n * Check whether to merge an operation into the previous operation.\n */\n\nconst shouldMerge = (op: Operation, prev: Operation | undefined): boolean => {\n if (op.type === 'set_selection') {\n return true\n }\n\n if (\n prev &&\n op.type === 'insert_text' &&\n prev.type === 'insert_text' &&\n op.offset === prev.offset + prev.text.length &&\n Path.equals(op.path, prev.path)\n ) {\n return true\n }\n\n if (\n prev &&\n op.type === 'remove_text' &&\n prev.type === 'remove_text' &&\n op.offset + op.text.length === prev.offset &&\n Path.equals(op.path, prev.path)\n ) {\n return true\n }\n\n return false\n}\n\n/**\n * Check whether an operation needs to be saved to the history.\n */\n\nconst shouldSave = (op: Operation, prev: Operation | undefined): boolean => {\n if (\n op.type === 'set_selection' &&\n (op.properties == null || op.newProperties == null)\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * Check whether an operation should overwrite the previous one.\n */\n\nconst shouldOverwrite = (\n op: Operation,\n prev: Operation | undefined\n): boolean => {\n if (prev && op.type === 'set_selection' && prev.type === 'set_selection') {\n return true\n }\n\n return false\n}\n\n/**\n * Check whether an operation should clear the redos stack.\n */\n\nconst shouldClear = (op: Operation): boolean => {\n if (op.type === 'set_selection') {\n return false\n }\n\n return true\n}\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","var baseIsDate = require('./_baseIsDate'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nmodule.exports = isDate;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\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 * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=9)}([function(e,t){e.exports=require(\"react\")},function(e,t,r){var n;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if(\"string\"===o||\"number\"===o)e.push(n);else if(Array.isArray(n)&&n.length){var i=a.apply(null,n);i&&e.push(i)}else if(\"object\"===o)for(var u in n)r.call(n,u)&&n[u]&&e.push(u)}}return e.join(\" \")}e.exports?(a.default=a,e.exports=a):void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},function(e,t,r){(function(t){var r=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,u=\"object\"==typeof t&&t&&t.Object===Object&&t,c=\"object\"==typeof self&&self&&self.Object===Object&&self,s=u||c||Function(\"return this\")(),l=Object.prototype.toString,f=s.Symbol,d=f?f.prototype:void 0,p=d?d.toString:void 0;function h(e){if(\"string\"==typeof e)return e;if(y(e))return p?p.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function y(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==l.call(e)}function b(e){return e?(e=function(e){if(\"number\"==typeof e)return e;if(y(e))return NaN;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(r,\"\");var u=a.test(e);return u||o.test(e)?i(e.slice(2),u?2:8):n.test(e)?NaN:+e}(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}e.exports=function(e,t,r){var n,a,o,i;return e=null==(n=e)?\"\":h(n),a=function(e){var t=b(e),r=t%1;return t==t?r?t-r:t:0}(r),o=0,i=e.length,a==a&&(void 0!==i&&(a=a<=i?a:i),void 0!==o&&(a=a>=o?a:o)),r=a,t=h(t),e.slice(r,r+t.length)==t}}).call(this,r(3))},function(e,t){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){(function(t){var r=/^\\[object .+?Constructor\\]$/,n=\"object\"==typeof t&&t&&t.Object===Object&&t,a=\"object\"==typeof self&&self&&self.Object===Object&&self,o=n||a||Function(\"return this\")();var i,u=Array.prototype,c=Function.prototype,s=Object.prototype,l=o[\"__core-js_shared__\"],f=(i=/[^.]+$/.exec(l&&l.keys&&l.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+i:\"\",d=c.toString,p=s.hasOwnProperty,h=s.toString,m=RegExp(\"^\"+d.call(p).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),y=u.splice,b=x(o,\"Map\"),g=x(Object,\"create\");function v(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function C(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function _(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function w(e,t){for(var r,n,a=e.length;a--;)if((r=e[a][0])===(n=t)||r!=r&&n!=n)return a;return-1}function S(e){return!(!O(e)||(t=e,f&&f in t))&&(function(e){var t=O(e)?h.call(e):\"\";return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t}(e)||function(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(e){}return t}(e)?m:r).test(function(e){if(null!=e){try{return d.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}(e));var t}function j(e,t){var r,n,a=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?a[\"string\"==typeof t?\"string\":\"hash\"]:a.map}function x(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return S(r)?r:void 0}function N(e,t){if(\"function\"!=typeof e||t&&\"function\"!=typeof t)throw new TypeError(\"Expected a function\");var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i),i};return r.cache=new(N.Cache||_),r}function O(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}v.prototype.clear=function(){this.__data__=g?g(null):{}},v.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},v.prototype.get=function(e){var t=this.__data__;if(g){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return p.call(t,e)?t[e]:void 0},v.prototype.has=function(e){var t=this.__data__;return g?void 0!==t[e]:p.call(t,e)},v.prototype.set=function(e,t){return this.__data__[e]=g&&void 0===t?\"__lodash_hash_undefined__\":t,this},C.prototype.clear=function(){this.__data__=[]},C.prototype.delete=function(e){var t=this.__data__,r=w(t,e);return!(r<0)&&(r==t.length-1?t.pop():y.call(t,r,1),!0)},C.prototype.get=function(e){var t=this.__data__,r=w(t,e);return r<0?void 0:t[r][1]},C.prototype.has=function(e){return w(this.__data__,e)>-1},C.prototype.set=function(e,t){var r=this.__data__,n=w(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(b||C),string:new v}},_.prototype.delete=function(e){return j(this,e).delete(e)},_.prototype.get=function(e){return j(this,e).get(e)},_.prototype.has=function(e){return j(this,e).has(e)},_.prototype.set=function(e,t){return j(this,e).set(e,t),this},N.Cache=_,e.exports=N}).call(this,r(3))},function(e,t,r){(function(t){var r=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,u=\"object\"==typeof t&&t&&t.Object===Object&&t,c=\"object\"==typeof self&&self&&self.Object===Object&&self,s=u||c||Function(\"return this\")(),l=Object.prototype.toString,f=Math.max,d=Math.min,p=function(){return s.Date.now()};function h(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function m(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==l.call(e)}(e))return NaN;if(h(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=h(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(r,\"\");var u=a.test(e);return u||o.test(e)?i(e.slice(2),u?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var n,a,o,i,u,c,s=0,l=!1,y=!1,b=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function g(t){var r=n,o=a;return n=a=void 0,s=t,i=e.apply(o,r)}function v(e){return s=e,u=setTimeout(_,t),l?g(e):i}function C(e){var r=e-c;return void 0===c||r>=t||r<0||y&&e-s>=o}function _(){var e=p();if(C(e))return w(e);u=setTimeout(_,function(e){var r=t-(e-c);return y?d(r,o-(e-s)):r}(e))}function w(e){return u=void 0,b&&n?g(e):(n=a=void 0,i)}function S(){var e=p(),r=C(e);if(n=arguments,a=this,c=e,r){if(void 0===u)return v(c);if(y)return u=setTimeout(_,t),g(c)}return void 0===u&&(u=setTimeout(_,t)),i}return t=m(t)||0,h(r)&&(l=!!r.leading,o=(y=\"maxWait\"in r)?f(m(r.maxWait)||0,t):o,b=\"trailing\"in r?!!r.trailing:b),S.cancel=function(){void 0!==u&&clearTimeout(u),s=0,n=c=a=u=void 0},S.flush=function(){return void 0===u?i:w(p())},S}}).call(this,r(3))},function(e,t,r){(function(e,r){var n=\"[object Arguments]\",a=\"[object Map]\",o=\"[object Object]\",i=\"[object Set]\",u=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,c=/^\\w*$/,s=/^\\./,l=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,f=/\\\\(\\\\)?/g,d=/^\\[object .+?Constructor\\]$/,p=/^(?:0|[1-9]\\d*)$/,h={};h[\"[object Float32Array]\"]=h[\"[object Float64Array]\"]=h[\"[object Int8Array]\"]=h[\"[object Int16Array]\"]=h[\"[object Int32Array]\"]=h[\"[object Uint8Array]\"]=h[\"[object Uint8ClampedArray]\"]=h[\"[object Uint16Array]\"]=h[\"[object Uint32Array]\"]=!0,h[n]=h[\"[object Array]\"]=h[\"[object ArrayBuffer]\"]=h[\"[object Boolean]\"]=h[\"[object DataView]\"]=h[\"[object Date]\"]=h[\"[object Error]\"]=h[\"[object Function]\"]=h[a]=h[\"[object Number]\"]=h[o]=h[\"[object RegExp]\"]=h[i]=h[\"[object String]\"]=h[\"[object WeakMap]\"]=!1;var m=\"object\"==typeof e&&e&&e.Object===Object&&e,y=\"object\"==typeof self&&self&&self.Object===Object&&self,b=m||y||Function(\"return this\")(),g=t&&!t.nodeType&&t,v=g&&\"object\"==typeof r&&r&&!r.nodeType&&r,C=v&&v.exports===g&&m.process,_=function(){try{return C&&C.binding(\"util\")}catch(e){}}(),w=_&&_.isTypedArray;function S(e,t,r,n){var a=-1,o=e?e.length:0;for(n&&o&&(r=e[++a]);++a<o;)r=t(r,e[a],a,e);return r}function j(e,t){for(var r=-1,n=e?e.length:0;++r<n;)if(t(e[r],r,e))return!0;return!1}function x(e,t,r,n,a){return a(e,(function(e,a,o){r=n?(n=!1,e):t(r,e,a,o)})),r}function N(e){var t=!1;if(null!=e&&\"function\"!=typeof e.toString)try{t=!!(e+\"\")}catch(e){}return t}function O(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}function k(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}var E,T,I,A=Array.prototype,D=Function.prototype,P=Object.prototype,F=b[\"__core-js_shared__\"],M=(E=/[^.]+$/.exec(F&&F.keys&&F.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+E:\"\",R=D.toString,L=P.hasOwnProperty,z=P.toString,B=RegExp(\"^\"+R.call(L).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),G=b.Symbol,$=b.Uint8Array,V=P.propertyIsEnumerable,K=A.splice,U=(T=Object.keys,I=Object,function(e){return T(I(e))}),q=Ne(b,\"DataView\"),H=Ne(b,\"Map\"),W=Ne(b,\"Promise\"),J=Ne(b,\"Set\"),Z=Ne(b,\"WeakMap\"),Q=Ne(Object,\"create\"),Y=Pe(q),X=Pe(H),ee=Pe(W),te=Pe(J),re=Pe(Z),ne=G?G.prototype:void 0,ae=ne?ne.valueOf:void 0,oe=ne?ne.toString:void 0;function ie(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ue(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ce(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function se(e){var t=-1,r=e?e.length:0;for(this.__data__=new ce;++t<r;)this.add(e[t])}function le(e){this.__data__=new ue(e)}function fe(e,t){var r=Le(e)||Re(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,a=!!n;for(var o in e)!t&&!L.call(e,o)||a&&(\"length\"==o||ke(o,n))||r.push(o);return r}function de(e,t){for(var r=e.length;r--;)if(Me(e[r][0],t))return r;return-1}ie.prototype.clear=function(){this.__data__=Q?Q(null):{}},ie.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},ie.prototype.get=function(e){var t=this.__data__;if(Q){var r=t[e];return\"__lodash_hash_undefined__\"===r?void 0:r}return L.call(t,e)?t[e]:void 0},ie.prototype.has=function(e){var t=this.__data__;return Q?void 0!==t[e]:L.call(t,e)},ie.prototype.set=function(e,t){return this.__data__[e]=Q&&void 0===t?\"__lodash_hash_undefined__\":t,this},ue.prototype.clear=function(){this.__data__=[]},ue.prototype.delete=function(e){var t=this.__data__,r=de(t,e);return!(r<0)&&(r==t.length-1?t.pop():K.call(t,r,1),!0)},ue.prototype.get=function(e){var t=this.__data__,r=de(t,e);return r<0?void 0:t[r][1]},ue.prototype.has=function(e){return de(this.__data__,e)>-1},ue.prototype.set=function(e,t){var r=this.__data__,n=de(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},ce.prototype.clear=function(){this.__data__={hash:new ie,map:new(H||ue),string:new ie}},ce.prototype.delete=function(e){return xe(this,e).delete(e)},ce.prototype.get=function(e){return xe(this,e).get(e)},ce.prototype.has=function(e){return xe(this,e).has(e)},ce.prototype.set=function(e,t){return xe(this,e).set(e,t),this},se.prototype.add=se.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},se.prototype.has=function(e){return this.__data__.has(e)},le.prototype.clear=function(){this.__data__=new ue},le.prototype.delete=function(e){return this.__data__.delete(e)},le.prototype.get=function(e){return this.__data__.get(e)},le.prototype.has=function(e){return this.__data__.has(e)},le.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ue){var n=r.__data__;if(!H||n.length<199)return n.push([e,t]),this;r=this.__data__=new ce(n)}return r.set(e,t),this};var pe,he,me=(pe=function(e,t){return e&&ye(e,t,qe)},function(e,t){if(null==e)return e;if(!ze(e))return pe(e,t);for(var r=e.length,n=he?r:-1,a=Object(e);(he?n--:++n<r)&&!1!==t(a[n],n,a););return e}),ye=function(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++a];if(!1===r(o[c],c,o))break}return t}}();function be(e,t){for(var r=0,n=(t=Ee(t,e)?[t]:Se(t)).length;null!=e&&r<n;)e=e[De(t[r++])];return r&&r==n?e:void 0}function ge(e,t){return null!=e&&t in Object(e)}function ve(e,t,r,u,c){return e===t||(null==e||null==t||!$e(e)&&!Ve(t)?e!=e&&t!=t:function(e,t,r,u,c,s){var l=Le(e),f=Le(t),d=\"[object Array]\",p=\"[object Array]\";l||(d=(d=Oe(e))==n?o:d);f||(p=(p=Oe(t))==n?o:p);var h=d==o&&!N(e),m=p==o&&!N(t),y=d==p;if(y&&!h)return s||(s=new le),l||Ue(e)?je(e,t,r,u,c,s):function(e,t,r,n,o,u,c){switch(r){case\"[object DataView]\":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case\"[object ArrayBuffer]\":return!(e.byteLength!=t.byteLength||!n(new $(e),new $(t)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return Me(+e,+t);case\"[object Error]\":return e.name==t.name&&e.message==t.message;case\"[object RegExp]\":case\"[object String]\":return e==t+\"\";case a:var s=O;case i:var l=2&u;if(s||(s=k),e.size!=t.size&&!l)return!1;var f=c.get(e);if(f)return f==t;u|=1,c.set(e,t);var d=je(s(e),s(t),n,o,u,c);return c.delete(e),d;case\"[object Symbol]\":if(ae)return ae.call(e)==ae.call(t)}return!1}(e,t,d,r,u,c,s);if(!(2&c)){var b=h&&L.call(e,\"__wrapped__\"),g=m&&L.call(t,\"__wrapped__\");if(b||g){var v=b?e.value():e,C=g?t.value():t;return s||(s=new le),r(v,C,u,c,s)}}if(!y)return!1;return s||(s=new le),function(e,t,r,n,a,o){var i=2&a,u=qe(e),c=u.length,s=qe(t).length;if(c!=s&&!i)return!1;var l=c;for(;l--;){var f=u[l];if(!(i?f in t:L.call(t,f)))return!1}var d=o.get(e);if(d&&o.get(t))return d==t;var p=!0;o.set(e,t),o.set(t,e);var h=i;for(;++l<c;){f=u[l];var m=e[f],y=t[f];if(n)var b=i?n(y,m,f,t,e,o):n(m,y,f,e,t,o);if(!(void 0===b?m===y||r(m,y,n,a,o):b)){p=!1;break}h||(h=\"constructor\"==f)}if(p&&!h){var g=e.constructor,v=t.constructor;g==v||!(\"constructor\"in e)||!(\"constructor\"in t)||\"function\"==typeof g&&g instanceof g&&\"function\"==typeof v&&v instanceof v||(p=!1)}return o.delete(e),o.delete(t),p}(e,t,r,u,c,s)}(e,t,ve,r,u,c))}function Ce(e){return!(!$e(e)||function(e){return!!M&&M in e}(e))&&(Be(e)||N(e)?B:d).test(Pe(e))}function _e(e){return\"function\"==typeof e?e:null==e?He:\"object\"==typeof e?Le(e)?function(e,t){if(Ee(e)&&Te(t))return Ie(De(e),t);return function(r){var n=function(e,t,r){var n=null==e?void 0:be(e,t);return void 0===n?r:n}(r,e);return void 0===n&&n===t?function(e,t){return null!=e&&function(e,t,r){t=Ee(t,e)?[t]:Se(t);var n,a=-1,o=t.length;for(;++a<o;){var i=De(t[a]);if(!(n=null!=e&&r(e,i)))break;e=e[i]}if(n)return n;return!!(o=e?e.length:0)&&Ge(o)&&ke(i,o)&&(Le(e)||Re(e))}(e,t,ge)}(r,e):ve(t,n,void 0,3)}}(e[0],e[1]):function(e){var t=function(e){var t=qe(e),r=t.length;for(;r--;){var n=t[r],a=e[n];t[r]=[n,a,Te(a)]}return t}(e);if(1==t.length&&t[0][2])return Ie(t[0][0],t[0][1]);return function(r){return r===e||function(e,t,r,n){var a=r.length,o=a,i=!n;if(null==e)return!o;for(e=Object(e);a--;){var u=r[a];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a<o;){var c=(u=r[a])[0],s=e[c],l=u[1];if(i&&u[2]){if(void 0===s&&!(c in e))return!1}else{var f=new le;if(n)var d=n(s,l,c,e,t,f);if(!(void 0===d?ve(l,s,n,3,f):d))return!1}}return!0}(r,e,t)}}(e):Ee(t=e)?(r=De(t),function(e){return null==e?void 0:e[r]}):function(e){return function(t){return be(t,e)}}(t);var t,r}function we(e){if(r=(t=e)&&t.constructor,n=\"function\"==typeof r&&r.prototype||P,t!==n)return U(e);var t,r,n,a=[];for(var o in Object(e))L.call(e,o)&&\"constructor\"!=o&&a.push(o);return a}function Se(e){return Le(e)?e:Ae(e)}function je(e,t,r,n,a,o){var i=2&a,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var s=o.get(e);if(s&&o.get(t))return s==t;var l=-1,f=!0,d=1&a?new se:void 0;for(o.set(e,t),o.set(t,e);++l<u;){var p=e[l],h=t[l];if(n)var m=i?n(h,p,l,t,e,o):n(p,h,l,e,t,o);if(void 0!==m){if(m)continue;f=!1;break}if(d){if(!j(t,(function(e,t){if(!d.has(t)&&(p===e||r(p,e,n,a,o)))return d.add(t)}))){f=!1;break}}else if(p!==h&&!r(p,h,n,a,o)){f=!1;break}}return o.delete(e),o.delete(t),f}function xe(e,t){var r,n,a=e.__data__;return(\"string\"==(n=typeof(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?a[\"string\"==typeof t?\"string\":\"hash\"]:a.map}function Ne(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return Ce(r)?r:void 0}var Oe=function(e){return z.call(e)};function ke(e,t){return!!(t=null==t?9007199254740991:t)&&(\"number\"==typeof e||p.test(e))&&e>-1&&e%1==0&&e<t}function Ee(e,t){if(Le(e))return!1;var r=typeof e;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=e&&!Ke(e))||(c.test(e)||!u.test(e)||null!=t&&e in Object(t))}function Te(e){return e==e&&!$e(e)}function Ie(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}(q&&\"[object DataView]\"!=Oe(new q(new ArrayBuffer(1)))||H&&Oe(new H)!=a||W&&\"[object Promise]\"!=Oe(W.resolve())||J&&Oe(new J)!=i||Z&&\"[object WeakMap]\"!=Oe(new Z))&&(Oe=function(e){var t=z.call(e),r=t==o?e.constructor:void 0,n=r?Pe(r):void 0;if(n)switch(n){case Y:return\"[object DataView]\";case X:return a;case ee:return\"[object Promise]\";case te:return i;case re:return\"[object WeakMap]\"}return t});var Ae=Fe((function(e){var t;e=null==(t=e)?\"\":function(e){if(\"string\"==typeof e)return e;if(Ke(e))return oe?oe.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}(t);var r=[];return s.test(e)&&r.push(\"\"),e.replace(l,(function(e,t,n,a){r.push(n?a.replace(f,\"$1\"):t||e)})),r}));function De(e){if(\"string\"==typeof e||Ke(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}function Pe(e){if(null!=e){try{return R.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}function Fe(e,t){if(\"function\"!=typeof e||t&&\"function\"!=typeof t)throw new TypeError(\"Expected a function\");var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i),i};return r.cache=new(Fe.Cache||ce),r}function Me(e,t){return e===t||e!=e&&t!=t}function Re(e){return function(e){return Ve(e)&&ze(e)}(e)&&L.call(e,\"callee\")&&(!V.call(e,\"callee\")||z.call(e)==n)}Fe.Cache=ce;var Le=Array.isArray;function ze(e){return null!=e&&Ge(e.length)&&!Be(e)}function Be(e){var t=$e(e)?z.call(e):\"\";return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t}function Ge(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function $e(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function Ve(e){return!!e&&\"object\"==typeof e}function Ke(e){return\"symbol\"==typeof e||Ve(e)&&\"[object Symbol]\"==z.call(e)}var Ue=w?function(e){return function(t){return e(t)}}(w):function(e){return Ve(e)&&Ge(e.length)&&!!h[z.call(e)]};function qe(e){return ze(e)?fe(e):we(e)}function He(e){return e}r.exports=function(e,t,r){var n=Le(e)?S:x,a=arguments.length<3;return n(e,_e(t),r,a,me)}}).call(this,r(3),r(7)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){String.prototype.padEnd||(String.prototype.padEnd=function(e,t){return e>>=0,t=String(void 0!==t?t:\" \"),this.length>e?String(this):((e-=this.length)>t.length&&(t+=t.repeat(e/t.length)),String(this)+t.slice(0,e))})},function(e,t,r){\"use strict\";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}function o(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||a(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function i(e){if(Array.isArray(e))return e}function u(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}function c(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function l(e){return(l=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function f(e){return(f=\"function\"==typeof Symbol&&\"symbol\"===l(Symbol.iterator)?function(e){return l(e)}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":l(e)})(e)}function d(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}r.r(t);var m=r(0),y=r.n(m),b=r(5),g=r.n(b),v=r(4),C=r.n(v),_=r(6),w=r.n(_),S=r(2),j=r.n(S),x=r(1),N=r.n(x);r(8);function O(e,t){return i(e)||function(e,t){var r=[],n=!0,a=!1,o=void 0;try{for(var i,u=e[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==u.return||u.return()}finally{if(a)throw o}}return r}(e,t)||u()}var k=[[\"Afghanistan\",[\"asia\"],\"af\",\"93\"],[\"Albania\",[\"europe\"],\"al\",\"355\"],[\"Algeria\",[\"africa\",\"north-africa\"],\"dz\",\"213\"],[\"Andorra\",[\"europe\"],\"ad\",\"376\"],[\"Angola\",[\"africa\"],\"ao\",\"244\"],[\"Antigua and Barbuda\",[\"america\",\"carribean\"],\"ag\",\"1268\"],[\"Argentina\",[\"america\",\"south-america\"],\"ar\",\"54\",\"(..) ........\",0,[\"11\",\"221\",\"223\",\"261\",\"264\",\"2652\",\"280\",\"2905\",\"291\",\"2920\",\"2966\",\"299\",\"341\",\"342\",\"343\",\"351\",\"376\",\"379\",\"381\",\"3833\",\"385\",\"387\",\"388\"]],[\"Armenia\",[\"asia\",\"ex-ussr\"],\"am\",\"374\",\".. ......\"],[\"Aruba\",[\"america\",\"carribean\"],\"aw\",\"297\"],[\"Australia\",[\"oceania\"],\"au\",\"61\",\"(..) .... ....\",0,[\"2\",\"3\",\"4\",\"7\",\"8\",\"02\",\"03\",\"04\",\"07\",\"08\"]],[\"Austria\",[\"europe\",\"eu-union\"],\"at\",\"43\"],[\"Azerbaijan\",[\"asia\",\"ex-ussr\"],\"az\",\"994\",\"(..) ... .. ..\"],[\"Bahamas\",[\"america\",\"carribean\"],\"bs\",\"1242\"],[\"Bahrain\",[\"middle-east\"],\"bh\",\"973\"],[\"Bangladesh\",[\"asia\"],\"bd\",\"880\"],[\"Barbados\",[\"america\",\"carribean\"],\"bb\",\"1246\"],[\"Belarus\",[\"europe\",\"ex-ussr\"],\"by\",\"375\",\"(..) ... .. ..\"],[\"Belgium\",[\"europe\",\"eu-union\"],\"be\",\"32\",\"... .. .. ..\"],[\"Belize\",[\"america\",\"central-america\"],\"bz\",\"501\"],[\"Benin\",[\"africa\"],\"bj\",\"229\"],[\"Bhutan\",[\"asia\"],\"bt\",\"975\"],[\"Bolivia\",[\"america\",\"south-america\"],\"bo\",\"591\"],[\"Bosnia and Herzegovina\",[\"europe\",\"ex-yugos\"],\"ba\",\"387\"],[\"Botswana\",[\"africa\"],\"bw\",\"267\"],[\"Brazil\",[\"america\",\"south-america\"],\"br\",\"55\",\"(..) .........\"],[\"British Indian Ocean Territory\",[\"asia\"],\"io\",\"246\"],[\"Brunei\",[\"asia\"],\"bn\",\"673\"],[\"Bulgaria\",[\"europe\",\"eu-union\"],\"bg\",\"359\"],[\"Burkina Faso\",[\"africa\"],\"bf\",\"226\"],[\"Burundi\",[\"africa\"],\"bi\",\"257\"],[\"Cambodia\",[\"asia\"],\"kh\",\"855\"],[\"Cameroon\",[\"africa\"],\"cm\",\"237\"],[\"Canada\",[\"america\",\"north-america\"],\"ca\",\"1\",\"(...) ...-....\",1,[\"204\",\"226\",\"236\",\"249\",\"250\",\"289\",\"306\",\"343\",\"365\",\"387\",\"403\",\"416\",\"418\",\"431\",\"437\",\"438\",\"450\",\"506\",\"514\",\"519\",\"548\",\"579\",\"581\",\"587\",\"604\",\"613\",\"639\",\"647\",\"672\",\"705\",\"709\",\"742\",\"778\",\"780\",\"782\",\"807\",\"819\",\"825\",\"867\",\"873\",\"902\",\"905\"]],[\"Cape Verde\",[\"africa\"],\"cv\",\"238\"],[\"Caribbean Netherlands\",[\"america\",\"carribean\"],\"bq\",\"599\",\"\",1],[\"Central African Republic\",[\"africa\"],\"cf\",\"236\"],[\"Chad\",[\"africa\"],\"td\",\"235\"],[\"Chile\",[\"america\",\"south-america\"],\"cl\",\"56\"],[\"China\",[\"asia\"],\"cn\",\"86\",\"..-.........\"],[\"Colombia\",[\"america\",\"south-america\"],\"co\",\"57\",\"... ... ....\"],[\"Comoros\",[\"africa\"],\"km\",\"269\"],[\"Congo\",[\"africa\"],\"cd\",\"243\"],[\"Congo\",[\"africa\"],\"cg\",\"242\"],[\"Costa Rica\",[\"america\",\"central-america\"],\"cr\",\"506\",\"....-....\"],[\"Côte d’Ivoire\",[\"africa\"],\"ci\",\"225\",\".. .. .. ..\"],[\"Croatia\",[\"europe\",\"eu-union\",\"ex-yugos\"],\"hr\",\"385\"],[\"Cuba\",[\"america\",\"carribean\"],\"cu\",\"53\"],[\"Curaçao\",[\"america\",\"carribean\"],\"cw\",\"599\",\"\",0],[\"Cyprus\",[\"europe\",\"eu-union\"],\"cy\",\"357\",\".. ......\"],[\"Czech Republic\",[\"europe\",\"eu-union\"],\"cz\",\"420\",\"... ... ...\"],[\"Denmark\",[\"europe\",\"eu-union\",\"baltic\"],\"dk\",\"45\",\".. .. .. ..\"],[\"Djibouti\",[\"africa\"],\"dj\",\"253\"],[\"Dominica\",[\"america\",\"carribean\"],\"dm\",\"1767\"],[\"Dominican Republic\",[\"america\",\"carribean\"],\"do\",\"1\",\"\",2,[\"809\",\"829\",\"849\"]],[\"Ecuador\",[\"america\",\"south-america\"],\"ec\",\"593\"],[\"Egypt\",[\"africa\",\"north-africa\"],\"eg\",\"20\"],[\"El Salvador\",[\"america\",\"central-america\"],\"sv\",\"503\",\"....-....\"],[\"Equatorial Guinea\",[\"africa\"],\"gq\",\"240\"],[\"Eritrea\",[\"africa\"],\"er\",\"291\"],[\"Estonia\",[\"europe\",\"eu-union\",\"ex-ussr\",\"baltic\"],\"ee\",\"372\",\".... ......\"],[\"Ethiopia\",[\"africa\"],\"et\",\"251\"],[\"Fiji\",[\"oceania\"],\"fj\",\"679\"],[\"Finland\",[\"europe\",\"eu-union\",\"baltic\"],\"fi\",\"358\",\".. ... .. ..\"],[\"France\",[\"europe\",\"eu-union\"],\"fr\",\"33\",\". .. .. .. ..\"],[\"French Guiana\",[\"america\",\"south-america\"],\"gf\",\"594\"],[\"French Polynesia\",[\"oceania\"],\"pf\",\"689\"],[\"Gabon\",[\"africa\"],\"ga\",\"241\"],[\"Gambia\",[\"africa\"],\"gm\",\"220\"],[\"Georgia\",[\"asia\",\"ex-ussr\"],\"ge\",\"995\"],[\"Germany\",[\"europe\",\"eu-union\",\"baltic\"],\"de\",\"49\",\".... ........\"],[\"Ghana\",[\"africa\"],\"gh\",\"233\"],[\"Greece\",[\"europe\",\"eu-union\"],\"gr\",\"30\"],[\"Grenada\",[\"america\",\"carribean\"],\"gd\",\"1473\"],[\"Guadeloupe\",[\"america\",\"carribean\"],\"gp\",\"590\",\"\",0],[\"Guam\",[\"oceania\"],\"gu\",\"1671\"],[\"Guatemala\",[\"america\",\"central-america\"],\"gt\",\"502\",\"....-....\"],[\"Guinea\",[\"africa\"],\"gn\",\"224\"],[\"Guinea-Bissau\",[\"africa\"],\"gw\",\"245\"],[\"Guyana\",[\"america\",\"south-america\"],\"gy\",\"592\"],[\"Haiti\",[\"america\",\"carribean\"],\"ht\",\"509\",\"....-....\"],[\"Honduras\",[\"america\",\"central-america\"],\"hn\",\"504\"],[\"Hong Kong\",[\"asia\"],\"hk\",\"852\",\".... ....\"],[\"Hungary\",[\"europe\",\"eu-union\"],\"hu\",\"36\"],[\"Iceland\",[\"europe\"],\"is\",\"354\",\"... ....\"],[\"India\",[\"asia\"],\"in\",\"91\",\".....-.....\"],[\"Indonesia\",[\"asia\"],\"id\",\"62\"],[\"Iran\",[\"middle-east\"],\"ir\",\"98\",\"... ... ....\"],[\"Iraq\",[\"middle-east\"],\"iq\",\"964\"],[\"Ireland\",[\"europe\",\"eu-union\"],\"ie\",\"353\",\".. .......\"],[\"Israel\",[\"middle-east\"],\"il\",\"972\",\"... ... ....\"],[\"Italy\",[\"europe\",\"eu-union\"],\"it\",\"39\",\"... .......\",0],[\"Jamaica\",[\"america\",\"carribean\"],\"jm\",\"1876\"],[\"Japan\",[\"asia\"],\"jp\",\"81\",\".. .... ....\"],[\"Jordan\",[\"middle-east\"],\"jo\",\"962\"],[\"Kazakhstan\",[\"asia\",\"ex-ussr\"],\"kz\",\"7\",\"... ...-..-..\",1,[\"310\",\"311\",\"312\",\"313\",\"315\",\"318\",\"321\",\"324\",\"325\",\"326\",\"327\",\"336\",\"7172\",\"73622\"]],[\"Kenya\",[\"africa\"],\"ke\",\"254\"],[\"Kiribati\",[\"oceania\"],\"ki\",\"686\"],[\"Kosovo\",[\"europe\",\"ex-yugos\"],\"xk\",\"383\"],[\"Kuwait\",[\"middle-east\"],\"kw\",\"965\"],[\"Kyrgyzstan\",[\"asia\",\"ex-ussr\"],\"kg\",\"996\",\"... ... ...\"],[\"Laos\",[\"asia\"],\"la\",\"856\"],[\"Latvia\",[\"europe\",\"eu-union\",\"ex-ussr\",\"baltic\"],\"lv\",\"371\",\".. ... ...\"],[\"Lebanon\",[\"middle-east\"],\"lb\",\"961\"],[\"Lesotho\",[\"africa\"],\"ls\",\"266\"],[\"Liberia\",[\"africa\"],\"lr\",\"231\"],[\"Libya\",[\"africa\",\"north-africa\"],\"ly\",\"218\"],[\"Liechtenstein\",[\"europe\"],\"li\",\"423\"],[\"Lithuania\",[\"europe\",\"eu-union\",\"ex-ussr\",\"baltic\"],\"lt\",\"370\"],[\"Luxembourg\",[\"europe\",\"eu-union\"],\"lu\",\"352\"],[\"Macau\",[\"asia\"],\"mo\",\"853\"],[\"Macedonia\",[\"europe\",\"ex-yugos\"],\"mk\",\"389\"],[\"Madagascar\",[\"africa\"],\"mg\",\"261\"],[\"Malawi\",[\"africa\"],\"mw\",\"265\"],[\"Malaysia\",[\"asia\"],\"my\",\"60\",\"..-....-....\"],[\"Maldives\",[\"asia\"],\"mv\",\"960\"],[\"Mali\",[\"africa\"],\"ml\",\"223\"],[\"Malta\",[\"europe\",\"eu-union\"],\"mt\",\"356\"],[\"Marshall Islands\",[\"oceania\"],\"mh\",\"692\"],[\"Martinique\",[\"america\",\"carribean\"],\"mq\",\"596\"],[\"Mauritania\",[\"africa\"],\"mr\",\"222\"],[\"Mauritius\",[\"africa\"],\"mu\",\"230\"],[\"Mexico\",[\"america\",\"central-america\"],\"mx\",\"52\",\"... ... ....\",0,[\"55\",\"81\",\"33\",\"656\",\"664\",\"998\",\"774\",\"229\"]],[\"Micronesia\",[\"oceania\"],\"fm\",\"691\"],[\"Moldova\",[\"europe\"],\"md\",\"373\",\"(..) ..-..-..\"],[\"Monaco\",[\"europe\"],\"mc\",\"377\"],[\"Mongolia\",[\"asia\"],\"mn\",\"976\"],[\"Montenegro\",[\"europe\",\"ex-yugos\"],\"me\",\"382\"],[\"Morocco\",[\"africa\",\"north-africa\"],\"ma\",\"212\"],[\"Mozambique\",[\"africa\"],\"mz\",\"258\"],[\"Myanmar\",[\"asia\"],\"mm\",\"95\"],[\"Namibia\",[\"africa\"],\"na\",\"264\"],[\"Nauru\",[\"africa\"],\"nr\",\"674\"],[\"Nepal\",[\"asia\"],\"np\",\"977\"],[\"Netherlands\",[\"europe\",\"eu-union\"],\"nl\",\"31\",\".. ........\"],[\"New Caledonia\",[\"oceania\"],\"nc\",\"687\"],[\"New Zealand\",[\"oceania\"],\"nz\",\"64\",\"...-...-....\"],[\"Nicaragua\",[\"america\",\"central-america\"],\"ni\",\"505\"],[\"Niger\",[\"africa\"],\"ne\",\"227\"],[\"Nigeria\",[\"africa\"],\"ng\",\"234\"],[\"North Korea\",[\"asia\"],\"kp\",\"850\"],[\"Norway\",[\"europe\",\"baltic\"],\"no\",\"47\",\"... .. ...\"],[\"Oman\",[\"middle-east\"],\"om\",\"968\"],[\"Pakistan\",[\"asia\"],\"pk\",\"92\",\"...-.......\"],[\"Palau\",[\"oceania\"],\"pw\",\"680\"],[\"Palestine\",[\"middle-east\"],\"ps\",\"970\"],[\"Panama\",[\"america\",\"central-america\"],\"pa\",\"507\"],[\"Papua New Guinea\",[\"oceania\"],\"pg\",\"675\"],[\"Paraguay\",[\"america\",\"south-america\"],\"py\",\"595\"],[\"Peru\",[\"america\",\"south-america\"],\"pe\",\"51\"],[\"Philippines\",[\"asia\"],\"ph\",\"63\",\".... .......\"],[\"Poland\",[\"europe\",\"eu-union\",\"baltic\"],\"pl\",\"48\",\"...-...-...\"],[\"Portugal\",[\"europe\",\"eu-union\"],\"pt\",\"351\"],[\"Puerto Rico\",[\"america\",\"carribean\"],\"pr\",\"1\",\"\",3,[\"787\",\"939\"]],[\"Qatar\",[\"middle-east\"],\"qa\",\"974\"],[\"Réunion\",[\"africa\"],\"re\",\"262\"],[\"Romania\",[\"europe\",\"eu-union\"],\"ro\",\"40\"],[\"Russia\",[\"europe\",\"asia\",\"ex-ussr\",\"baltic\"],\"ru\",\"7\",\"(...) ...-..-..\",0],[\"Rwanda\",[\"africa\"],\"rw\",\"250\"],[\"Saint Kitts and Nevis\",[\"america\",\"carribean\"],\"kn\",\"1869\"],[\"Saint Lucia\",[\"america\",\"carribean\"],\"lc\",\"1758\"],[\"Saint Vincent and the Grenadines\",[\"america\",\"carribean\"],\"vc\",\"1784\"],[\"Samoa\",[\"oceania\"],\"ws\",\"685\"],[\"San Marino\",[\"europe\"],\"sm\",\"378\"],[\"São Tomé and PrÃncipe\",[\"africa\"],\"st\",\"239\"],[\"Saudi Arabia\",[\"middle-east\"],\"sa\",\"966\"],[\"Senegal\",[\"africa\"],\"sn\",\"221\"],[\"Serbia\",[\"europe\",\"ex-yugos\"],\"rs\",\"381\"],[\"Seychelles\",[\"africa\"],\"sc\",\"248\"],[\"Sierra Leone\",[\"africa\"],\"sl\",\"232\"],[\"Singapore\",[\"asia\"],\"sg\",\"65\",\"....-....\"],[\"Slovakia\",[\"europe\",\"eu-union\"],\"sk\",\"421\"],[\"Slovenia\",[\"europe\",\"eu-union\",\"ex-yugos\"],\"si\",\"386\"],[\"Solomon Islands\",[\"oceania\"],\"sb\",\"677\"],[\"Somalia\",[\"africa\"],\"so\",\"252\"],[\"South Africa\",[\"africa\"],\"za\",\"27\"],[\"South Korea\",[\"asia\"],\"kr\",\"82\",\"... .... ....\"],[\"South Sudan\",[\"africa\",\"north-africa\"],\"ss\",\"211\"],[\"Spain\",[\"europe\",\"eu-union\"],\"es\",\"34\",\"... ... ...\"],[\"Sri Lanka\",[\"asia\"],\"lk\",\"94\"],[\"Sudan\",[\"africa\"],\"sd\",\"249\"],[\"Suriname\",[\"america\",\"south-america\"],\"sr\",\"597\"],[\"Swaziland\",[\"africa\"],\"sz\",\"268\"],[\"Sweden\",[\"europe\",\"eu-union\",\"baltic\"],\"se\",\"46\",\"(...) ...-...\"],[\"Switzerland\",[\"europe\"],\"ch\",\"41\",\".. ... .. ..\"],[\"Syria\",[\"middle-east\"],\"sy\",\"963\"],[\"Taiwan\",[\"asia\"],\"tw\",\"886\"],[\"Tajikistan\",[\"asia\",\"ex-ussr\"],\"tj\",\"992\"],[\"Tanzania\",[\"africa\"],\"tz\",\"255\"],[\"Thailand\",[\"asia\"],\"th\",\"66\"],[\"Timor-Leste\",[\"asia\"],\"tl\",\"670\"],[\"Togo\",[\"africa\"],\"tg\",\"228\"],[\"Tonga\",[\"oceania\"],\"to\",\"676\"],[\"Trinidad and Tobago\",[\"america\",\"carribean\"],\"tt\",\"1868\"],[\"Tunisia\",[\"africa\",\"north-africa\"],\"tn\",\"216\"],[\"Turkey\",[\"europe\"],\"tr\",\"90\",\"... ... .. ..\"],[\"Turkmenistan\",[\"asia\",\"ex-ussr\"],\"tm\",\"993\"],[\"Tuvalu\",[\"asia\"],\"tv\",\"688\"],[\"Uganda\",[\"africa\"],\"ug\",\"256\"],[\"Ukraine\",[\"europe\",\"ex-ussr\"],\"ua\",\"380\",\"(..) ... .. ..\"],[\"United Arab Emirates\",[\"middle-east\"],\"ae\",\"971\"],[\"United Kingdom\",[\"europe\",\"eu-union\"],\"gb\",\"44\",\".... ......\"],[\"United States\",[\"america\",\"north-america\"],\"us\",\"1\",\"(...) ...-....\",0,[\"907\",\"205\",\"251\",\"256\",\"334\",\"479\",\"501\",\"870\",\"480\",\"520\",\"602\",\"623\",\"928\",\"209\",\"213\",\"310\",\"323\",\"408\",\"415\",\"510\",\"530\",\"559\",\"562\",\"619\",\"626\",\"650\",\"661\",\"707\",\"714\",\"760\",\"805\",\"818\",\"831\",\"858\",\"909\",\"916\",\"925\",\"949\",\"951\",\"303\",\"719\",\"970\",\"203\",\"860\",\"202\",\"302\",\"239\",\"305\",\"321\",\"352\",\"386\",\"407\",\"561\",\"727\",\"772\",\"813\",\"850\",\"863\",\"904\",\"941\",\"954\",\"229\",\"404\",\"478\",\"706\",\"770\",\"912\",\"808\",\"319\",\"515\",\"563\",\"641\",\"712\",\"208\",\"217\",\"309\",\"312\",\"618\",\"630\",\"708\",\"773\",\"815\",\"847\",\"219\",\"260\",\"317\",\"574\",\"765\",\"812\",\"316\",\"620\",\"785\",\"913\",\"270\",\"502\",\"606\",\"859\",\"225\",\"318\",\"337\",\"504\",\"985\",\"413\",\"508\",\"617\",\"781\",\"978\",\"301\",\"410\",\"207\",\"231\",\"248\",\"269\",\"313\",\"517\",\"586\",\"616\",\"734\",\"810\",\"906\",\"989\",\"218\",\"320\",\"507\",\"612\",\"651\",\"763\",\"952\",\"314\",\"417\",\"573\",\"636\",\"660\",\"816\",\"228\",\"601\",\"662\",\"406\",\"252\",\"336\",\"704\",\"828\",\"910\",\"919\",\"701\",\"308\",\"402\",\"603\",\"201\",\"609\",\"732\",\"856\",\"908\",\"973\",\"505\",\"575\",\"702\",\"775\",\"212\",\"315\",\"516\",\"518\",\"585\",\"607\",\"631\",\"716\",\"718\",\"845\",\"914\",\"216\",\"330\",\"419\",\"440\",\"513\",\"614\",\"740\",\"937\",\"405\",\"580\",\"918\",\"503\",\"541\",\"215\",\"412\",\"570\",\"610\",\"717\",\"724\",\"814\",\"401\",\"803\",\"843\",\"864\",\"605\",\"423\",\"615\",\"731\",\"865\",\"901\",\"931\",\"210\",\"214\",\"254\",\"281\",\"325\",\"361\",\"409\",\"432\",\"512\",\"713\",\"806\",\"817\",\"830\",\"903\",\"915\",\"936\",\"940\",\"956\",\"972\",\"979\",\"435\",\"801\",\"276\",\"434\",\"540\",\"703\",\"757\",\"804\",\"802\",\"206\",\"253\",\"360\",\"425\",\"509\",\"262\",\"414\",\"608\",\"715\",\"920\",\"304\",\"307\"]],[\"Uruguay\",[\"america\",\"south-america\"],\"uy\",\"598\"],[\"Uzbekistan\",[\"asia\",\"ex-ussr\"],\"uz\",\"998\",\".. ... .. ..\"],[\"Vanuatu\",[\"oceania\"],\"vu\",\"678\"],[\"Vatican City\",[\"europe\"],\"va\",\"39\",\".. .... ....\",1],[\"Venezuela\",[\"america\",\"south-america\"],\"ve\",\"58\"],[\"Vietnam\",[\"asia\"],\"vn\",\"84\"],[\"Yemen\",[\"middle-east\"],\"ye\",\"967\"],[\"Zambia\",[\"africa\"],\"zm\",\"260\"],[\"Zimbabwe\",[\"africa\"],\"zw\",\"263\"]],E=[[\"American Samoa\",[\"oceania\"],\"as\",\"1684\"],[\"Anguilla\",[\"america\",\"carribean\"],\"ai\",\"1264\"],[\"Bermuda\",[\"america\",\"north-america\"],\"bm\",\"1441\"],[\"British Virgin Islands\",[\"america\",\"carribean\"],\"vg\",\"1284\"],[\"Cayman Islands\",[\"america\",\"carribean\"],\"ky\",\"1345\"],[\"Cook Islands\",[\"oceania\"],\"ck\",\"682\"],[\"Falkland Islands\",[\"america\",\"south-america\"],\"fk\",\"500\"],[\"Faroe Islands\",[\"europe\"],\"fo\",\"298\"],[\"Gibraltar\",[\"europe\"],\"gi\",\"350\"],[\"Greenland\",[\"america\"],\"gl\",\"299\"],[\"Jersey\",[\"europe\",\"eu-union\"],\"je\",\"44\",\".... ......\"],[\"Montserrat\",[\"america\",\"carribean\"],\"ms\",\"1664\"],[\"Niue\",[\"asia\"],\"nu\",\"683\"],[\"Norfolk Island\",[\"oceania\"],\"nf\",\"672\"],[\"Northern Mariana Islands\",[\"oceania\"],\"mp\",\"1670\"],[\"Saint Barthélemy\",[\"america\",\"carribean\"],\"bl\",\"590\",\"\",1],[\"Saint Helena\",[\"africa\"],\"sh\",\"290\"],[\"Saint Martin\",[\"america\",\"carribean\"],\"mf\",\"590\",\"\",2],[\"Saint Pierre and Miquelon\",[\"america\",\"north-america\"],\"pm\",\"508\"],[\"Sint Maarten\",[\"america\",\"carribean\"],\"sx\",\"1721\"],[\"Tokelau\",[\"oceania\"],\"tk\",\"690\"],[\"Turks and Caicos Islands\",[\"america\",\"carribean\"],\"tc\",\"1649\"],[\"U.S. Virgin Islands\",[\"america\",\"carribean\"],\"vi\",\"1340\"],[\"Wallis and Futuna\",[\"oceania\"],\"wf\",\"681\"]];function T(e,t,r,n,a){return!r||a?e+\"\".padEnd(t.length,\".\")+\" \"+n:e+\"\".padEnd(t.length,\".\")+\" \"+r}function I(e,t,r,a,i){var u,c,s=[];return c=!0===t,[(u=[]).concat.apply(u,o(e.map((function(e){var o={name:e[0],regions:e[1],iso2:e[2],countryCode:e[3],dialCode:e[3],format:T(r,e[3],e[4],a,i),priority:e[5]||0},u=[];return e[6]&&e[6].map((function(t){var r=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},a=Object.keys(r);\"function\"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),a.forEach((function(t){n(e,t,r[t])}))}return e}({},o);r.dialCode=e[3]+t,r.isAreaCode=!0,r.areaCodeLength=t.length,u.push(r)})),u.length>0?(o.mainCode=!0,c||\"Array\"===t.constructor.name&&t.includes(e[2])?(o.hasAreaCodes=!0,[o].concat(u)):(s=s.concat(u),[o])):[o]})))),s]}function A(e,t,r,n){if(null!==r){var a=Object.keys(r),o=Object.values(r);a.forEach((function(r,a){if(n)return e.push([r,o[a]]);var i=e.findIndex((function(e){return e[0]===r}));if(-1===i){var u=[r];u[t]=o[a],e.push(u)}else e[i][t]=o[a]}))}}function D(e,t){return 0===t.length?e:e.map((function(e){var r=t.findIndex((function(t){return t[0]===e[2]}));if(-1===r)return e;var n=t[r];return n[1]&&(e[4]=n[1]),n[3]&&(e[5]=n[3]),n[2]&&(e[6]=n[2]),e}))}var P=function e(t,r,n,a,i,u,s,l,f,d,p,h,m,y){c(this,e),this.filterRegions=function(e,t){if(\"string\"==typeof e){var r=e;return t.filter((function(e){return e.regions.some((function(e){return e===r}))}))}return t.filter((function(t){return e.map((function(e){return t.regions.some((function(t){return t===e}))})).some((function(e){return e}))}))},this.sortTerritories=function(e,t){var r=[].concat(o(e),o(t));return r.sort((function(e,t){return e.name<t.name?-1:e.name>t.name?1:0})),r},this.getFilteredCountryList=function(e,t,r){return 0===e.length?t:r?e.map((function(e){var r=t.find((function(t){return t.iso2===e}));if(r)return r})).filter((function(e){return e})):t.filter((function(t){return e.some((function(e){return e===t.iso2}))}))},this.localizeCountries=function(e,t,r){for(var n=0;n<e.length;n++)void 0!==t[e[n].iso2]?e[n].localName=t[e[n].iso2]:void 0!==t[e[n].name]&&(e[n].localName=t[e[n].name]);return r||e.sort((function(e,t){return e.localName<t.localName?-1:e.localName>t.localName?1:0})),e},this.getCustomAreas=function(e,t){for(var r=[],n=0;n<t.length;n++){var a=JSON.parse(JSON.stringify(e));a.dialCode+=t[n],r.push(a)}return r},this.excludeCountries=function(e,t){return 0===t.length?e:e.filter((function(e){return!t.includes(e.iso2)}))};var b=function(e,t,r){var n=[];return A(n,1,e,!0),A(n,3,t),A(n,2,r),n}(l,f,d),g=D(JSON.parse(JSON.stringify(k)),b),v=D(JSON.parse(JSON.stringify(E)),b),C=O(I(g,t,h,m,y),2),_=C[0],w=C[1];if(r){var S=O(I(v,t,h,m,y),2),j=S[0];S[1];_=this.sortTerritories(j,_)}n&&(_=this.filterRegions(n,_)),this.onlyCountries=this.localizeCountries(this.excludeCountries(this.getFilteredCountryList(a,_,s.includes(\"onlyCountries\")),u),p,s.includes(\"onlyCountries\")),this.preferredCountries=0===i.length?[]:this.localizeCountries(this.getFilteredCountryList(i,_,s.includes(\"preferredCountries\")),p,s.includes(\"preferredCountries\")),this.hiddenAreaCodes=this.excludeCountries(this.getFilteredCountryList(a,w),u)},F=function(e){function t(e){var r;c(this,t),(r=function(e,t){return!t||\"object\"!==f(t)&&\"function\"!=typeof t?d(e):t}(this,p(t).call(this,e))).getProbableCandidate=C()((function(e){return e&&0!==e.length?r.state.onlyCountries.filter((function(t){return j()(t.name.toLowerCase(),e.toLowerCase())}),d(d(r)))[0]:null})),r.guessSelectedCountry=C()((function(e,t,n,a){var o;if(!1===r.props.enableAreaCodes&&(a.some((function(t){if(j()(e,t.dialCode))return n.some((function(e){if(t.iso2===e.iso2&&e.mainCode)return o=e,!0})),!0})),o))return o;var i=n.find((function(e){return e.iso2==t}));if(\"\"===e.trim())return i;var u=n.reduce((function(t,r){if(j()(e,r.dialCode)){if(r.dialCode.length>t.dialCode.length)return r;if(r.dialCode.length===t.dialCode.length&&r.priority<t.priority)return r}return t}),{dialCode:\"\",priority:10001},d(d(r)));return u.name?u:i})),r.updateCountry=function(e){var t,n=r.state.onlyCountries;(t=e.indexOf(0)>=\"0\"&&e.indexOf(0)<=\"9\"?n.find((function(t){return t.dialCode==+e})):n.find((function(t){return t.iso2==e})))&&t.dialCode&&r.setState({selectedCountry:t,formattedNumber:r.props.disableCountryCode?\"\":r.formatNumber(t.dialCode,t)})},r.scrollTo=function(e,t){if(e){var n=r.dropdownRef;if(n&&document.body){var a=n.offsetHeight,o=n.getBoundingClientRect().top+document.body.scrollTop,i=o+a,u=e,c=u.getBoundingClientRect(),s=u.offsetHeight,l=c.top+document.body.scrollTop,f=l+s,d=l-o+n.scrollTop,p=a/2-s/2;if(r.props.enableSearch?l<o+32:l<o)t&&(d-=p),n.scrollTop=d;else if(f>i){t&&(d+=p);var h=a-s;n.scrollTop=d-h}}}},r.scrollToTop=function(){var e=r.dropdownRef;e&&document.body&&(e.scrollTop=0)},r.formatNumber=function(e,t){if(!t)return e;var n,o=t.format,c=r.props,s=c.disableCountryCode,l=c.enableAreaCodeStretch,f=c.enableLongNumbers,d=c.autoFormat;if(s?((n=o.split(\" \")).shift(),n=n.join(\" \")):l&&t.isAreaCode?((n=o.split(\" \"))[1]=n[1].replace(/\\.+/,\"\".padEnd(t.areaCodeLength,\".\")),n=n.join(\" \")):n=o,!e||0===e.length)return s?\"\":r.props.prefix;if(e&&e.length<2||!n||!d)return s?e:r.props.prefix+e;var p,h=w()(n,(function(e,t){if(0===e.remainingText.length)return e;if(\".\"!==t)return{formattedText:e.formattedText+t,remainingText:e.remainingText};var r,n=i(r=e.remainingText)||a(r)||u(),o=n[0],c=n.slice(1);return{formattedText:e.formattedText+o,remainingText:c}}),{formattedText:\"\",remainingText:e.split(\"\")});return(p=f?h.formattedText+h.remainingText.join(\"\"):h.formattedText).includes(\"(\")&&!p.includes(\")\")&&(p+=\")\"),p},r.cursorToEnd=function(){var e=r.numberInputRef;if(document.activeElement===e){e.focus();var t=e.value.length;\")\"===e.value.charAt(t-1)&&(t-=1),e.setSelectionRange(t,t)}},r.getElement=function(e){return r[\"flag_no_\".concat(e)]},r.getCountryData=function(){return r.state.selectedCountry?{name:r.state.selectedCountry.name||\"\",dialCode:r.state.selectedCountry.dialCode||\"\",countryCode:r.state.selectedCountry.iso2||\"\",format:r.state.selectedCountry.format||\"\"}:{}},r.handleFlagDropdownClick=function(e){if(e.preventDefault(),r.state.showDropdown||!r.props.disabled){var t=r.state,n=t.preferredCountries,a=t.onlyCountries,o=t.selectedCountry,i=r.concatPreferredCountries(n,a).findIndex((function(e){return e.dialCode===o.dialCode&&e.iso2===o.iso2}));r.setState({showDropdown:!r.state.showDropdown,highlightCountryIndex:i},(function(){r.state.showDropdown&&r.scrollTo(r.getElement(r.state.highlightCountryIndex))}))}},r.handleInput=function(e){var t=e.target.value,n=r.props,a=n.prefix,o=n.onChange,i=r.props.disableCountryCode?\"\":a,u=r.state.selectedCountry,c=r.state.freezeSelection;if(!r.props.countryCodeEditable){var s=a+(u.hasAreaCodes?r.state.onlyCountries.find((function(e){return e.iso2===u.iso2&&e.mainCode})).dialCode:u.dialCode);if(t.slice(0,s.length)!==s)return}if(t===a)return o&&o(\"\",r.getCountryData(),e,\"\"),r.setState({formattedNumber:\"\"});if(t.replace(/\\D/g,\"\").length>15){if(!1===r.props.enableLongNumbers)return;if(\"number\"==typeof r.props.enableLongNumbers&&t.replace(/\\D/g,\"\").length>r.props.enableLongNumbers)return}if(t!==r.state.formattedNumber){e.preventDefault?e.preventDefault():e.returnValue=!1;var l=r.props.country,f=r.state,d=f.onlyCountries,p=f.selectedCountry,h=f.hiddenAreaCodes;if(o&&e.persist(),t.length>0){var m=t.replace(/\\D/g,\"\");(!r.state.freezeSelection||p&&p.dialCode.length>m.length)&&(u=r.props.disableCountryGuess?p:r.guessSelectedCountry(m.substring(0,6),l,d,h)||p,c=!1),i=r.formatNumber(m,u),u=u.dialCode?u:p}var y=e.target.selectionStart,b=e.target.selectionStart,g=r.state.formattedNumber,v=i.length-g.length;r.setState({formattedNumber:i,freezeSelection:c,selectedCountry:u},(function(){v>0&&(b-=v),\")\"==i.charAt(i.length-1)?r.numberInputRef.setSelectionRange(i.length-1,i.length-1):b>0&&g.length>=i.length?r.numberInputRef.setSelectionRange(b,b):y<g.length&&r.numberInputRef.setSelectionRange(y,y),o&&o(i.replace(/[^0-9]+/g,\"\"),r.getCountryData(),e,i)}))}},r.handleInputClick=function(e){r.setState({showDropdown:!1}),r.props.onClick&&r.props.onClick(e,r.getCountryData())},r.handleDoubleClick=function(e){var t=e.target.value.length;e.target.setSelectionRange(0,t)},r.handleFlagItemClick=function(e,t){var n=r.state.selectedCountry,a=r.state.onlyCountries.find((function(t){return t==e}));if(a){var o=r.state.formattedNumber.replace(\" \",\"\").replace(\"(\",\"\").replace(\")\",\"\").replace(\"-\",\"\"),i=o.length>1?o.replace(n.dialCode,a.dialCode):a.dialCode,u=r.formatNumber(i.replace(/\\D/g,\"\"),a);r.setState({showDropdown:!1,selectedCountry:a,freezeSelection:!0,formattedNumber:u,searchValue:\"\"},(function(){r.cursorToEnd(),r.props.onChange&&r.props.onChange(u.replace(/[^0-9]+/g,\"\"),r.getCountryData(),t,u)}))}},r.handleInputFocus=function(e){r.numberInputRef&&r.numberInputRef.value===r.props.prefix&&r.state.selectedCountry&&!r.props.disableCountryCode&&r.setState({formattedNumber:r.props.prefix+r.state.selectedCountry.dialCode},(function(){r.props.jumpCursorToEnd&&setTimeout(r.cursorToEnd,0)})),r.setState({placeholder:\"\"}),r.props.onFocus&&r.props.onFocus(e,r.getCountryData()),r.props.jumpCursorToEnd&&setTimeout(r.cursorToEnd,0)},r.handleInputBlur=function(e){e.target.value||r.setState({placeholder:r.props.placeholder}),r.props.onBlur&&r.props.onBlur(e,r.getCountryData())},r.handleInputCopy=function(e){if(r.props.copyNumbersOnly){var t=window.getSelection().toString().replace(/[^0-9]+/g,\"\");e.clipboardData.setData(\"text/plain\",t),e.preventDefault()}},r.getHighlightCountryIndex=function(e){var t=r.state.highlightCountryIndex+e;return t<0||t>=r.state.onlyCountries.length+r.state.preferredCountries.length?t-e:r.props.enableSearch&&t>r.getSearchFilteredCountries().length?0:t},r.searchCountry=function(){var e=r.getProbableCandidate(r.state.queryString)||r.state.onlyCountries[0],t=r.state.onlyCountries.findIndex((function(t){return t==e}))+r.state.preferredCountries.length;r.scrollTo(r.getElement(t),!0),r.setState({queryString:\"\",highlightCountryIndex:t})},r.handleKeydown=function(e){var t=r.props.keys,n=e.target.className;if(n.includes(\"selected-flag\")&&e.which===t.ENTER&&!r.state.showDropdown)return r.handleFlagDropdownClick(e);if(n.includes(\"form-control\")&&(e.which===t.ENTER||e.which===t.ESC))return e.target.blur();if(r.state.showDropdown&&!r.props.disabled&&(!n.includes(\"search-box\")||e.which===t.UP||e.which===t.DOWN||e.which===t.ENTER||e.which===t.ESC&&\"\"===e.target.value)){e.preventDefault?e.preventDefault():e.returnValue=!1;var a=function(e){r.setState({highlightCountryIndex:r.getHighlightCountryIndex(e)},(function(){r.scrollTo(r.getElement(r.state.highlightCountryIndex),!0)}))};switch(e.which){case t.DOWN:a(1);break;case t.UP:a(-1);break;case t.ENTER:r.props.enableSearch?r.handleFlagItemClick(r.getSearchFilteredCountries()[r.state.highlightCountryIndex]||r.getSearchFilteredCountries()[0],e):r.handleFlagItemClick([].concat(o(r.state.preferredCountries),o(r.state.onlyCountries))[r.state.highlightCountryIndex],e);break;case t.ESC:case t.TAB:r.setState({showDropdown:!1},r.cursorToEnd);break;default:(e.which>=t.A&&e.which<=t.Z||e.which===t.SPACE)&&r.setState({queryString:r.state.queryString+String.fromCharCode(e.which)},r.state.debouncedQueryStingSearcher)}}},r.handleInputKeyDown=function(e){var t=r.props,n=t.keys,a=t.onEnterKeyPress,o=t.onKeyDown;e.which===n.ENTER&&a&&a(e),o&&o(e)},r.handleClickOutside=function(e){r.dropdownRef&&!r.dropdownContainerRef.contains(e.target)&&r.state.showDropdown&&r.setState({showDropdown:!1})},r.handleSearchChange=function(e){var t=e.currentTarget.value,n=r.state,a=n.preferredCountries,o=n.selectedCountry,i=0;if(\"\"===t&&o){var u=r.state.onlyCountries;i=r.concatPreferredCountries(a,u).findIndex((function(e){return e==o})),setTimeout((function(){return r.scrollTo(r.getElement(i))}),100)}r.setState({searchValue:t,highlightCountryIndex:i})},r.concatPreferredCountries=function(e,t){return e.length>0?o(new Set(e.concat(t))):t},r.getDropdownCountryName=function(e){return e.localName||e.name},r.getSearchFilteredCountries=function(){var e=r.state,t=e.preferredCountries,n=e.onlyCountries,a=e.searchValue,i=r.props.enableSearch,u=r.concatPreferredCountries(t,n),c=a.trim().toLowerCase().replace(\"+\",\"\");if(i&&c){if(/^\\d+$/.test(c))return u.filter((function(e){var t=e.dialCode;return[\"\".concat(t)].some((function(e){return e.toLowerCase().includes(c)}))}));var s=u.filter((function(e){var t=e.iso2;return[\"\".concat(t)].some((function(e){return e.toLowerCase().includes(c)}))})),l=u.filter((function(e){var t=e.name,r=e.localName;e.iso2;return[\"\".concat(t),\"\".concat(r||\"\")].some((function(e){return e.toLowerCase().includes(c)}))}));return r.scrollToTop(),o(new Set([].concat(s,l)))}return u},r.getCountryDropdownList=function(){var e=r.state,t=e.preferredCountries,a=e.highlightCountryIndex,o=e.showDropdown,i=e.searchValue,u=r.props,c=u.disableDropdown,s=u.prefix,l=r.props,f=l.enableSearch,d=l.searchNotFound,p=l.disableSearchIcon,h=l.searchClass,m=l.searchStyle,b=l.searchPlaceholder,g=l.autocompleteSearch,v=r.getSearchFilteredCountries().map((function(e,t){var n=a===t,o=N()({country:!0,preferred:\"us\"===e.iso2||\"gb\"===e.iso2,active:\"us\"===e.iso2,highlight:n}),i=\"flag \".concat(e.iso2);return y.a.createElement(\"li\",Object.assign({ref:function(e){return r[\"flag_no_\".concat(t)]=e},key:\"flag_no_\".concat(t),\"data-flag-key\":\"flag_no_\".concat(t),className:o,\"data-dial-code\":\"1\",tabIndex:c?\"-1\":\"0\",\"data-country-code\":e.iso2,onClick:function(t){return r.handleFlagItemClick(e,t)},role:\"option\"},n?{\"aria-selected\":!0}:{}),y.a.createElement(\"div\",{className:i}),y.a.createElement(\"span\",{className:\"country-name\"},r.getDropdownCountryName(e)),y.a.createElement(\"span\",{className:\"dial-code\"},e.format?r.formatNumber(e.dialCode,e):s+e.dialCode))})),C=y.a.createElement(\"li\",{key:\"dashes\",className:\"divider\"});t.length>0&&(!f||f&&!i.trim())&&v.splice(t.length,0,C);var _=N()(n({\"country-list\":!0,hide:!o},r.props.dropdownClass,!0));return y.a.createElement(\"ul\",{ref:function(e){return!f&&e&&e.focus(),r.dropdownRef=e},className:_,style:r.props.dropdownStyle,role:\"listbox\",tabIndex:\"0\"},f&&y.a.createElement(\"li\",{className:N()(n({search:!0},h,h))},!p&&y.a.createElement(\"span\",{className:N()(n({\"search-emoji\":!0},\"\".concat(h,\"-emoji\"),h)),role:\"img\",\"aria-label\":\"Magnifying glass\"},\"🔎\"),y.a.createElement(\"input\",{className:N()(n({\"search-box\":!0},\"\".concat(h,\"-box\"),h)),style:m,type:\"search\",placeholder:b,autoFocus:!0,autoComplete:g?\"on\":\"off\",value:i,onChange:r.handleSearchChange})),v.length>0?v:y.a.createElement(\"li\",{className:\"no-entries-message\"},y.a.createElement(\"span\",null,d)))};var s,l=new P(e.enableAreaCodes,e.enableTerritories,e.regions,e.onlyCountries,e.preferredCountries,e.excludeCountries,e.preserveOrder,e.masks,e.priority,e.areaCodes,e.localization,e.prefix,e.defaultMask,e.alwaysDefaultMask),h=l.onlyCountries,m=l.preferredCountries,b=l.hiddenAreaCodes,v=e.value?e.value.replace(/\\D/g,\"\"):\"\";s=e.disableInitialCountryGuess?0:v.length>1?r.guessSelectedCountry(v.substring(0,6),e.country,h,b)||0:e.country&&h.find((function(t){return t.iso2==e.country}))||0;var _,S=v.length<2&&s&&!j()(v,s.dialCode)?s.dialCode:\"\";_=\"\"===v&&0===s?\"\":r.formatNumber((e.disableCountryCode?\"\":S)+v,s.name?s:void 0);var x=h.findIndex((function(e){return e==s}));return r.state={showDropdown:e.showDropdown,formattedNumber:_,onlyCountries:h,preferredCountries:m,hiddenAreaCodes:b,selectedCountry:s,highlightCountryIndex:x,queryString:\"\",freezeSelection:!1,debouncedQueryStingSearcher:g()(r.searchCountry,250),searchValue:\"\"},r}var r,l,m;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(t,e),r=t,(l=[{key:\"componentDidMount\",value:function(){document.addEventListener&&this.props.enableClickOutside&&document.addEventListener(\"mousedown\",this.handleClickOutside),this.props.onMount&&this.props.onMount(this.state.formattedNumber.replace(/[^0-9]+/g,\"\"),this.getCountryData(),this.state.formattedNumber)}},{key:\"componentWillUnmount\",value:function(){document.removeEventListener&&this.props.enableClickOutside&&document.removeEventListener(\"mousedown\",this.handleClickOutside)}},{key:\"componentDidUpdate\",value:function(e,t,r){e.country!==this.props.country?this.updateCountry(this.props.country):e.value!==this.props.value&&this.updateFormattedNumber(this.props.value)}},{key:\"updateFormattedNumber\",value:function(e){if(null===e)return this.setState({selectedCountry:0,formattedNumber:\"\"});var t=this.state,r=t.onlyCountries,n=t.selectedCountry,a=t.hiddenAreaCodes,o=this.props,i=o.country,u=o.prefix;if(\"\"===e)return this.setState({selectedCountry:n,formattedNumber:\"\"});var c,s,l=e.replace(/\\D/g,\"\");if(n&&j()(e,u+n.dialCode))s=this.formatNumber(l,n),this.setState({formattedNumber:s});else{var f=(c=this.props.disableCountryGuess?n:this.guessSelectedCountry(l.substring(0,6),i,r,a)||n)&&j()(l,u+c.dialCode)?c.dialCode:\"\";s=this.formatNumber((this.props.disableCountryCode?\"\":f)+l,c||void 0),this.setState({selectedCountry:c,formattedNumber:s})}}},{key:\"render\",value:function(){var e,t,r,a=this,o=this.state,i=o.onlyCountries,u=o.selectedCountry,c=o.showDropdown,s=o.formattedNumber,l=o.hiddenAreaCodes,f=this.props,d=f.disableDropdown,p=f.renderStringAsFlag,h=f.isValid,m=f.defaultErrorMessage,b=f.specialLabel;if(\"boolean\"==typeof h)t=h;else{var g=h(s.replace(/\\D/g,\"\"),u,i,l);\"boolean\"==typeof g?!1===(t=g)&&(r=m):(t=!1,r=g)}var v=N()((n(e={},this.props.containerClass,!0),n(e,\"react-tel-input\",!0),e)),C=N()({arrow:!0,up:c}),_=N()(n({\"form-control\":!0,\"invalid-number\":!t,open:c},this.props.inputClass,!0)),w=N()({\"selected-flag\":!0,open:c}),S=N()(n({\"flag-dropdown\":!0,\"invalid-number\":!t,open:c},this.props.buttonClass,!0)),j=\"flag \".concat(u&&u.iso2);return y.a.createElement(\"div\",{className:\"\".concat(v,\" \").concat(this.props.className),style:this.props.style||this.props.containerStyle,onKeyDown:this.handleKeydown},b&&y.a.createElement(\"div\",{className:\"special-label\"},b),r&&y.a.createElement(\"div\",{className:\"invalid-number-message\"},r),y.a.createElement(\"input\",Object.assign({className:_,style:this.props.inputStyle,onChange:this.handleInput,onClick:this.handleInputClick,onDoubleClick:this.handleDoubleClick,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onCopy:this.handleInputCopy,value:s,onKeyDown:this.handleInputKeyDown,placeholder:this.props.placeholder,disabled:this.props.disabled,type:\"tel\"},this.props.inputProps,{ref:function(e){a.numberInputRef=e,\"function\"==typeof a.props.inputProps.ref?a.props.inputProps.ref(e):\"object\"==typeof a.props.inputProps.ref&&(a.props.inputProps.ref.current=e)}})),y.a.createElement(\"div\",{className:S,style:this.props.buttonStyle,ref:function(e){return a.dropdownContainerRef=e}},p?y.a.createElement(\"div\",{className:w},p):y.a.createElement(\"div\",{onClick:d?void 0:this.handleFlagDropdownClick,className:w,title:u?\"\".concat(u.localName||u.name,\": + \").concat(u.dialCode):\"\",tabIndex:d?\"-1\":\"0\",role:\"button\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":!!c||void 0},y.a.createElement(\"div\",{className:j},!d&&y.a.createElement(\"div\",{className:C}))),c&&this.getCountryDropdownList()))}}])&&s(r.prototype,l),m&&s(r,m),t}(y.a.Component);F.defaultProps={country:\"\",value:\"\",onlyCountries:[],preferredCountries:[],excludeCountries:[],placeholder:\"1 (702) 123-4567\",searchPlaceholder:\"search\",searchNotFound:\"No entries to show\",flagsImagePath:\"./flags.png\",disabled:!1,containerStyle:{},inputStyle:{},buttonStyle:{},dropdownStyle:{},searchStyle:{},containerClass:\"\",inputClass:\"\",buttonClass:\"\",dropdownClass:\"\",searchClass:\"\",className:\"\",autoFormat:!0,enableAreaCodes:!1,enableTerritories:!1,disableCountryCode:!1,disableDropdown:!1,enableLongNumbers:!1,countryCodeEditable:!0,enableSearch:!1,disableSearchIcon:!1,disableInitialCountryGuess:!1,disableCountryGuess:!1,regions:\"\",inputProps:{},localization:{},masks:null,priority:null,areaCodes:null,preserveOrder:[],defaultMask:\"... ... ... ... ..\",alwaysDefaultMask:!1,prefix:\"+\",copyNumbersOnly:!0,renderStringAsFlag:\"\",autocompleteSearch:!1,jumpCursorToEnd:!0,enableAreaCodeStretch:!1,enableClickOutside:!0,showDropdown:!1,isValid:!0,defaultErrorMessage:\"\",specialLabel:\"Phone\",onEnterKeyPress:null,keys:{UP:38,DOWN:40,RIGHT:39,LEFT:37,ENTER:13,ESC:27,PLUS:43,A:65,Z:90,SPACE:32,TAB:9}};t.default=F}]);","var 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 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 constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = 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 constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","import { CSSProperties } from 'react'\nimport { SpringValue, Interpolation, animated } from '@react-spring/web'\nimport { useTheme } from '@nivo/core'\nimport { DatumWithArcAndColor } from '../types'\n\nconst staticStyle: CSSProperties = {\n pointerEvents: 'none',\n}\n\nexport interface ArcLabelProps<Datum extends DatumWithArcAndColor> {\n datum: Datum\n label: string\n style: {\n progress: SpringValue<number>\n transform: Interpolation<string>\n textColor: string\n }\n}\n\nexport const ArcLabel = <Datum extends DatumWithArcAndColor>({\n label,\n style,\n}: ArcLabelProps<Datum>) => {\n const theme = useTheme()\n\n return (\n <animated.g transform={style.transform} opacity={style.progress} style={staticStyle}>\n <animated.text\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n style={{\n ...theme.labels.text,\n fill: style.textColor,\n }}\n >\n {label}\n </animated.text>\n </animated.g>\n )\n}\n","import { Arc, DatumWithArc } from './types'\nimport { useMemo } from 'react'\n\nexport interface ArcTransitionModeConfig {\n enter: (arc: Arc) => Arc\n update: (arc: Arc) => Arc\n leave: (arc: Arc) => Arc\n}\n\nexport const arcTransitionModes = [\n 'startAngle',\n 'middleAngle',\n 'endAngle',\n 'innerRadius',\n 'centerRadius',\n 'outerRadius',\n 'pushIn',\n 'pushOut',\n] as const\nexport type ArcTransitionMode = typeof arcTransitionModes[number]\n\nexport const arcTransitionModeById: Record<ArcTransitionMode, ArcTransitionModeConfig> = {\n startAngle: {\n enter: (arc: Arc) => ({\n ...arc,\n endAngle: arc.startAngle,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n startAngle: arc.endAngle,\n }),\n },\n middleAngle: {\n enter: (arc: Arc) => {\n const middleAngle = arc.startAngle + (arc.endAngle - arc.startAngle) / 2\n\n return {\n ...arc,\n startAngle: middleAngle,\n endAngle: middleAngle,\n }\n },\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => {\n const middleAngle = arc.startAngle + (arc.endAngle - arc.startAngle) / 2\n\n return {\n ...arc,\n startAngle: middleAngle,\n endAngle: middleAngle,\n }\n },\n },\n endAngle: {\n enter: (arc: Arc) => ({\n ...arc,\n startAngle: arc.endAngle,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n endAngle: arc.startAngle,\n }),\n },\n innerRadius: {\n enter: (arc: Arc) => ({\n ...arc,\n outerRadius: arc.innerRadius,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.outerRadius,\n }),\n },\n centerRadius: {\n enter: (arc: Arc) => {\n const centerRadius = arc.innerRadius + (arc.outerRadius - arc.innerRadius) / 2\n\n return {\n ...arc,\n innerRadius: centerRadius,\n outerRadius: centerRadius,\n }\n },\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => {\n const centerRadius = arc.innerRadius + (arc.outerRadius - arc.innerRadius) / 2\n\n return {\n ...arc,\n innerRadius: centerRadius,\n outerRadius: centerRadius,\n }\n },\n },\n outerRadius: {\n enter: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.outerRadius,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n outerRadius: arc.innerRadius,\n }),\n },\n pushIn: {\n enter: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.innerRadius - arc.outerRadius + arc.innerRadius,\n outerRadius: arc.innerRadius,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.outerRadius,\n outerRadius: arc.outerRadius + arc.outerRadius - arc.innerRadius,\n }),\n },\n pushOut: {\n enter: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.outerRadius,\n outerRadius: arc.outerRadius + arc.outerRadius - arc.innerRadius,\n }),\n update: (arc: Arc) => arc,\n leave: (arc: Arc) => ({\n ...arc,\n innerRadius: arc.innerRadius - arc.outerRadius + arc.innerRadius,\n outerRadius: arc.innerRadius,\n }),\n },\n}\n\nexport interface TransitionExtra<Datum extends DatumWithArc, ExtraProps> {\n enter: (datum: Datum) => ExtraProps\n update: (datum: Datum) => ExtraProps\n leave: (datum: Datum) => ExtraProps\n}\n\nexport const useArcTransitionMode = <Datum extends DatumWithArc, ExtraProps>(\n mode: ArcTransitionMode,\n extraTransition?: TransitionExtra<Datum, ExtraProps>\n) =>\n useMemo(() => {\n const transitionMode = arcTransitionModeById[mode]\n\n return {\n enter: (datum: Datum) => ({\n progress: 0,\n ...transitionMode.enter(datum.arc),\n ...(extraTransition ? extraTransition.enter(datum) : {}),\n }),\n update: (datum: Datum) => ({\n progress: 1,\n ...transitionMode.update(datum.arc),\n ...(extraTransition ? extraTransition.update(datum) : {}),\n }),\n leave: (datum: Datum) => ({\n progress: 0,\n ...transitionMode.leave(datum.arc),\n ...(extraTransition ? extraTransition.leave(datum) : {}),\n }),\n }\n }, [mode, extraTransition])\n","import { useMemo } from 'react'\nimport { useTransition, to, SpringValue } from '@react-spring/web'\nimport {\n // @ts-ignore\n midAngle,\n positionFromAngle,\n useMotionConfig,\n} from '@nivo/core'\nimport { Arc, DatumWithArc, Point } from './types'\nimport { filterDataBySkipAngle } from './utils'\nimport { ArcTransitionMode, TransitionExtra, useArcTransitionMode } from './arcTransitionMode'\n\nexport const computeArcCenter = (arc: Arc, offset: number): Point => {\n const angle = midAngle(arc) - Math.PI / 2\n const radius = arc.innerRadius + (arc.outerRadius - arc.innerRadius) * offset\n\n return positionFromAngle(angle, radius)\n}\n\nexport const interpolateArcCenter =\n (offset: number) =>\n (\n startAngleValue: SpringValue<number>,\n endAngleValue: SpringValue<number>,\n innerRadiusValue: SpringValue<number>,\n outerRadiusValue: SpringValue<number>\n ) =>\n to(\n [startAngleValue, endAngleValue, innerRadiusValue, outerRadiusValue],\n (startAngle, endAngle, innerRadius, outerRadius) => {\n const centroid = computeArcCenter(\n { startAngle, endAngle, innerRadius, outerRadius },\n offset\n )\n\n return `translate(${centroid.x},${centroid.y})`\n }\n )\n\nexport const useArcCentersTransition = <Datum extends DatumWithArc, ExtraProps = unknown>(\n data: Datum[],\n // define where the centers should be placed,\n // 0.0: inner radius\n // 0.5: center\n // 1.0: outer radius\n offset = 0.5,\n mode: ArcTransitionMode = 'innerRadius',\n extra?: TransitionExtra<Datum, ExtraProps>\n) => {\n const { animate, config: springConfig } = useMotionConfig()\n\n const phases = useArcTransitionMode<Datum, ExtraProps>(mode, extra)\n\n const transition = useTransition<\n Datum,\n {\n progress: number\n startAngle: number\n endAngle: number\n innerRadius: number\n outerRadius: number\n } & ExtraProps\n >(data, {\n keys: datum => datum.id,\n initial: phases.update,\n from: phases.enter,\n enter: phases.update,\n update: phases.update,\n leave: phases.leave,\n config: springConfig,\n immediate: !animate,\n })\n\n return {\n transition,\n interpolate: interpolateArcCenter(offset),\n }\n}\n\nexport interface ArcCenter<Datum extends DatumWithArc> extends Point {\n data: Datum\n}\n\n/**\n * Compute an array of arc centers from an array of data containing arcs.\n *\n * If you plan to animate those, you could use `useArcCentersTransition`\n * instead, you could use the returned array with react-spring `useTransition`,\n * but this would lead to cartesian transitions (x/y), while `useArcCentersTransition`\n * will generate proper transitions using radius/angle.\n */\nexport const useArcCenters = <\n Datum extends DatumWithArc,\n ExtraProps extends Record<string, any> = Record<string, any>\n>({\n data,\n offset = 0.5,\n skipAngle = 0,\n computeExtraProps = () => ({} as ExtraProps),\n}: {\n data: Datum[]\n // define where the centers should be placed,\n // 0.0: inner radius\n // 0.5: center\n // 1.0: outer radius\n offset?: number\n // arcs with a length below this (end angle - start angle in degrees)\n // are going to be excluded, this can typically be used to avoid having\n // overlapping labels.\n skipAngle?: number\n // this can be used to append extra properties to the centers,\n // can be used to compute a color/label for example.\n computeExtraProps?: (datum: Datum) => ExtraProps\n}): (ArcCenter<Datum> & ExtraProps)[] =>\n useMemo(\n () =>\n filterDataBySkipAngle<Datum>(data, skipAngle)\n // compute position and extra props for each eligible datum\n .map(datum => {\n const position = computeArcCenter(datum.arc, offset)\n\n return {\n ...computeExtraProps(datum),\n x: position.x,\n y: position.y,\n data: datum,\n }\n }),\n [data, offset, skipAngle, computeExtraProps]\n )\n","import { createElement, useMemo } from 'react'\nimport { PropertyAccessor, usePropertyAccessor, radiansToDegrees, useTheme } from '@nivo/core'\nimport { useInheritedColor } from '@nivo/colors'\nimport { useArcCentersTransition } from '../centers'\nimport { ArcTransitionMode } from '../arcTransitionMode'\nimport { DatumWithArcAndColor } from '../types'\nimport { ArcLabelsProps } from './props'\nimport { ArcLabel, ArcLabelProps } from './ArcLabel'\n\nexport type ArcLabelComponent<Datum extends DatumWithArcAndColor> = (\n props: ArcLabelProps<Datum>\n) => JSX.Element\n\ninterface ArcLabelsLayerProps<Datum extends DatumWithArcAndColor> {\n center: [number, number]\n data: Datum[]\n label: PropertyAccessor<Datum, string>\n radiusOffset: ArcLabelsProps<Datum>['arcLabelsRadiusOffset']\n skipAngle: ArcLabelsProps<Datum>['arcLabelsSkipAngle']\n textColor: ArcLabelsProps<Datum>['arcLabelsTextColor']\n transitionMode: ArcTransitionMode\n component?: ArcLabelsProps<Datum>['arcLabelsComponent']\n}\n\nexport const ArcLabelsLayer = <Datum extends DatumWithArcAndColor>({\n center,\n data,\n transitionMode,\n label: labelAccessor,\n radiusOffset,\n skipAngle,\n textColor,\n component = ArcLabel,\n}: ArcLabelsLayerProps<Datum>) => {\n const getLabel = usePropertyAccessor<Datum, string>(labelAccessor)\n const theme = useTheme()\n const getTextColor = useInheritedColor<Datum>(textColor, theme)\n\n const filteredData = useMemo(\n () =>\n data.filter(datum => {\n return (\n Math.abs(radiansToDegrees(datum.arc.endAngle - datum.arc.startAngle)) >=\n skipAngle\n )\n }),\n [data, skipAngle]\n )\n\n const { transition, interpolate } = useArcCentersTransition<Datum>(\n filteredData,\n radiusOffset,\n transitionMode\n )\n\n const Label: ArcLabelComponent<Datum> = component\n\n return (\n <g transform={`translate(${center[0]},${center[1]})`}>\n {transition((transitionProps, datum) => {\n return createElement(Label, {\n key: datum.id,\n datum,\n label: getLabel(datum),\n style: {\n ...transitionProps,\n transform: interpolate(\n transitionProps.startAngle,\n transitionProps.endAngle,\n transitionProps.innerRadius,\n transitionProps.outerRadius\n ),\n textColor: getTextColor(datum),\n },\n })\n })}\n </g>\n )\n}\n","import { useTheme } from '@nivo/core'\nimport { SpringValue, Interpolation, animated } from '@react-spring/web'\nimport { DatumWithArcAndColor } from '../types'\n\nexport interface ArcLinkLabelProps<Datum extends DatumWithArcAndColor> {\n datum: Datum\n label: string\n style: {\n path: Interpolation<string>\n thickness: number\n textPosition: Interpolation<string>\n textAnchor: Interpolation<'start' | 'end'>\n linkColor: SpringValue<string>\n opacity: SpringValue<number>\n textColor: SpringValue<string>\n }\n}\n\nexport const ArcLinkLabel = <Datum extends DatumWithArcAndColor>({\n label,\n style,\n}: ArcLinkLabelProps<Datum>) => {\n const theme = useTheme()\n\n return (\n <animated.g opacity={style.opacity}>\n <animated.path\n fill=\"none\"\n stroke={style.linkColor}\n strokeWidth={style.thickness}\n d={style.path}\n />\n <animated.text\n transform={style.textPosition}\n textAnchor={style.textAnchor}\n dominantBaseline=\"central\"\n style={{\n ...theme.labels.text,\n fill: style.textColor,\n }}\n >\n {label}\n </animated.text>\n </animated.g>\n )\n}\n","import { positionFromAngle } from '@nivo/core'\nimport { Arc, Point } from '../types'\nimport { getNormalizedAngle } from '../utils'\nimport { ArcLink } from './types'\n\n/**\n * Compute text anchor for a given arc.\n *\n * `computeArcLink` already computes a `side`, but when using\n * `react-spring`, you cannot have a single interpolation\n * returning several output values, so we need to compute\n * them in separate interpolations.\n */\nexport const computeArcLinkTextAnchor = (arc: Arc): 'start' | 'end' => {\n const centerAngle = getNormalizedAngle(\n arc.startAngle + (arc.endAngle - arc.startAngle) / 2 - Math.PI / 2\n )\n\n if (centerAngle < Math.PI / 2 || centerAngle > Math.PI * 1.5) {\n return 'start'\n }\n\n return 'end'\n}\n\n/**\n * Compute the link of a single arc, returning its points,\n * please note that points coordinates are relative to\n * the center of the arc.\n */\nexport const computeArcLink = (\n arc: Arc,\n offset: number,\n diagonalLength: number,\n straightLength: number\n): ArcLink => {\n const centerAngle = getNormalizedAngle(\n arc.startAngle + (arc.endAngle - arc.startAngle) / 2 - Math.PI / 2\n )\n const point0: Point = positionFromAngle(centerAngle, arc.outerRadius + offset)\n const point1: Point = positionFromAngle(centerAngle, arc.outerRadius + offset + diagonalLength)\n\n let side: ArcLink['side']\n let point2: Point\n if (centerAngle < Math.PI / 2 || centerAngle > Math.PI * 1.5) {\n side = 'after'\n point2 = {\n x: point1.x + straightLength,\n y: point1.y,\n }\n } else {\n side = 'before'\n point2 = {\n x: point1.x - straightLength,\n y: point1.y,\n }\n }\n\n return {\n side,\n points: [point0, point1, point2],\n }\n}\n","import { useMemo } from 'react'\nimport { SpringValue, useTransition, to } from '@react-spring/web'\nimport { line } from 'd3-shape'\nimport { useMotionConfig, useTheme } from '@nivo/core'\nimport { InheritedColorConfig, useInheritedColor } from '@nivo/colors'\nimport { DatumWithArcAndColor, Point } from '../types'\nimport { useFilteredDataBySkipAngle } from '../utils'\nimport { computeArcLink, computeArcLinkTextAnchor } from './compute'\n\nconst lineGenerator = line<Point>()\n .x(d => d.x)\n .y(d => d.y)\n\ntype AnimatedProps = {\n startAngle: number\n endAngle: number\n innerRadius: number\n outerRadius: number\n offset: number\n diagonalLength: number\n straightLength: number\n textOffset: number\n linkColor: string\n textColor: string\n opacity: number\n}\n\nconst useTransitionPhases = <Datum extends DatumWithArcAndColor>({\n offset,\n diagonalLength,\n straightLength,\n textOffset,\n getLinkColor,\n getTextColor,\n}: Pick<AnimatedProps, 'offset' | 'diagonalLength' | 'straightLength' | 'textOffset'> & {\n getLinkColor: (datum: Datum) => string\n getTextColor: (datum: Datum) => string\n}): Record<'enter' | 'update' | 'leave', (datum: Datum) => AnimatedProps> =>\n useMemo(\n () => ({\n enter: (datum: Datum) => ({\n startAngle: datum.arc.startAngle,\n endAngle: datum.arc.endAngle,\n innerRadius: datum.arc.innerRadius,\n outerRadius: datum.arc.outerRadius,\n offset,\n diagonalLength: 0,\n straightLength: 0,\n textOffset,\n linkColor: getLinkColor(datum),\n textColor: getTextColor(datum),\n opacity: 0,\n }),\n update: (d: Datum) => ({\n startAngle: d.arc.startAngle,\n endAngle: d.arc.endAngle,\n innerRadius: d.arc.innerRadius,\n outerRadius: d.arc.outerRadius,\n offset,\n diagonalLength,\n straightLength,\n textOffset,\n linkColor: getLinkColor(d),\n textColor: getTextColor(d),\n opacity: 1,\n }),\n leave: (d: Datum) => ({\n startAngle: d.arc.startAngle,\n endAngle: d.arc.endAngle,\n innerRadius: d.arc.innerRadius,\n outerRadius: d.arc.outerRadius,\n offset,\n diagonalLength: 0,\n straightLength: 0,\n textOffset,\n linkColor: getLinkColor(d),\n textColor: getTextColor(d),\n opacity: 0,\n }),\n }),\n [diagonalLength, straightLength, textOffset, getLinkColor, getTextColor]\n )\n\nconst interpolateLink = (\n startAngleValue: SpringValue<AnimatedProps['startAngle']>,\n endAngleValue: SpringValue<AnimatedProps['endAngle']>,\n innerRadiusValue: SpringValue<AnimatedProps['innerRadius']>,\n outerRadiusValue: SpringValue<AnimatedProps['outerRadius']>,\n offsetValue: SpringValue<AnimatedProps['offset']>,\n diagonalLengthValue: SpringValue<AnimatedProps['diagonalLength']>,\n straightLengthValue: SpringValue<AnimatedProps['straightLength']>\n) =>\n to(\n [\n startAngleValue,\n endAngleValue,\n innerRadiusValue,\n outerRadiusValue,\n offsetValue,\n diagonalLengthValue,\n straightLengthValue,\n ],\n (\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n offset,\n diagonalLengthAnimated,\n straightLengthAnimated\n ) => {\n const { points } = computeArcLink(\n {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n },\n offset,\n diagonalLengthAnimated,\n straightLengthAnimated\n )\n\n return lineGenerator(points)\n }\n )\n\nconst interpolateTextAnchor = (\n startAngleValue: SpringValue<AnimatedProps['startAngle']>,\n endAngleValue: SpringValue<AnimatedProps['endAngle']>,\n innerRadiusValue: SpringValue<AnimatedProps['innerRadius']>,\n outerRadiusValue: SpringValue<AnimatedProps['outerRadius']>\n) =>\n to(\n [startAngleValue, endAngleValue, innerRadiusValue, outerRadiusValue],\n (startAngle, endAngle, innerRadius, outerRadius) => {\n return computeArcLinkTextAnchor({\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n })\n }\n )\n\n/**\n * Interpolating the text position involves almost the same computation\n * as `interpolateLink`, unfortunately `react-spring` does not support\n * multiple output values from a single interpolation.\n *\n * We should revise this if `react-spring` adds this feature at some point.\n */\nconst interpolateTextPosition = (\n startAngleValue: SpringValue<AnimatedProps['startAngle']>,\n endAngleValue: SpringValue<AnimatedProps['endAngle']>,\n innerRadiusValue: SpringValue<AnimatedProps['innerRadius']>,\n outerRadiusValue: SpringValue<AnimatedProps['outerRadius']>,\n offsetValue: SpringValue<AnimatedProps['offset']>,\n diagonalLengthValue: SpringValue<AnimatedProps['diagonalLength']>,\n straightLengthValue: SpringValue<AnimatedProps['straightLength']>,\n textOffsetValue: SpringValue<AnimatedProps['textOffset']>\n) =>\n to(\n [\n startAngleValue,\n endAngleValue,\n innerRadiusValue,\n outerRadiusValue,\n offsetValue,\n diagonalLengthValue,\n straightLengthValue,\n textOffsetValue,\n ],\n (\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n offset,\n diagonalLengthAnimated,\n straightLengthAnimated,\n textOffset\n ) => {\n const { points, side } = computeArcLink(\n {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n },\n offset,\n diagonalLengthAnimated,\n straightLengthAnimated\n )\n\n const position = points[2]\n if (side === 'before') {\n position.x -= textOffset\n } else {\n position.x += textOffset\n }\n\n return `translate(${position.x},${position.y})`\n }\n )\n\n/**\n * This hook can be used to animate a group of arc link labels,\n * if you just want to compute the labels, please use `useArcLinkLabels`.\n */\nexport const useArcLinkLabelsTransition = <Datum extends DatumWithArcAndColor>({\n data,\n offset = 0,\n diagonalLength,\n straightLength,\n skipAngle = 0,\n textOffset,\n linkColor,\n textColor,\n}: {\n data: Datum[]\n offset?: number\n diagonalLength: number\n straightLength: number\n skipAngle?: number\n textOffset: number\n linkColor: InheritedColorConfig<Datum>\n textColor: InheritedColorConfig<Datum>\n}) => {\n const { animate, config: springConfig } = useMotionConfig()\n\n const theme = useTheme()\n const getLinkColor = useInheritedColor<Datum>(linkColor, theme)\n const getTextColor = useInheritedColor<Datum>(textColor, theme)\n\n const filteredData = useFilteredDataBySkipAngle<Datum>(data, skipAngle)\n const transitionPhases = useTransitionPhases<Datum>({\n offset,\n diagonalLength,\n straightLength,\n textOffset,\n getLinkColor,\n getTextColor,\n })\n\n const transition = useTransition<Datum, AnimatedProps>(filteredData, {\n keys: datum => datum.id,\n initial: transitionPhases.update,\n from: transitionPhases.enter,\n enter: transitionPhases.update,\n update: transitionPhases.update,\n leave: transitionPhases.leave,\n config: springConfig,\n immediate: !animate,\n })\n\n return {\n transition,\n interpolateLink,\n interpolateTextAnchor,\n interpolateTextPosition,\n }\n}\n","import { createElement } from 'react'\nimport { usePropertyAccessor } from '@nivo/core'\nimport { DatumWithArcAndColor } from '../types'\nimport { useArcLinkLabelsTransition } from './useArcLinkLabelsTransition'\nimport { ArcLinkLabelsProps } from './props'\nimport { ArcLinkLabel, ArcLinkLabelProps } from './ArcLinkLabel'\n\nexport type ArcLinkLabelComponent<Datum extends DatumWithArcAndColor> = (\n props: ArcLinkLabelProps<Datum>\n) => JSX.Element\n\ninterface ArcLinkLabelsLayerProps<Datum extends DatumWithArcAndColor> {\n center: [number, number]\n data: Datum[]\n label: ArcLinkLabelsProps<Datum>['arcLinkLabel']\n skipAngle: ArcLinkLabelsProps<Datum>['arcLinkLabelsSkipAngle']\n offset: ArcLinkLabelsProps<Datum>['arcLinkLabelsOffset']\n diagonalLength: ArcLinkLabelsProps<Datum>['arcLinkLabelsDiagonalLength']\n straightLength: ArcLinkLabelsProps<Datum>['arcLinkLabelsStraightLength']\n strokeWidth: ArcLinkLabelsProps<Datum>['arcLinkLabelsThickness']\n textOffset: ArcLinkLabelsProps<Datum>['arcLinkLabelsTextOffset']\n textColor: ArcLinkLabelsProps<Datum>['arcLinkLabelsTextColor']\n linkColor: ArcLinkLabelsProps<Datum>['arcLinkLabelsColor']\n component?: ArcLinkLabelComponent<Datum>\n}\n\nexport const ArcLinkLabelsLayer = <Datum extends DatumWithArcAndColor>({\n center,\n data,\n label: labelAccessor,\n skipAngle,\n offset,\n diagonalLength,\n straightLength,\n strokeWidth,\n textOffset,\n textColor,\n linkColor,\n component = ArcLinkLabel,\n}: ArcLinkLabelsLayerProps<Datum>) => {\n const getLabel = usePropertyAccessor<Datum, string>(labelAccessor)\n\n const { transition, interpolateLink, interpolateTextAnchor, interpolateTextPosition } =\n useArcLinkLabelsTransition<Datum>({\n data,\n skipAngle,\n offset,\n diagonalLength,\n straightLength,\n textOffset,\n linkColor,\n textColor,\n })\n\n const Label: ArcLinkLabelComponent<Datum> = component\n\n return (\n <g transform={`translate(${center[0]},${center[1]})`}>\n {transition((transitionProps, datum) => {\n return createElement(Label, {\n key: datum.id,\n datum,\n label: getLabel(datum),\n style: {\n ...transitionProps,\n thickness: strokeWidth,\n path: interpolateLink(\n transitionProps.startAngle,\n transitionProps.endAngle,\n transitionProps.innerRadius,\n transitionProps.outerRadius,\n transitionProps.offset,\n transitionProps.diagonalLength,\n transitionProps.straightLength\n ),\n textAnchor: interpolateTextAnchor(\n transitionProps.startAngle,\n transitionProps.endAngle,\n transitionProps.innerRadius,\n transitionProps.outerRadius\n ),\n textPosition: interpolateTextPosition(\n transitionProps.startAngle,\n transitionProps.endAngle,\n transitionProps.innerRadius,\n transitionProps.outerRadius,\n transitionProps.offset,\n transitionProps.diagonalLength,\n transitionProps.straightLength,\n transitionProps.textOffset\n ),\n },\n })\n })}\n </g>\n )\n}\n","import { useCallback } from 'react'\nimport * as React from 'react'\nimport { SpringValue, Interpolation, animated } from '@react-spring/web'\nimport { DatumWithArcAndColor } from './types'\n\nexport type ArcMouseHandler<Datum extends DatumWithArcAndColor> = (\n datum: Datum,\n event: React.MouseEvent<SVGPathElement>\n) => void\n\nexport interface ArcShapeProps<Datum extends DatumWithArcAndColor> {\n datum: Datum\n style: {\n opacity: SpringValue<number>\n color: SpringValue<string>\n borderWidth: number\n borderColor: SpringValue<string>\n path: Interpolation<string>\n }\n onClick?: ArcMouseHandler<Datum>\n onMouseEnter?: ArcMouseHandler<Datum>\n onMouseMove?: ArcMouseHandler<Datum>\n onMouseLeave?: ArcMouseHandler<Datum>\n}\n\n/**\n * A simple arc component to be used typically with an `ArcsLayer`.\n *\n * Please note that the component accepts `SpringValue`s instead of\n * regular values to support animations.\n */\nexport const ArcShape = <Datum extends DatumWithArcAndColor>({\n datum,\n style,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n}: ArcShapeProps<Datum>) => {\n const handleClick = useCallback(event => onClick?.(datum, event), [onClick, datum])\n\n const handleMouseEnter = useCallback(\n event => onMouseEnter?.(datum, event),\n [onMouseEnter, datum]\n )\n\n const handleMouseMove = useCallback(event => onMouseMove?.(datum, event), [onMouseMove, datum])\n\n const handleMouseLeave = useCallback(\n event => onMouseLeave?.(datum, event),\n [onMouseLeave, datum]\n )\n\n return (\n <animated.path\n d={style.path}\n opacity={style.opacity}\n fill={datum.fill || style.color}\n stroke={style.borderColor}\n strokeWidth={style.borderWidth}\n onClick={onClick ? handleClick : undefined}\n onMouseEnter={onMouseEnter ? handleMouseEnter : undefined}\n onMouseMove={onMouseMove ? handleMouseMove : undefined}\n onMouseLeave={onMouseLeave ? handleMouseLeave : undefined}\n />\n )\n}\n","import { to, SpringValue } from '@react-spring/web'\nimport { ArcGenerator } from './types'\n\n/**\n * Directly animating paths for arcs leads to sub-optimal results\n * as the interpolation is going to be linear while we deal with polar coordinates,\n * this interpolator is going to generate proper arc transitions.\n * It should be used with the `useAnimatedArc` or `useArcsTransition` hooks.\n */\nexport const interpolateArc = (\n startAngleValue: SpringValue<number>,\n endAngleValue: SpringValue<number>,\n innerRadiusValue: SpringValue<number>,\n outerRadiusValue: SpringValue<number>,\n arcGenerator: ArcGenerator\n) =>\n to(\n [startAngleValue, endAngleValue, innerRadiusValue, outerRadiusValue],\n (startAngle, endAngle, innerRadius, outerRadius) => {\n return arcGenerator({\n startAngle,\n endAngle,\n innerRadius: Math.max(0, innerRadius),\n outerRadius: Math.max(0, outerRadius),\n })\n }\n )\n","import { createElement } from 'react'\nimport { useTheme } from '@nivo/core'\nimport { InheritedColorConfig, useInheritedColor } from '@nivo/colors'\nimport { DatumWithArcAndColor, ArcGenerator } from './types'\nimport { useArcsTransition } from './useArcsTransition'\nimport { ArcTransitionMode } from './arcTransitionMode'\nimport { ArcMouseHandler, ArcShape, ArcShapeProps } from './ArcShape'\n\nexport type ArcComponent<Datum extends DatumWithArcAndColor> = (\n props: ArcShapeProps<Datum>\n) => JSX.Element\n\ninterface ArcsLayerProps<Datum extends DatumWithArcAndColor> {\n center: [number, number]\n data: Datum[]\n arcGenerator: ArcGenerator\n borderWidth: number\n borderColor: InheritedColorConfig<Datum>\n onClick?: ArcMouseHandler<Datum>\n onMouseEnter?: ArcMouseHandler<Datum>\n onMouseMove?: ArcMouseHandler<Datum>\n onMouseLeave?: ArcMouseHandler<Datum>\n transitionMode: ArcTransitionMode\n component?: ArcComponent<Datum>\n}\n\nexport const ArcsLayer = <Datum extends DatumWithArcAndColor>({\n center,\n data,\n arcGenerator,\n borderWidth,\n borderColor,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n transitionMode,\n component = ArcShape,\n}: ArcsLayerProps<Datum>) => {\n const theme = useTheme()\n const getBorderColor = useInheritedColor<Datum>(borderColor, theme)\n\n const { transition, interpolate } = useArcsTransition<\n Datum,\n {\n opacity: number\n color: string\n borderColor: string\n }\n >(data, transitionMode, {\n enter: datum => ({\n opacity: 0,\n color: datum.color,\n borderColor: getBorderColor(datum),\n }),\n update: datum => ({\n opacity: 1,\n color: datum.color,\n borderColor: getBorderColor(datum),\n }),\n leave: datum => ({\n opacity: 0,\n color: datum.color,\n borderColor: getBorderColor(datum),\n }),\n })\n\n const Arc: ArcComponent<Datum> = component\n\n return (\n <g transform={`translate(${center[0]},${center[1]})`}>\n {transition((transitionProps, datum) => {\n return createElement(Arc, {\n key: datum.id,\n datum,\n style: {\n ...transitionProps,\n borderWidth,\n path: interpolate(\n transitionProps.startAngle,\n transitionProps.endAngle,\n transitionProps.innerRadius,\n transitionProps.outerRadius,\n arcGenerator\n ),\n },\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n })\n })}\n </g>\n )\n}\n","import { useTransition } from '@react-spring/web'\nimport { useMotionConfig } from '@nivo/core'\nimport { DatumWithArc } from './types'\nimport { ArcTransitionMode, useArcTransitionMode, TransitionExtra } from './arcTransitionMode'\nimport { interpolateArc } from './interpolateArc'\n\n/**\n * This hook can be used to animate a group of arcs,\n * if you want to animate a single arc,\n * please have a look at the `useAnimatedArc` hook.\n */\nexport const useArcsTransition = <Datum extends DatumWithArc, ExtraProps = unknown>(\n data: Datum[],\n mode: ArcTransitionMode = 'innerRadius',\n extra?: TransitionExtra<Datum, ExtraProps>\n) => {\n const { animate, config: springConfig } = useMotionConfig()\n\n const phases = useArcTransitionMode<Datum, ExtraProps>(mode, extra)\n\n const transition = useTransition<\n Datum,\n {\n progress: number\n startAngle: number\n endAngle: number\n innerRadius: number\n outerRadius: number\n } & ExtraProps\n >(data, {\n keys: datum => datum.id,\n initial: phases.update,\n from: phases.enter,\n enter: phases.update,\n update: phases.update,\n leave: phases.leave,\n config: springConfig,\n immediate: !animate,\n })\n\n return {\n transition,\n interpolate: interpolateArc,\n }\n}\n","import { useMemo } from 'react'\nimport { arc as d3Arc } from 'd3-shape'\nimport { ArcGenerator, Arc } from './types'\n\n/**\n * Memoize a d3 arc generator.\n *\n * Please note that both inner/outer radius aren't static\n * and should come from the arc itself, while it requires\n * more props on the arcs, it provides more flexibility\n * because it's not limited to pie then but can also work\n * with charts such as sunbursts.\n */\nexport const useArcGenerator = ({\n cornerRadius = 0,\n padAngle = 0,\n}: {\n cornerRadius?: number\n padAngle?: number\n} = {}): ArcGenerator =>\n useMemo(\n () =>\n d3Arc<Arc>()\n .innerRadius(arc => arc.innerRadius)\n .outerRadius(arc => arc.outerRadius)\n .cornerRadius(cornerRadius)\n .padAngle(padAngle),\n [cornerRadius, padAngle]\n )\n","import { useMemo } from 'react'\nimport { get, isPlainObject } from 'lodash'\nimport { scaleOrdinal } from 'd3-scale'\nimport {\n ColorSchemeId,\n colorSchemes,\n isCategoricalColorScheme,\n isSequentialColorScheme,\n isDivergingColorScheme,\n} from '../schemes'\n\n/**\n * Static color.\n */\nexport type OrdinalColorScaleConfigStaticColor = string\n\n/**\n * User defined function, receiving the current datum.\n */\nexport type OrdinalColorScaleConfigCustomFunction<Datum> = (d: Datum) => string\n\n/**\n * Pre-defined color scheme.\n */\nexport interface OrdinalColorScaleConfigScheme {\n scheme: ColorSchemeId\n // size is useful for diverging & sequential colors,\n // as they are array of array, whereas categorical colors\n // are simple arrays, if the size isn't specified,\n // the bigger array will be selected, this means the 11th\n // for diverging colors and 9th for sequential ones.\n size?: number\n}\n\n/**\n * User defined colors.\n */\nexport type OrdinalColorScaleConfigCustomColors = string[]\n\n/**\n * Get color from datum.\n */\nexport interface OrdinalColorScaleConfigDatumProperty {\n // path to the color property\n datum: string\n}\n\nexport type OrdinalColorScaleConfig<Datum = any> =\n | OrdinalColorScaleConfigStaticColor\n | OrdinalColorScaleConfigCustomFunction<Datum>\n | OrdinalColorScaleConfigScheme\n | OrdinalColorScaleConfigCustomColors\n | OrdinalColorScaleConfigDatumProperty\n\nconst isOrdinalColorScaleConfigScheme = <Datum>(\n config: OrdinalColorScaleConfig<Datum>\n): config is OrdinalColorScaleConfigScheme => {\n return (config as OrdinalColorScaleConfigScheme).scheme !== undefined\n}\n\nconst isOrdinalColorScaleConfigDatumProperty = <Datum>(\n config: OrdinalColorScaleConfig<Datum>\n): config is OrdinalColorScaleConfigDatumProperty => {\n return (config as OrdinalColorScaleConfigDatumProperty).datum !== undefined\n}\n\nexport type DatumIdentityAccessor<Datum> = (datum: Datum) => string | number\n\nexport type OrdinalColorScale<Datum> = (d: Datum) => string\n\n/**\n * Compute an ordinal color scale\n */\nexport const getOrdinalColorScale = <Datum = any>(\n config: OrdinalColorScaleConfig<Datum>,\n identity?: string | DatumIdentityAccessor<Datum>\n): OrdinalColorScale<Datum> => {\n // user defined function\n if (typeof config === 'function') {\n return config\n }\n\n // compute accessor to the datum identity\n const getIdentity =\n typeof identity === 'function' ? identity : (datum: Datum) => get(datum, identity as string)\n\n // user defined color array\n if (Array.isArray(config)) {\n const scale = scaleOrdinal(config)\n const generator = (datum: Datum) => scale(getIdentity(datum))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n if (isPlainObject(config)) {\n // use color from current datum\n if (isOrdinalColorScaleConfigDatumProperty(config)) {\n return (datum: Datum) => get(datum, config.datum)\n }\n\n // ordinal scale from predefined scheme\n if (isOrdinalColorScaleConfigScheme(config)) {\n // categorical color scheme\n if (isCategoricalColorScheme(config.scheme)) {\n const scale = scaleOrdinal(colorSchemes[config.scheme])\n const generator = (datum: Datum) => scale(getIdentity(datum))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n // Diverging color schemes support a size k ranging from 3 to 11\n if (isDivergingColorScheme(config.scheme)) {\n if (config.size !== undefined && (config.size < 3 || config.size > 11)) {\n throw new Error(\n `Invalid size '${config.size}' for diverging color scheme '${config.scheme}', must be between 3~11`\n )\n }\n\n const scale = scaleOrdinal(colorSchemes[config.scheme][config.size || 11])\n const generator = (d: Datum) => scale(getIdentity(d))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n\n // Sequential, single-hue color schemes support a size k ranging from 3 to 9.\n // Sequential, multi-hue color schemes support a size k ranging from 3 to 9.\n if (isSequentialColorScheme(config.scheme)) {\n if (config.size !== undefined && (config.size < 3 || config.size > 9)) {\n throw new Error(\n `Invalid size '${config.size}' for sequential color scheme '${config.scheme}', must be between 3~9`\n )\n }\n\n const scale = scaleOrdinal(colorSchemes[config.scheme][config.size || 9])\n const generator = (d: Datum) => scale(getIdentity(d))\n generator.scale = scale\n\n return generator as OrdinalColorScale<Datum>\n }\n }\n\n throw new Error(\n `Invalid colors, when using an object, you should either pass a 'datum' or a 'scheme' property`\n )\n }\n\n // static color\n return () => config as string\n}\n\nexport const useOrdinalColorScale = <Datum = any>(\n config: OrdinalColorScaleConfig<Datum>,\n identity: string | DatumIdentityAccessor<Datum>\n) => useMemo(() => getOrdinalColorScale<Datum>(config, identity), [config, identity])\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import { BoxLegendSvg } from '@nivo/legends'\nimport { CompletePieSvgProps, ComputedDatum, DatumId } from './types'\n\ninterface PieLegendsProps<RawDatum> {\n width: number\n height: number\n legends: CompletePieSvgProps<RawDatum>['legends']\n data: Omit<ComputedDatum<RawDatum>, 'arc'>[]\n toggleSerie: (id: DatumId) => void\n}\n\nconst PieLegends = <RawDatum,>({\n width,\n height,\n legends,\n data,\n toggleSerie,\n}: PieLegendsProps<RawDatum>) => {\n return (\n <>\n {legends.map((legend, i) => (\n <BoxLegendSvg\n key={i}\n {...legend}\n containerWidth={width}\n containerHeight={height}\n data={legend.data ?? data}\n toggleSerie={legend.toggleSerie ? toggleSerie : undefined}\n />\n ))}\n </>\n )\n}\n\nexport default PieLegends\n","import { BasicTooltip } from '@nivo/tooltip'\nimport { ComputedDatum } from './types'\n\nexport const PieTooltip = <RawDatum,>({ datum }: { datum: ComputedDatum<RawDatum> }) => (\n <BasicTooltip\n id={datum.id}\n value={datum.formattedValue}\n enableChip={true}\n color={datum.color}\n />\n)\n\nexport default PieTooltip\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import { positionFromAngle, degreesToRadians } from '@nivo/core'\n\n/**\n * Computes the bounding box for a circle arc.\n *\n * Assumptions:\n * - Anywhere the arc intersects an axis will be a max or a min.\n * - If the arc doesn't intersect an axis, then the center\n * will be one corner of the bounding rectangle,\n * and this is the only case when it will be.\n * - The only other possible extreme points of the sector to consider\n * are the endpoints of the radii.\n *\n * This script was built within the help of this answer on stackoverflow:\n * https://stackoverflow.com/questions/1336663/2d-bounding-box-of-a-sector\n */\nexport const computeArcBoundingBox = (\n centerX: number,\n centerY: number,\n radius: number,\n // in degrees\n startAngle: number,\n // in degrees\n endAngle: number,\n includeCenter = true\n) => {\n let points: [number, number][] = []\n\n const p0 = positionFromAngle(degreesToRadians(startAngle), radius)\n points.push([p0.x, p0.y])\n\n const p1 = positionFromAngle(degreesToRadians(endAngle), radius)\n points.push([p1.x, p1.y])\n\n for (\n let angle = Math.round(Math.min(startAngle, endAngle));\n angle <= Math.round(Math.max(startAngle, endAngle));\n angle++\n ) {\n if (angle % 90 === 0) {\n const p = positionFromAngle(degreesToRadians(angle), radius)\n points.push([p.x, p.y])\n }\n }\n\n points = points.map(([x, y]) => [centerX + x, centerY + y])\n if (includeCenter) {\n points.push([centerX, centerY])\n }\n\n const xs = points.map(([x]) => x)\n const ys = points.map(([, y]) => y)\n\n const x0 = Math.min(...xs)\n const x1 = Math.max(...xs)\n\n const y0 = Math.min(...ys)\n const y1 = Math.max(...ys)\n\n return {\n points,\n x: x0,\n y: y0,\n width: x1 - x0,\n height: y1 - y0,\n }\n}\n","import { createElement, useMemo } from 'react'\nimport * as React from 'react'\nimport { ArcGenerator, ArcsLayer } from '@nivo/arcs'\nimport { useTooltip } from '@nivo/tooltip'\nimport { ComputedDatum, CompletePieSvgProps } from './types'\n\ninterface ArcsProps<RawDatum> {\n center: [number, number]\n data: ComputedDatum<RawDatum>[]\n arcGenerator: ArcGenerator\n borderWidth: CompletePieSvgProps<RawDatum>['borderWidth']\n borderColor: CompletePieSvgProps<RawDatum>['borderColor']\n isInteractive: CompletePieSvgProps<RawDatum>['isInteractive']\n onClick?: CompletePieSvgProps<RawDatum>['onClick']\n onMouseEnter?: CompletePieSvgProps<RawDatum>['onMouseEnter']\n onMouseMove?: CompletePieSvgProps<RawDatum>['onMouseMove']\n onMouseLeave?: CompletePieSvgProps<RawDatum>['onMouseLeave']\n setActiveId: (id: null | string | number) => void\n tooltip: CompletePieSvgProps<RawDatum>['tooltip']\n transitionMode: CompletePieSvgProps<RawDatum>['transitionMode']\n}\n\nexport const Arcs = <RawDatum,>({\n center,\n data,\n arcGenerator,\n borderWidth,\n borderColor,\n isInteractive,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n setActiveId,\n tooltip,\n transitionMode,\n}: ArcsProps<RawDatum>) => {\n const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n const handleClick = useMemo(() => {\n if (!isInteractive) return undefined\n\n return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n onClick?.(datum, event)\n }\n }, [isInteractive, onClick])\n\n const handleMouseEnter = useMemo(() => {\n if (!isInteractive) return undefined\n\n return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n showTooltipFromEvent(createElement(tooltip, { datum }), event)\n setActiveId(datum.id)\n onMouseEnter?.(datum, event)\n }\n }, [isInteractive, showTooltipFromEvent, setActiveId, onMouseEnter, tooltip])\n\n const handleMouseMove = useMemo(() => {\n if (!isInteractive) return undefined\n\n return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n showTooltipFromEvent(createElement(tooltip, { datum }), event)\n onMouseMove?.(datum, event)\n }\n }, [isInteractive, showTooltipFromEvent, onMouseMove, tooltip])\n\n const handleMouseLeave = useMemo(() => {\n if (!isInteractive) return undefined\n\n return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n hideTooltip()\n setActiveId(null)\n onMouseLeave?.(datum, event)\n }\n }, [isInteractive, hideTooltip, setActiveId, onMouseLeave])\n\n return (\n <ArcsLayer<ComputedDatum<RawDatum>>\n center={center}\n data={data}\n arcGenerator={arcGenerator}\n borderWidth={borderWidth}\n borderColor={borderColor}\n transitionMode={transitionMode}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n />\n )\n}\n","import { ReactNode, Fragment, createElement } from 'react'\nimport {\n // @ts-ignore\n bindDefs,\n useDimensions,\n Container,\n SvgWrapper,\n} from '@nivo/core'\nimport { ArcLabelsLayer, ArcLinkLabelsLayer } from '@nivo/arcs'\nimport { InheritedColorConfig } from '@nivo/colors'\nimport PieLegends from './PieLegends'\nimport { useNormalizedData, usePieFromBox, usePieLayerContext } from './hooks'\nimport { ComputedDatum, PieLayer, PieSvgProps, PieLayerId } from './types'\nimport { defaultProps } from './props'\nimport { Arcs } from './Arcs'\n\nconst InnerPie = <RawDatum,>({\n data,\n id = defaultProps.id,\n value = defaultProps.value,\n valueFormat,\n sortByValue = defaultProps.sortByValue,\n\n layers = defaultProps.layers as PieLayer<RawDatum>[],\n\n startAngle = defaultProps.startAngle,\n endAngle = defaultProps.endAngle,\n padAngle = defaultProps.padAngle,\n fit = defaultProps.fit,\n innerRadius: innerRadiusRatio = defaultProps.innerRadius,\n cornerRadius = defaultProps.cornerRadius,\n activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n\n width,\n height,\n margin: partialMargin,\n\n colors = defaultProps.colors,\n\n // border\n borderWidth = defaultProps.borderWidth,\n borderColor = defaultProps.borderColor as InheritedColorConfig<ComputedDatum<RawDatum>>,\n\n // arc labels\n enableArcLabels = defaultProps.enableArcLabels,\n arcLabel = defaultProps.arcLabel,\n arcLabelsSkipAngle = defaultProps.arcLabelsSkipAngle,\n arcLabelsTextColor = defaultProps.arcLabelsTextColor,\n arcLabelsRadiusOffset = defaultProps.arcLabelsRadiusOffset,\n arcLabelsComponent,\n\n // arc link labels\n enableArcLinkLabels = defaultProps.enableArcLinkLabels,\n arcLinkLabel = defaultProps.arcLinkLabel,\n arcLinkLabelsSkipAngle = defaultProps.arcLinkLabelsSkipAngle,\n arcLinkLabelsOffset = defaultProps.arcLinkLabelsOffset,\n arcLinkLabelsDiagonalLength = defaultProps.arcLinkLabelsDiagonalLength,\n arcLinkLabelsStraightLength = defaultProps.arcLinkLabelsStraightLength,\n arcLinkLabelsThickness = defaultProps.arcLinkLabelsThickness,\n arcLinkLabelsTextOffset = defaultProps.arcLinkLabelsTextOffset,\n arcLinkLabelsTextColor = defaultProps.arcLinkLabelsTextColor,\n arcLinkLabelsColor = defaultProps.arcLinkLabelsColor,\n arcLinkLabelComponent,\n\n // styling\n defs = defaultProps.defs,\n fill = defaultProps.fill,\n\n // interactivity\n isInteractive = defaultProps.isInteractive,\n onClick,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n tooltip = defaultProps.tooltip,\n\n transitionMode = defaultProps.transitionMode,\n\n legends = defaultProps.legends,\n role = defaultProps.role,\n}: PieSvgProps<RawDatum>) => {\n const { outerWidth, outerHeight, margin, innerWidth, innerHeight } = useDimensions(\n width,\n height,\n partialMargin\n )\n\n const normalizedData = useNormalizedData<RawDatum>({\n data,\n id,\n value,\n valueFormat,\n colors,\n })\n\n const {\n dataWithArc,\n legendData,\n arcGenerator,\n centerX,\n centerY,\n radius,\n innerRadius,\n setActiveId,\n toggleSerie,\n } = usePieFromBox<RawDatum>({\n data: normalizedData,\n width: innerWidth,\n height: innerHeight,\n fit,\n innerRadius: innerRadiusRatio,\n startAngle,\n endAngle,\n padAngle,\n sortByValue,\n cornerRadius,\n activeInnerRadiusOffset,\n activeOuterRadiusOffset,\n })\n\n const boundDefs = bindDefs(defs, dataWithArc, fill)\n\n const layerById: Record<PieLayerId, ReactNode> = {\n arcLinkLabels: null,\n arcs: null,\n arcLabels: null,\n legends: null,\n }\n\n if (enableArcLinkLabels && layers.includes('arcLinkLabels')) {\n layerById.arcLinkLabels = (\n <ArcLinkLabelsLayer<ComputedDatum<RawDatum>>\n key=\"arcLinkLabels\"\n center={[centerX, centerY]}\n data={dataWithArc}\n label={arcLinkLabel}\n skipAngle={arcLinkLabelsSkipAngle}\n offset={arcLinkLabelsOffset}\n diagonalLength={arcLinkLabelsDiagonalLength}\n straightLength={arcLinkLabelsStraightLength}\n strokeWidth={arcLinkLabelsThickness}\n textOffset={arcLinkLabelsTextOffset}\n textColor={arcLinkLabelsTextColor}\n linkColor={arcLinkLabelsColor}\n component={arcLinkLabelComponent}\n />\n )\n }\n\n if (layers.includes('arcs')) {\n layerById.arcs = (\n <Arcs<RawDatum>\n key=\"arcs\"\n center={[centerX, centerY]}\n data={dataWithArc}\n arcGenerator={arcGenerator}\n borderWidth={borderWidth}\n borderColor={borderColor}\n isInteractive={isInteractive}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n setActiveId={setActiveId}\n tooltip={tooltip}\n transitionMode={transitionMode}\n />\n )\n }\n\n if (enableArcLabels && layers.includes('arcLabels')) {\n layerById.arcLabels = (\n <ArcLabelsLayer<ComputedDatum<RawDatum>>\n key=\"arcLabels\"\n center={[centerX, centerY]}\n data={dataWithArc}\n label={arcLabel}\n radiusOffset={arcLabelsRadiusOffset}\n skipAngle={arcLabelsSkipAngle}\n textColor={arcLabelsTextColor}\n transitionMode={transitionMode}\n component={arcLabelsComponent}\n />\n )\n }\n\n if (legends.length > 0 && layers.includes('legends')) {\n layerById.legends = (\n <PieLegends<RawDatum>\n key=\"legends\"\n width={innerWidth}\n height={innerHeight}\n data={legendData}\n legends={legends}\n toggleSerie={toggleSerie}\n />\n )\n }\n\n const layerContext = usePieLayerContext<RawDatum>({\n dataWithArc,\n arcGenerator,\n centerX,\n centerY,\n radius,\n innerRadius,\n })\n\n return (\n <SvgWrapper\n width={outerWidth}\n height={outerHeight}\n margin={margin}\n defs={boundDefs}\n role={role}\n >\n {layers.map((layer, i) => {\n if (layerById[layer as PieLayerId] !== undefined) {\n return layerById[layer as PieLayerId]\n }\n\n if (typeof layer === 'function') {\n return <Fragment key={i}>{createElement(layer, layerContext)}</Fragment>\n }\n\n return null\n })}\n </SvgWrapper>\n )\n}\n\nexport const Pie = <RawDatum,>({\n isInteractive = defaultProps.isInteractive,\n animate = defaultProps.animate,\n motionConfig = defaultProps.motionConfig,\n theme,\n renderWrapper,\n ...otherProps\n}: PieSvgProps<RawDatum>) => (\n <Container\n {...{\n animate,\n isInteractive,\n motionConfig,\n renderWrapper,\n theme,\n }}\n >\n <InnerPie<RawDatum> isInteractive={isInteractive} {...otherProps} />\n </Container>\n)\n","import { ResponsiveWrapper } from '@nivo/core'\nimport { Pie } from './Pie'\nimport { PieSvgProps } from './types'\n\nexport const ResponsivePie = <RawDatum,>(\n props: Omit<PieSvgProps<RawDatum>, 'width' | 'height'>\n) => (\n <ResponsiveWrapper>\n {({ width, height }: { width: number; height: number }) => (\n <Pie<RawDatum> width={width} height={height} {...props} />\n )}\n </ResponsiveWrapper>\n)\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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export var COMMON_MIME_TYPES = new Map([\n ['avi', 'video/avi'],\n ['gif', 'image/gif'],\n ['ico', 'image/x-icon'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['mp4', 'video/mp4'],\n ['pdf', 'application/pdf'],\n ['png', 'image/png'],\n ['zip', 'application/zip'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, isDragEvt(evt) && evt.dataTransfer\n ? getDataTransferFiles(evt.dataTransfer, evt.type)\n : getInputFiles(evt)];\n });\n });\n}\nfunction isDragEvt(value) {\n return !!value.dataTransfer;\n}\nfunction getInputFiles(evt) {\n var files = isInput(evt.target)\n ? evt.target.files\n ? fromList(evt.target.files)\n : []\n : [];\n return files.map(function (file) { return toFileWithPath(file); });\n}\nfunction isInput(value) {\n return value !== null;\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","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 _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 accepts from 'attr-accept'; // Error codes\n\nexport var FILE_INVALID_TYPE = 'file-invalid-type';\nexport var FILE_TOO_LARGE = 'file-too-large';\nexport var FILE_TOO_SMALL = 'file-too-small';\nexport var TOO_MANY_FILES = 'too-many-files'; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(', ')) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: 'Too many files'\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === 'application/x-moz-file' || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === 'function') {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== 'undefined') {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === 'object' && item !== null && item.kind === 'file';\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\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 _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\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\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromEvent } from 'file-selector';\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, isEvtWithFiles, isIeOrEdge, isPropagationStopped, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from './utils/index';\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, [\"open\"]);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = 'Dropzone'; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function \n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles; // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n if (inputRef.current) {\n dispatch({\n type: 'openDialog'\n });\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch]); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: 'closeDialog'\n });\n\n if (typeof onFileDialogCancel === 'function') {\n onFileDialogCancel();\n }\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener('focus', onWindowFocus, false);\n return function () {\n window.removeEventListener('focus', onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancel]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, inputRef]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: 'focus'\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: 'blur'\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [inputRef, noClick]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: 'setDraggedFiles'\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = 'copy';\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: 'setDraggedFiles',\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: 'setFiles'\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n });\n }\n\n dispatch({\n type: 'reset'\n });\n }, [multiple, accept, minSize, maxSize, maxFiles, getFilesFromEvent, onDrop, onDropAccepted, onDropRejected, noDragEventsBubbling]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, [\"refKey\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"]);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb))\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, [\"refKey\", \"onChange\", \"onClick\"]);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: 'file',\n style: {\n display: 'none'\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case 'focus':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case 'blur':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case 'openDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: true\n });\n\n case 'closeDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case 'setDraggedFiles':\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case 'setFiles':\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case 'reset':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false,\n isDragActive: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n });\n\n default:\n return state;\n }\n}","import { TableSeg } from '@fullcalendar/daygrid'\nimport { AbstractResourceDayTableModel, VResourceJoiner } from '@fullcalendar/resource-common'\n\nexport class ResourceDayTableJoiner extends VResourceJoiner<TableSeg> {\n transformSeg(seg: TableSeg, resourceDayTableModel: AbstractResourceDayTableModel, resourceI: number): TableSeg[] {\n let colRanges = resourceDayTableModel.computeColRanges(seg.firstCol, seg.lastCol, resourceI)\n\n return colRanges.map((colRange) => ({\n ...seg,\n ...colRange,\n isStart: seg.isStart && colRange.isStart,\n isEnd: seg.isEnd && colRange.isEnd,\n }))\n }\n}\n","import {\n createElement, createRef, VNode,\n mapHash, Hit, DateSpan, DateComponent, EventStore, EventUiHash, EventInteractionState, Duration, RefObject, CssDimValue, DateProfile,\n} from '@fullcalendar/common'\nimport { DayTableSlicer, Table } from '@fullcalendar/daygrid'\nimport { AbstractResourceDayTableModel, VResourceSplitter } from '@fullcalendar/resource-common'\nimport { ResourceDayTableJoiner } from './ResourceDayTableJoiner'\n\nexport interface ResourceDayTableProps {\n dateProfile: DateProfile\n resourceDayTableModel: AbstractResourceDayTableModel\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n nextDayThreshold: Duration\n tableMinWidth: CssDimValue\n colGroupNode: VNode\n renderRowIntro?: () => VNode\n dayMaxEvents: boolean | number\n dayMaxEventRows: boolean | number\n expandRows: boolean\n showWeekNumbers: boolean\n headerAlignElRef?: RefObject<HTMLElement> // for more popover alignment\n clientWidth: number | null\n clientHeight: number | null\n forPrint: boolean\n}\n\nexport class ResourceDayTable extends DateComponent<ResourceDayTableProps> {\n private splitter = new VResourceSplitter()\n private slicers: { [resourceId: string]: DayTableSlicer } = {}\n private joiner = new ResourceDayTableJoiner()\n private tableRef = createRef<Table>()\n\n render() {\n let { props, context } = this\n let { resourceDayTableModel, nextDayThreshold, dateProfile } = props\n\n let splitProps = this.splitter.splitProps(props)\n this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTableSlicer())\n let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(\n splitProps[resourceId],\n dateProfile,\n nextDayThreshold,\n context,\n resourceDayTableModel.dayTableModel,\n ))\n\n return (\n <Table\n forPrint={props.forPrint}\n ref={this.tableRef}\n {...this.joiner.joinProps(slicedProps, resourceDayTableModel)}\n cells={resourceDayTableModel.cells}\n dateProfile={dateProfile}\n colGroupNode={props.colGroupNode}\n tableMinWidth={props.tableMinWidth}\n renderRowIntro={props.renderRowIntro}\n dayMaxEvents={props.dayMaxEvents}\n dayMaxEventRows={props.dayMaxEventRows}\n showWeekNumbers={props.showWeekNumbers}\n expandRows={props.expandRows}\n headerAlignElRef={props.headerAlignElRef}\n clientWidth={props.clientWidth}\n clientHeight={props.clientHeight}\n isHitComboAllowed={this.isHitComboAllowed}\n />\n )\n }\n\n isHitComboAllowed = (hit0: Hit, hit1: Hit) => {\n let allowAcrossResources = this.props.resourceDayTableModel.dayTableModel.colCnt === 1\n return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId\n }\n}\n","import {\n createElement,\n createRef,\n DateProfileGenerator,\n memoize,\n DateProfile,\n ChunkContentCallbackArgs,\n CalendarContext,\n} from '@fullcalendar/common'\nimport { TableView, buildDayTableModel } from '@fullcalendar/daygrid'\nimport {\n ResourceDayHeader, ResourceDayTableModel, DayResourceTableModel, ResourceViewProps,\n Resource, flattenResources, DEFAULT_RESOURCE_ORDER,\n} from '@fullcalendar/resource-common'\nimport { ResourceDayTable } from './ResourceDayTable'\n\nexport class ResourceDayTableView extends TableView {\n props: ResourceViewProps\n\n private flattenResources = memoize(flattenResources)\n private buildResourceDayTableModel = memoize(buildResourceDayTableModel)\n private headerRef = createRef<ResourceDayHeader>()\n private tableRef = createRef<ResourceDayTable>()\n\n render() {\n let { props, context } = this\n let { options } = context\n\n let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER\n let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs)\n let resourceDayTableModel = this.buildResourceDayTableModel(\n props.dateProfile,\n context.dateProfileGenerator,\n resources,\n options.datesAboveResources,\n context,\n )\n\n let headerContent = options.dayHeaders && (\n <ResourceDayHeader\n ref={this.headerRef}\n resources={resources}\n dateProfile={props.dateProfile}\n dates={resourceDayTableModel.dayTableModel.headerDates}\n datesRepDistinctDays\n />\n )\n\n let bodyContent = (contentArg: ChunkContentCallbackArgs) => (\n <ResourceDayTable\n ref={this.tableRef}\n dateProfile={props.dateProfile}\n resourceDayTableModel={resourceDayTableModel}\n businessHours={props.businessHours}\n eventStore={props.eventStore}\n eventUiBases={props.eventUiBases}\n dateSelection={props.dateSelection}\n eventSelection={props.eventSelection}\n eventDrag={props.eventDrag}\n eventResize={props.eventResize}\n nextDayThreshold={options.nextDayThreshold}\n tableMinWidth={contentArg.tableMinWidth}\n colGroupNode={contentArg.tableColGroupNode}\n dayMaxEvents={options.dayMaxEvents}\n dayMaxEventRows={options.dayMaxEventRows}\n showWeekNumbers={options.weekNumbers}\n expandRows={!props.isHeightAuto}\n headerAlignElRef={this.headerElRef}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n forPrint={props.forPrint}\n />\n )\n\n return options.dayMinWidth\n ? this.renderHScrollLayout(headerContent, bodyContent, resourceDayTableModel.colCnt, options.dayMinWidth)\n : this.renderSimpleLayout(headerContent, bodyContent)\n }\n}\n\nfunction buildResourceDayTableModel(\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n resources: Resource[],\n datesAboveResources: boolean,\n context: CalendarContext,\n) {\n let dayTable = buildDayTableModel(dateProfile, dateProfileGenerator)\n\n return datesAboveResources ?\n new DayResourceTableModel(dayTable, resources, context) :\n new ResourceDayTableModel(dayTable, resources, context)\n}\n","import { TimeColsSeg } from '@fullcalendar/timegrid'\nimport { AbstractResourceDayTableModel, VResourceJoiner } from '@fullcalendar/resource-common'\n\nexport class ResourceDayTimeColsJoiner extends VResourceJoiner<TimeColsSeg> {\n transformSeg(seg: TimeColsSeg, resourceDayTable: AbstractResourceDayTableModel, resourceI: number) {\n return [\n {\n ...seg,\n col: resourceDayTable.computeCol(seg.col, resourceI),\n },\n ]\n }\n}\n","import {\n createElement, createRef, VNode,\n mapHash, DateSpan, DateComponent, EventStore, EventUiHash, EventInteractionState, memoize, DateRange,\n DateMarker, Hit, CssDimValue, NowTimer, Duration, DateProfile,\n} from '@fullcalendar/common'\nimport { DayTimeColsSlicer, TimeCols, buildDayRanges, TimeSlatMeta, TimeColsSlatsCoords } from '@fullcalendar/timegrid'\nimport { AbstractResourceDayTableModel, VResourceSplitter } from '@fullcalendar/resource-common'\nimport { ResourceDayTimeColsJoiner } from './ResourceDayTimeColsJoiner'\n\nexport interface ResourceDayTimeColsProps {\n dateProfile: DateProfile\n resourceDayTableModel: AbstractResourceDayTableModel\n axis: boolean\n slotDuration: Duration\n slatMetas: TimeSlatMeta[]\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n tableColGroupNode: VNode\n tableMinWidth: CssDimValue\n clientWidth: number | null\n clientHeight: number | null\n expandRows: boolean\n onScrollTopRequest?: (scrollTop: number) => void\n forPrint: boolean\n onSlatCoords?: (slatCoords: TimeColsSlatsCoords) => void\n}\n\nexport class ResourceDayTimeCols extends DateComponent<ResourceDayTimeColsProps> {\n private buildDayRanges = memoize(buildDayRanges)\n private dayRanges: DateRange[] // for now indicator\n private splitter = new VResourceSplitter()\n private slicers: { [resourceId: string]: DayTimeColsSlicer } = {}\n private joiner = new ResourceDayTimeColsJoiner()\n private timeColsRef = createRef<TimeCols>()\n\n render() {\n let { props, context } = this\n let { dateEnv, options } = context\n let { dateProfile, resourceDayTableModel } = props\n\n let dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv)\n let splitProps = this.splitter.splitProps(props)\n\n this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTimeColsSlicer())\n let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(\n splitProps[resourceId],\n dateProfile,\n null,\n context,\n dayRanges,\n ))\n\n return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it\n <NowTimer unit={options.nowIndicator ? 'minute' : 'day'}>\n {(nowDate: DateMarker, todayRange: DateRange) => (\n <TimeCols\n ref={this.timeColsRef}\n {...this.joiner.joinProps(slicedProps, resourceDayTableModel)}\n dateProfile={dateProfile}\n axis={props.axis}\n slotDuration={props.slotDuration}\n slatMetas={props.slatMetas}\n cells={resourceDayTableModel.cells[0]}\n tableColGroupNode={props.tableColGroupNode}\n tableMinWidth={props.tableMinWidth}\n clientWidth={props.clientWidth}\n clientHeight={props.clientHeight}\n expandRows={props.expandRows}\n nowDate={nowDate}\n nowIndicatorSegs={options.nowIndicator && this.buildNowIndicatorSegs(nowDate)}\n todayRange={todayRange}\n onScrollTopRequest={props.onScrollTopRequest}\n forPrint={props.forPrint}\n onSlatCoords={props.onSlatCoords}\n isHitComboAllowed={this.isHitComboAllowed}\n />\n )}\n </NowTimer>\n )\n }\n\n isHitComboAllowed = (hit0: Hit, hit1: Hit) => {\n let allowAcrossResources = this.dayRanges.length === 1\n return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId\n }\n\n buildNowIndicatorSegs(date: DateMarker) {\n let nonResourceSegs = this.slicers[''].sliceNowDate(date, this.context, this.dayRanges)\n return this.joiner.expandSegs(this.props.resourceDayTableModel, nonResourceSegs)\n }\n}\n","import { createElement, DateProfileGenerator, memoize, DateProfile, ChunkContentCallbackArgs, CalendarContext } from '@fullcalendar/common'\nimport { TimeColsView, buildTimeColsModel, buildSlatMetas } from '@fullcalendar/timegrid'\nimport {\n ResourceDayHeader, ResourceDayTableModel, DayResourceTableModel, ResourceViewProps,\n Resource, flattenResources, DEFAULT_RESOURCE_ORDER,\n} from '@fullcalendar/resource-common'\nimport { ResourceDayTable } from '@fullcalendar/resource-daygrid'\nimport { ResourceDayTimeCols } from './ResourceDayTimeCols'\n\nexport class ResourceDayTimeColsView extends TimeColsView {\n props: ResourceViewProps\n\n private flattenResources = memoize(flattenResources)\n private buildResourceTimeColsModel = memoize(buildResourceTimeColsModel)\n private buildSlatMetas = memoize(buildSlatMetas)\n\n render() {\n let { props, context } = this\n let { options, dateEnv } = context\n let { dateProfile } = props\n\n let splitProps = this.allDaySplitter.splitProps(props)\n let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER\n let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs)\n let resourceDayTableModel = this.buildResourceTimeColsModel(\n dateProfile,\n context.dateProfileGenerator,\n resources,\n options.datesAboveResources,\n context,\n )\n\n let slatMetas = this.buildSlatMetas(\n dateProfile.slotMinTime,\n dateProfile.slotMaxTime,\n options.slotLabelInterval,\n options.slotDuration,\n dateEnv,\n )\n let { dayMinWidth } = options\n let hasAttachedAxis = !dayMinWidth\n let hasDetachedAxis = dayMinWidth\n\n let headerContent = options.dayHeaders && (\n <ResourceDayHeader\n resources={resources}\n dates={resourceDayTableModel.dayTableModel.headerDates}\n dateProfile={dateProfile}\n datesRepDistinctDays\n renderIntro={hasAttachedAxis ? this.renderHeadAxis : null}\n />\n )\n\n let allDayContent = (options.allDaySlot !== false) && ((contentArg: ChunkContentCallbackArgs) => (\n <ResourceDayTable\n {...splitProps.allDay}\n dateProfile={dateProfile}\n resourceDayTableModel={resourceDayTableModel}\n nextDayThreshold={options.nextDayThreshold}\n tableMinWidth={contentArg.tableMinWidth}\n colGroupNode={contentArg.tableColGroupNode}\n renderRowIntro={hasAttachedAxis ? this.renderTableRowAxis : null}\n showWeekNumbers={false}\n expandRows={false}\n headerAlignElRef={this.headerElRef}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n forPrint={props.forPrint}\n {...this.getAllDayMaxEventProps()}\n />\n ))\n\n let timeGridContent = (contentArg: ChunkContentCallbackArgs) => (\n <ResourceDayTimeCols\n {...splitProps.timed}\n dateProfile={dateProfile}\n axis={hasAttachedAxis}\n slotDuration={options.slotDuration}\n slatMetas={slatMetas}\n resourceDayTableModel={resourceDayTableModel}\n tableColGroupNode={contentArg.tableColGroupNode}\n tableMinWidth={contentArg.tableMinWidth}\n clientWidth={contentArg.clientWidth}\n clientHeight={contentArg.clientHeight}\n onSlatCoords={this.handleSlatCoords}\n expandRows={contentArg.expandRows}\n forPrint={props.forPrint}\n onScrollTopRequest={this.handleScrollTopRequest}\n />\n )\n\n return hasDetachedAxis\n ? this.renderHScrollLayout(\n headerContent,\n allDayContent,\n timeGridContent,\n resourceDayTableModel.colCnt,\n dayMinWidth,\n slatMetas,\n this.state.slatCoords,\n )\n : this.renderSimpleLayout(\n headerContent,\n allDayContent,\n timeGridContent,\n )\n }\n}\n\nfunction buildResourceTimeColsModel(\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n resources: Resource[],\n datesAboveResources: boolean,\n context: CalendarContext,\n) {\n let dayTable = buildTimeColsModel(dateProfile, dateProfileGenerator)\n\n return datesAboveResources ?\n new DayResourceTableModel(dayTable, resources, context) :\n new ResourceDayTableModel(dayTable, resources, context)\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","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","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\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","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","// [[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","// 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 {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","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\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 \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return 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","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","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<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 A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){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 n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;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.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[: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]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(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 na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(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 B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(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 ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!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(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.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])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;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(y(91));return m({},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(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(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(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(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 ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(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 ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(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(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"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 rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),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 kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){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)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)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction 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)}function 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}m(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=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},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=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},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=m({},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=m({},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=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},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=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!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(fa){var xe;if(fa){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));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\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,Ie=Object.prototype.hasOwnProperty;\nfunction Je(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++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(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;Ze(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;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"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 jd(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}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"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 Ic:case Jc:case Kc:k=Hd;break;case Lc: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 w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,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 Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(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=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(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=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(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 tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];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(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);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,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(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 zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(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 Cg(a,b,c,d){var e=a.updateQueue;wg=!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 n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(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(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(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?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(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&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(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||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(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(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}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=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(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 Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.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 Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(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}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(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=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);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}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=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}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},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=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.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||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),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&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)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 Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;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,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,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.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(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}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(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.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(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.nextEffect=null,c.firstEffect=null,c.lastEffect=null);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 Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(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 jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=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.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(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 nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(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(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\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(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\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","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&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:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/**\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 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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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","/** @license React v17.0.2\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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.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:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // 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\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<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 * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\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 * @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 function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\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 * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(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) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function 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\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var 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 */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/** 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 `_.has` 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 baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var 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 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 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 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 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 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","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 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","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 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","/**\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","/**\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 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","/**\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 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","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 baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * 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","/**\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","/**\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 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 isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var 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 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 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","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var 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","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * 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","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","/**\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","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","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 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 WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\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 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","/**\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 baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * 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","/**\n * A specialized version of `_.reduce` 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 * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\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 rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\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 rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\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 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 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 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","/**\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","/** 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","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) 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) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\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","import 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes 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 minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours 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 hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * const date1 = new Date(1989, 6, 10)\n * const date2 = new Date(1987, 1, 11)\n * const minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * const dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * const minDate = min(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // 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((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n return time >= startTime && time <= endTime;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (isNaN(date) || !date) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time) || time === null) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: null\n };\n var year = captures[1] && parseInt(captures[1]);\n var century = captures[2] && parseInt(captures[2]);\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null;\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return null;\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return null; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\n}\n\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n while (current.parentNode) {\n if (isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (!WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n };\n /**\n * Remove all document's event listeners for this component\n */\n\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n excludeScrollbar = _props.excludeScrollbar,\n props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\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\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\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\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(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 &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(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 (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\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 copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\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","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 * 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","/** 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 SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\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","/**\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","/**\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","/**\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 basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\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","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 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 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","/** 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","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","/**\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 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","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 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 * 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","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","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 baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nmodule.exports = baseIsDate;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\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","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` 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 {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nvar Motion = (function (_React$Component) {\n _inherits(Motion, _React$Component);\n\n _createClass(Motion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n children: _propTypes2['default'].func.isRequired,\n onRest: _propTypes2['default'].func\n },\n enumerable: true\n }]);\n\n function Motion(props) {\n var _this = this;\n\n _classCallCheck(this, Motion);\n\n _React$Component.call(this, props);\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyle = null;\n\n this.clearUnreadPropStyle = function (destStyle) {\n var dirty = false;\n var _state = _this.state;\n var currentStyle = _state.currentStyle;\n var currentVelocity = _state.currentVelocity;\n var lastIdealStyle = _state.lastIdealStyle;\n var lastIdealVelocity = _state.lastIdealVelocity;\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = _extends({}, currentStyle);\n currentVelocity = _extends({}, currentVelocity);\n lastIdealStyle = _extends({}, lastIdealStyle);\n lastIdealVelocity = _extends({}, lastIdealVelocity);\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // check if we need to animate in the first place\n var propsStyle = _this.props.style;\n if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n if (_this.wasAnimating && _this.props.onRest) {\n _this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.wasAnimating = false;\n _this.accumulatedTime = 0;\n return;\n }\n\n _this.wasAnimating = true;\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n\n for (var key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n var styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n for (var i = 0; i < framesToCatchUp; i++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity\n });\n\n _this.unreadPropStyle = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n Motion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyle = _props.defaultStyle;\n var style = _props.style;\n\n var currentStyle = defaultStyle || _stripStyle2['default'](style);\n var currentVelocity = _mapToZero2['default'](currentStyle);\n return {\n currentStyle: currentStyle,\n currentVelocity: currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity\n };\n };\n\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n\n Motion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = props.style;\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n Motion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyle);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return Motion;\n})(_react2['default'].Component);\n\nexports['default'] = Motion;\nmodule.exports = exports['default'];\n\n// after checking for unreadPropStyle != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n for (var i = 0; i < currentStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n return false;\n }\n }\n return true;\n}\n\nvar StaggeredMotion = (function (_React$Component) {\n _inherits(StaggeredMotion, _React$Component);\n\n _createClass(StaggeredMotion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n styles: _propTypes2['default'].func.isRequired,\n children: _propTypes2['default'].func.isRequired\n },\n enumerable: true\n }]);\n\n function StaggeredMotion(props) {\n var _this = this;\n\n _classCallCheck(this, StaggeredMotion);\n\n _React$Component.call(this, props);\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _state = _this.state;\n var currentStyles = _state.currentStyles;\n var currentVelocities = _state.currentVelocities;\n var lastIdealStyles = _state.lastIdealStyles;\n var lastIdealVelocities = _state.lastIdealVelocities;\n\n var someDirty = false;\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i];\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n someDirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n }\n }\n }\n\n if (someDirty) {\n _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n\n for (var i = 0; i < destStyles.length; i++) {\n var destStyle = destStyles[i];\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n StaggeredMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n\n var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n var currentVelocities = currentStyles.map(function (currentStyle) {\n return _mapToZero2['default'](currentStyle);\n });\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: currentStyles,\n lastIdealVelocities: currentVelocities\n };\n };\n\n StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n StaggeredMotion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return StaggeredMotion;\n})(_react2['default'].Component);\n\nexports['default'] = StaggeredMotion;\nmodule.exports = exports['default'];\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400\n\n// after checking for unreadPropStyles != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\n// the children function & (potential) styles function asks as param an\n// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n }\n\n // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// core key merging logic\n\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n if (leavingStyle == null) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n }\n // TODO: key search code\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = (function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n }\n\n // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n }\n\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\n // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n var oldMergedPropsStyles = undefined;\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n return defaultStyleCell;\n });\n }\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync(\n // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4];\n // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n };\n\n // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n})(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default'];\n\n// list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","\n\n// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n\n var prevKeyIndex = {};\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n var nextKeyIndex = {};\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n }\n\n // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n var ret = [];\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n if (fill != null) {\n ret.push(fill);\n }\n }\n }\n\n // now all the items all present. Core sorting logic to have the right order\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n }\n // pluggable. default to: next bigger than prev\n return 1;\n }\n // prevOrderA, nextOrderB\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n }\n // pluggable. default to: next bigger than prev\n return -1;\n });\n}\n\nmodule.exports = exports['default'];\n// to loop through and find a key's index each time), but I no longer care","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = spring;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _presets = require('./presets');\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n precision: 0.01\n});\n\nfunction spring(val, config) {\n return _extends({}, defaultConfig, config, { val: val });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = reorderKeys;\n\nvar hasWarned = false;\n\nfunction reorderKeys() {\n if (process.env.NODE_ENV === 'development') {\n if (!hasWarned) {\n hasWarned = true;\n console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n }\n }\n}\n\nmodule.exports = exports['default'];","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nmodule.exports = _taggedTemplateLiteral;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar 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};\nvar 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\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.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: string.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 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\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}\n\nfunction 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}\n\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]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\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 | | 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\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\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 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\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 incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (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 incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\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 incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\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(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\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(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\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 set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\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 set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (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 parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (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 parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (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, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\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 incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\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 incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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}","import defaultLocale from \"../locale/en-US/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 parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // 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://git.io/fxCyr\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, Su, Sa | |\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, Su, Sa | 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, Su, Sa | |\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, Su, Sa | |\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, 0001, ..., 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://git.io/fxCyr\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://git.io/fxCyr\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\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://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\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://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\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, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // 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 localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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 // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.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, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!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 = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\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) {\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.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\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 new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\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)) {\n return new Date(NaN);\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/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(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\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\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 (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 (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 (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (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 (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (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 toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 lightFormatters from \"../lightFormatters/index.js\";\nimport 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\";\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 * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (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 (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 (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 (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 (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (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 (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 (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 (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 (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 (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;","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/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\"; // 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://git.io/fxCyr\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, Su, Sa | |\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, Su, Sa | 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, Su, Sa | |\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, Su, Sa | |\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://git.io/fxCyr\n *\n * 9. `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://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\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://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\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://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var 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 * var 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 * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // 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 localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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, formatterOptions);\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.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, 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 return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\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 _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\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 _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\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 _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\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 getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(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}","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","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\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 {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.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 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\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\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\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 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","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\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","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\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","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\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","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","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","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 none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\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 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(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","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n"],"sourceRoot":""}