UNPKG

571 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-widgets.js","mappings":"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","sources":["webpack://ReactWidgets/webpack/universalModuleDefinition","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useCallbackRef.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useEventCallback.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useEventListener.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useFocusManager.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useGlobalListener.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useMergedRefs.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useMounted.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useCustomEffect.js","webpack://ReactWidgets/../../node_modules/lodash-es/eq.js","webpack://ReactWidgets/../../node_modules/lodash-es/_assocIndexOf.js","webpack://ReactWidgets/../../node_modules/lodash-es/_listCacheDelete.js","webpack://ReactWidgets/../../node_modules/lodash-es/_ListCache.js","webpack://ReactWidgets/../../node_modules/lodash-es/_listCacheClear.js","webpack://ReactWidgets/../../node_modules/lodash-es/_listCacheGet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_listCacheHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_listCacheSet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_freeGlobal.js","webpack://ReactWidgets/../../node_modules/lodash-es/_root.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Symbol.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getRawTag.js","webpack://ReactWidgets/../../node_modules/lodash-es/_objectToString.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseGetTag.js","webpack://ReactWidgets/../../node_modules/lodash-es/isObject.js","webpack://ReactWidgets/../../node_modules/lodash-es/isFunction.js","webpack://ReactWidgets/../../node_modules/lodash-es/_coreJsData.js","webpack://ReactWidgets/../../node_modules/lodash-es/_isMasked.js","webpack://ReactWidgets/../../node_modules/lodash-es/_toSource.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseIsNative.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getNative.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getValue.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Map.js","webpack://ReactWidgets/../../node_modules/lodash-es/_nativeCreate.js","webpack://ReactWidgets/../../node_modules/lodash-es/_hashGet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_hashHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Hash.js","webpack://ReactWidgets/../../node_modules/lodash-es/_hashClear.js","webpack://ReactWidgets/../../node_modules/lodash-es/_hashDelete.js","webpack://ReactWidgets/../../node_modules/lodash-es/_hashSet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getMapData.js","webpack://ReactWidgets/../../node_modules/lodash-es/_isKeyable.js","webpack://ReactWidgets/../../node_modules/lodash-es/_MapCache.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapCacheClear.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapCacheDelete.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapCacheGet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapCacheHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapCacheSet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Stack.js","webpack://ReactWidgets/../../node_modules/lodash-es/_stackClear.js","webpack://ReactWidgets/../../node_modules/lodash-es/_stackDelete.js","webpack://ReactWidgets/../../node_modules/lodash-es/_stackGet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_stackHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_stackSet.js","webpack://ReactWidgets/../../node_modules/lodash-es/_SetCache.js","webpack://ReactWidgets/../../node_modules/lodash-es/_setCacheAdd.js","webpack://ReactWidgets/../../node_modules/lodash-es/_setCacheHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_arraySome.js","webpack://ReactWidgets/../../node_modules/lodash-es/_equalArrays.js","webpack://ReactWidgets/../../node_modules/lodash-es/_cacheHas.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Uint8Array.js","webpack://ReactWidgets/../../node_modules/lodash-es/_mapToArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/_setToArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/_equalByTag.js","webpack://ReactWidgets/../../node_modules/lodash-es/isArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getSymbols.js","webpack://ReactWidgets/../../node_modules/lodash-es/_arrayFilter.js","webpack://ReactWidgets/../../node_modules/lodash-es/stubArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/isObjectLike.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseIsArguments.js","webpack://ReactWidgets/../../node_modules/lodash-es/isArguments.js","webpack://ReactWidgets/../../node_modules/lodash-es/isBuffer.js","webpack://ReactWidgets/../../node_modules/lodash-es/stubFalse.js","webpack://ReactWidgets/../../node_modules/lodash-es/_isIndex.js","webpack://ReactWidgets/../../node_modules/lodash-es/isLength.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseIsTypedArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/_nodeUtil.js","webpack://ReactWidgets/../../node_modules/lodash-es/isTypedArray.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseUnary.js","webpack://ReactWidgets/../../node_modules/lodash-es/_arrayLikeKeys.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseTimes.js","webpack://ReactWidgets/../../node_modules/lodash-es/_isPrototype.js","webpack://ReactWidgets/../../node_modules/lodash-es/_nativeKeys.js","webpack://ReactWidgets/../../node_modules/lodash-es/_overArg.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseKeys.js","webpack://ReactWidgets/../../node_modules/lodash-es/keys.js","webpack://ReactWidgets/../../node_modules/lodash-es/isArrayLike.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getAllKeys.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseGetAllKeys.js","webpack://ReactWidgets/../../node_modules/lodash-es/_arrayPush.js","webpack://ReactWidgets/../../node_modules/lodash-es/_equalObjects.js","webpack://ReactWidgets/../../node_modules/lodash-es/_DataView.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Promise.js","webpack://ReactWidgets/../../node_modules/lodash-es/_Set.js","webpack://ReactWidgets/../../node_modules/lodash-es/_WeakMap.js","webpack://ReactWidgets/../../node_modules/lodash-es/_getTag.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseIsEqualDeep.js","webpack://ReactWidgets/../../node_modules/lodash-es/_baseIsEqual.js","webpack://ReactWidgets/../../node_modules/lodash-es/isEqual.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useImmediateUpdateEffect.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useStableMemo.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useMutationObserver.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useTimeout.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useWillUnmount.js","webpack://ReactWidgets/../../node_modules/@restart/hooks/esm/useUpdatedRef.js","webpack://ReactWidgets/./src/A11y.ts","webpack://ReactWidgets/./src/Accessors.ts","webpack://ReactWidgets/./src/AddToListOption.tsx","webpack://ReactWidgets/./src/Button.tsx","webpack://ReactWidgets/./src/Calendar.tsx","webpack://ReactWidgets/./src/CalendarButton.tsx","webpack://ReactWidgets/./src/CalendarHeader.tsx","webpack://ReactWidgets/./src/CalendarView.tsx","webpack://ReactWidgets/./src/Century.tsx","webpack://ReactWidgets/./src/Combobox.tsx","webpack://ReactWidgets/./src/DatePicker.tsx","webpack://ReactWidgets/./src/DatePickerInput.tsx","webpack://ReactWidgets/./src/DateTimePartInput.tsx","webpack://ReactWidgets/./src/Decade.tsx","webpack://ReactWidgets/./src/DropdownList.tsx","webpack://ReactWidgets/./src/DropdownListInput.tsx","webpack://ReactWidgets/./src/Filter.ts","webpack://ReactWidgets/./src/FocusListContext.ts","webpack://ReactWidgets/./src/Icon.tsx","webpack://ReactWidgets/./src/Input.tsx","webpack://ReactWidgets/./src/InputAddon.tsx","webpack://ReactWidgets/./src/IntlLocalizer.ts","webpack://ReactWidgets/./src/List.tsx","webpack://ReactWidgets/./src/ListOption.tsx","webpack://ReactWidgets/./src/ListOptionGroup.tsx","webpack://ReactWidgets/./src/Listbox.tsx","webpack://ReactWidgets/./src/Localization.tsx","webpack://ReactWidgets/./src/Month.tsx","webpack://ReactWidgets/./src/Multiselect.tsx","webpack://ReactWidgets/./src/MultiselectInput.tsx","webpack://ReactWidgets/./src/MultiselectTag.tsx","webpack://ReactWidgets/./src/MultiselectTagList.tsx","webpack://ReactWidgets/./src/NumberInput.tsx","webpack://ReactWidgets/./src/NumberPicker.tsx","webpack://ReactWidgets/./src/PickerCaret.tsx","webpack://ReactWidgets/./src/Popup.tsx","webpack://ReactWidgets/./src/PropTypes.ts","webpack://ReactWidgets/./src/SlideDownTransition.tsx","webpack://ReactWidgets/./src/SlideTransitionGroup.tsx","webpack://ReactWidgets/./src/TimeInput.tsx","webpack://ReactWidgets/./src/Widget.tsx","webpack://ReactWidgets/./src/WidgetHelpers.ts","webpack://ReactWidgets/./src/WidgetPicker.tsx","webpack://ReactWidgets/./src/Year.tsx","webpack://ReactWidgets/./src/_.ts","webpack://ReactWidgets/./src/canShowCreate.tsx","webpack://ReactWidgets/./src/dates.ts","webpack://ReactWidgets/./src/messages.tsx","webpack://ReactWidgets/./src/useAutoFocus.ts","webpack://ReactWidgets/./src/useDropdownToggle.ts","webpack://ReactWidgets/./src/useFocusManager.ts","webpack://ReactWidgets/./src/useTabTrap.ts","webpack://ReactWidgets/../../node_modules/classnames/index.js","webpack://ReactWidgets/../../node_modules/date-arithmetic/index.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/activeElement.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/canUseDOM.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/closest.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/hyphenate.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/hyphenateStyle.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/isTransform.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/css.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/getComputedStyle.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/ownerWindow.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/isWindow.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/isDocument.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/getScrollAccessor.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/scrollLeft.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/scrollTop.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/height.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/offset.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/contains.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/matches.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/ownerDocument.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/querySelectorAll.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/addEventListener.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/listen.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/removeEventListener.js","webpack://ReactWidgets/../../node_modules/dom-helpers/esm/transitionEnd.js","webpack://ReactWidgets/../../node_modules/invariant/browser.js","webpack://ReactWidgets/../../node_modules/object-assign/index.js","webpack://ReactWidgets/../../node_modules/prop-types/checkPropTypes.js","webpack://ReactWidgets/../../node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactWidgets/../../node_modules/prop-types/factoryWithTypeCheckers.js","webpack://ReactWidgets/../../node_modules/prop-types/index.js","webpack://ReactWidgets/../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactWidgets/../../node_modules/react-is/cjs/react-is.development.js","webpack://ReactWidgets/../../node_modules/react-is/cjs/react-is.production.min.js","webpack://ReactWidgets/../../node_modules/react-is/index.js","webpack://ReactWidgets/../../node_modules/react-transition-group/esm/utils/PropTypes.js","webpack://ReactWidgets/../../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://ReactWidgets/../../node_modules/react-transition-group/esm/Transition.js","webpack://ReactWidgets/../../node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack://ReactWidgets/../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://ReactWidgets/../../node_modules/uncontrollable/lib/esm/utils.js","webpack://ReactWidgets/../../node_modules/uncontrollable/lib/esm/hook.js","webpack://ReactWidgets/../../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://ReactWidgets/../../node_modules/uncontrollable/lib/esm/uncontrollable.js","webpack://ReactWidgets/external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","webpack://ReactWidgets/external {\"root\":\"ReactDOM\",\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\"}","webpack://ReactWidgets/../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://ReactWidgets/../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://ReactWidgets/../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://ReactWidgets/webpack/bootstrap","webpack://ReactWidgets/webpack/runtime/compat get default export","webpack://ReactWidgets/webpack/runtime/define property getters","webpack://ReactWidgets/webpack/runtime/hasOwnProperty shorthand","webpack://ReactWidgets/webpack/runtime/make namespace object","webpack://ReactWidgets/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactWidgets\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactWidgets\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__5427__, __WEBPACK_EXTERNAL_MODULE__2797__) {\nreturn ","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var handler = useEventCallback(listener);\n useEffect(function () {\n var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return function () {\n return target.removeEventListener(event, handler, capture);\n };\n }, [eventTarget]);\n}","import { useCallback, useRef } from 'react';\nimport useEventCallback from './useEventCallback';\nimport useMounted from './useMounted';\n\n/**\n * useFocusManager provides a way to track and manage focus as it moves around\n * a container element. An `onChange` is fired when focus enters or leaves the\n * element, but not when it moves around inside the element, similar to\n * `pointerenter` and `pointerleave` DOM events.\n *\n * ```tsx\n * const [focused, setFocusState] = useState(false)\n *\n * const { onBlur, onFocus } = useFocusManager({\n * onChange: nextFocused => setFocusState(nextFocused)\n * })\n *\n * return (\n * <div tabIndex=\"-1\" onFocus={onFocus} onBlur={onBlur}>\n * {String(focused)}\n * <input />\n * <input />\n *\n * <button>A button</button>\n * </div>\n * ```\n *\n */\nexport default function useFocusManager(opts) {\n var isMounted = useMounted();\n var lastFocused = useRef();\n var handle = useRef();\n var willHandle = useEventCallback(opts.willHandle);\n var didHandle = useEventCallback(opts.didHandle);\n var onChange = useEventCallback(opts.onChange);\n var isDisabled = useEventCallback(opts.isDisabled);\n var handleFocusChange = useCallback(function (focused, event) {\n if (event && event.persist) event.persist();\n if (willHandle && willHandle(focused, event) === false) return;\n clearTimeout(handle.current);\n handle.current = setTimeout(function () {\n if (focused !== lastFocused.current) {\n if (didHandle) didHandle(focused, event); // only fire a change when unmounted if its a blur\n\n if (isMounted() || !focused) {\n lastFocused.current = focused;\n onChange && onChange(focused, event);\n }\n }\n });\n }, [isMounted, willHandle, didHandle, onChange, lastFocused]);\n var handleBlur = useCallback(function (event) {\n if (!isDisabled()) handleFocusChange(false, event);\n }, [handleFocusChange, isDisabled]);\n var handleFocus = useCallback(function (event) {\n if (!isDisabled()) handleFocusChange(true, event);\n }, [handleFocusChange, isDisabled]);\n return {\n onBlur: handleBlur,\n onFocus: handleFocus\n };\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n * console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var documentTarget = useCallback(function () {\n return document;\n }, []);\n return useEventListener(documentTarget, event, handler, capture);\n}","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n return useMemo(function () {\n return mergeRefs(refA, refB);\n }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import { useRef, useEffect, useDebugValue } from 'react';\nimport useMounted from './useMounted';\n\nfunction useCustomEffect(effect, dependencies, isEqualOrOptions) {\n var isMounted = useMounted();\n\n var _ref = typeof isEqualOrOptions === 'function' ? {\n isEqual: isEqualOrOptions\n } : isEqualOrOptions,\n isEqual = _ref.isEqual,\n _ref$effectHook = _ref.effectHook,\n effectHook = _ref$effectHook === void 0 ? useEffect : _ref$effectHook;\n\n var dependenciesRef = useRef();\n dependenciesRef.current = dependencies;\n var cleanupRef = useRef(null);\n effectHook(function () {\n // If the ref the is `null` it's either the first effect or the last effect\n // ran and was cleared, meaning _this_ update should run, b/c the equality\n // check failed on in the cleanup of the last effect.\n if (cleanupRef.current === null) {\n var cleanup = effect();\n\n cleanupRef.current = function () {\n if (isMounted() && isEqual(dependenciesRef.current, dependencies)) {\n return;\n }\n\n cleanupRef.current = null;\n if (cleanup) cleanup();\n };\n }\n\n return cleanupRef.current;\n });\n useDebugValue(effect);\n}\n\nexport default useCustomEffect;","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\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","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","/**\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","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/** 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","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/** 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","/**\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 isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import 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 baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\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\nexport default isEqual;\n","import { useRef } from 'react';\nimport useStableMemo from './useStableMemo';\nimport useWillUnmount from './useWillUnmount';\n/**\n * An _immediate_ effect that runs an effect callback when its dependency array\n * changes. This is helpful for updates should must run during render, most\n * commonly state derived from props; a more ergonomic version of https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n *\n * ```ts\n * function Example({ value }) {\n * const [intermediaryValue, setValue] = useState(value);\n *\n * useImmediateUpdateEffect(() => {\n * setValue(value)\n * }, [value])\n * ```\n *\n * @category effects\n */\n\nfunction useImmediateUpdateEffect(effect, deps) {\n var firstRef = useRef(true);\n var tearDown = useRef();\n useWillUnmount(function () {\n if (tearDown.current) tearDown.current();\n });\n useStableMemo(function () {\n if (firstRef.current) {\n firstRef.current = false;\n return;\n }\n\n if (tearDown.current) tearDown.current();\n tearDown.current = effect();\n }, deps);\n}\n\nexport default useImmediateUpdateEffect;","import { useRef } from 'react';\n\nfunction isEqual(a, b) {\n if (a.length !== b.length) return false;\n\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Identical to `useMemo` _except_ that it provides a semantic guarantee that\n * values will not be invalidated unless the dependencies change. This is unlike\n * the built in `useMemo` which may discard memoized values for performance reasons.\n *\n * @param factory A function that returns a value to be memoized\n * @param deps A dependency array\n */\nexport default function useStableMemo(factory, deps) {\n var isValid = true;\n var valueRef = useRef(); // initial hook call\n\n if (!valueRef.current) {\n valueRef.current = {\n deps: deps,\n result: factory()\n }; // subsequent calls\n } else {\n isValid = !!(deps && valueRef.current.deps && isEqual(deps, valueRef.current.deps));\n }\n\n var cache = isValid ? valueRef.current : {\n deps: deps,\n result: factory()\n }; // must update immediately so any sync renders here don't cause an infinite loop\n\n valueRef.current = cache;\n return cache.result;\n}","import useCustomEffect from './useCustomEffect';\nimport isEqual from \"lodash-es/isEqual\";\nimport useImmediateUpdateEffect from './useImmediateUpdateEffect';\nimport useEventCallback from './useEventCallback';\n\nfunction isDepsEqual(_ref, _ref2) {\n var nextElement = _ref[0],\n nextConfig = _ref[1];\n var prevElement = _ref2[0],\n prevConfig = _ref2[1];\n return nextElement === prevElement && isEqual(nextConfig, prevConfig);\n}\n/**\n * Observe mutations on a DOM node or tree of DOM nodes.\n * Depends on the `MutationObserver` api.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef(null);\n *\n * useMutationObserver(element, { subtree: true }, (records) => {\n *\n * });\n *\n * return (\n * <div ref={attachRef} />\n * )\n * ```\n *\n * @param element The DOM element to observe\n * @param config The observer configuration\n * @param callback A callback fired when a mutation occurs\n */\n\n\nfunction useMutationObserver(element, config, callback) {\n var fn = useEventCallback(callback);\n useCustomEffect(function () {\n if (!element) return; // The behavior around reusing mutation observers is confusing\n // observing again _should_ disable the last listener but doesn't\n // seem to always be the case, maybe just in JSDOM? In any case the cost\n // to redeclaring it is gonna be fairly low anyway, so make it simple\n\n var observer = new MutationObserver(fn);\n observer.observe(element, config);\n return function () {\n observer.disconnect();\n };\n }, [element, config], {\n isEqual: isDepsEqual,\n // Intentionally done in render, otherwise observer will miss any\n // changes made to the DOM during this update\n effectHook: useImmediateUpdateEffect\n });\n}\n\nexport default useMutationObserver;","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n var delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n return setChainedTimeout(handleRef, fn, timeoutAtMs);\n }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n var isMounted = useMounted(); // types are confused between node and web here IDK\n\n var handleRef = useRef();\n useWillUnmount(function () {\n return clearTimeout(handleRef.current);\n });\n return useMemo(function () {\n var clear = function clear() {\n return clearTimeout(handleRef.current);\n };\n\n function set(fn, delayMs) {\n if (delayMs === void 0) {\n delayMs = 0;\n }\n\n if (!isMounted()) return;\n clear();\n\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n\n return {\n set: set,\n clear: clear\n };\n }, []);\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useEffect, RefObject } from 'react'\n\n/**\n * Do a \"hard\" set on the aria, so that it's always announced\n * even if the id hasn't changed, this saves us from having to have a different id\n * per item.\n */\nexport const setActiveDescendant = (ref: Element | null, activeId: string) => {\n if (!ref) return\n\n ref.removeAttribute('aria-activedescendant')\n if (activeId) ref.setAttribute('aria-activedescendant', activeId)\n}\n\nexport const useActiveDescendant = (\n ref: RefObject<Element>,\n id: string,\n visible: boolean | null | undefined,\n deps: any[],\n) => {\n useEffect(() => {\n setActiveDescendant(ref.current, visible ? id : '')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref, id, visible, ...deps])\n}\n","import { useMemo } from 'react'\nimport { DataItem, Value } from './types'\n\nexport type Accessors = ReturnType<typeof useAccessors>\n\nexport type DataKeyAccessorFn = (item: DataItem) => DataItem\n\nexport type DataKeyAccessor = string | DataKeyAccessorFn\n\nexport type TextAccessorFn = (item: DataItem) => string\n\nexport type TextAccessor = string | TextAccessorFn\n\nexport const dataValue = (\n dataItem: DataItem,\n field?: DataKeyAccessor,\n): unknown => {\n if (typeof field === 'function') return field(dataItem)\n if (dataItem == null) return dataItem\n if (\n typeof field === 'string' &&\n typeof dataItem === 'object' &&\n field in dataItem!\n )\n return (dataItem as any)![field]\n\n return dataItem\n}\n\nexport const dataText = (\n dataItem: DataItem,\n textField?: TextAccessor,\n): string => {\n const value = dataValue(dataItem, textField)\n return value == null ? '' : String(value)\n}\n\n/**\n * I don't know that the shallow equal makes sense here but am too afraid to\n * remove it.\n */\nexport function valueMatcher(\n a: DataItem,\n b: DataItem,\n dataKey?: DataKeyAccessor,\n) {\n return dataValue(a, dataKey) === dataValue(b, dataKey)\n}\n\nexport function dataIndexOf(\n data: readonly DataItem[],\n value: Value,\n dataKey?: DataKeyAccessor,\n) {\n const valueDataKey = dataValue(value, dataKey)\n let idx = -1\n\n while (++idx < data.length) {\n const datum = data[idx]\n if (datum === value || dataValue(datum, dataKey) === valueDataKey)\n return idx\n }\n\n return -1\n}\n\nexport function dataItem<TDataItem = DataItem>(\n data: readonly TDataItem[],\n value: Value,\n dataKey?: DataKeyAccessor,\n): TDataItem {\n const idx = dataIndexOf(data, value, dataKey)\n // This isn't strictly safe, but we want to allow items that aren't in the list\n return idx !== -1 ? data[idx] : (value as TDataItem)\n}\n\nexport const useAccessors = (\n textField?: TextAccessor,\n dataKey?: DataKeyAccessor,\n) => {\n return useMemo(\n () => ({\n text: (item: DataItem) => dataText(item, textField),\n value: (item: DataItem) => dataValue(item, dataKey),\n indexOf: (data: readonly DataItem[], value: Value) =>\n dataIndexOf(data, value, dataKey),\n matches: (a: DataItem, b: DataItem) => valueMatcher(a, b, dataKey),\n findOrSelf: <TDataItem>(data: readonly TDataItem[], value: Value) =>\n dataItem(data, value, dataKey),\n includes: (data: readonly DataItem[], value: Value) =>\n dataIndexOf(data, value, dataKey) !== -1,\n }),\n [textField, dataKey],\n )\n}\n","import * as PropTypes from 'prop-types'\nimport React, { ReactNode } from 'react'\n\nimport ListOption from './ListOption'\n\nexport const CREATE_OPTION = {}\n\nconst propTypes = {\n searchTerm: PropTypes.string,\n focused: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n activeId: PropTypes.string,\n}\n\nexport interface AddToListOptionProps {\n children: ReactNode\n onSelect: (event: React.MouseEvent) => void\n}\n\nfunction AddToListOption({ children, ...props }: AddToListOptionProps) {\n return (\n <ListOption\n {...props}\n dataItem={CREATE_OPTION}\n className={'rw-list-option-create'}\n selected={false}\n >\n {children}\n </ListOption>\n )\n}\n\nAddToListOption.propTypes = propTypes\n\nexport default AddToListOption\n","import cn from 'classnames'\nimport * as React from 'react'\nimport { ReactNode } from 'react'\nimport { Spinner } from './Icon'\n\nexport interface Props extends React.HTMLProps<HTMLButtonElement> {\n label?: string\n icon?: ReactNode\n busy?: boolean\n spinner?: ReactNode\n children?: ReactNode\n}\n\nfunction Button({\n className,\n disabled,\n label,\n icon,\n busy,\n children,\n spinner = Spinner,\n ...props\n}: Props) {\n return (\n <button\n tabIndex={-1}\n {...props}\n title={label}\n type=\"button\"\n disabled={disabled}\n aria-label={label}\n aria-disabled={disabled}\n className={cn(className, 'rw-btn')}\n >\n {busy ? spinner : icon}\n {children}\n </button>\n )\n}\n\nexport default Button\n","import cn from 'classnames'\nimport { DateUnit } from 'date-arithmetic'\nimport PropTypes from 'prop-types'\nimport React, { useEffect, useRef } from 'react'\nimport { useUncontrolledProp } from 'uncontrollable'\nimport CalendarHeader from './CalendarHeader'\nimport Century from './Century'\nimport Decade from './Decade'\nimport { useLocalizer, DateFormats } from './Localization'\nimport Month, { RenderDayProp } from './Month'\nimport SlideTransitionGroup from './SlideTransitionGroup'\nimport Widget from './Widget'\nimport Year from './Year'\nimport { WidgetHTMLProps, WidgetProps, InferFormat } from './shared'\n\nimport dates from './dates'\nimport useAutoFocus from './useAutoFocus'\nimport useFocusManager from './useFocusManager'\nimport { notify, useInstanceId } from './WidgetHelpers'\n\ntype Direction = 'DOWN' | 'UP' | 'LEFT' | 'RIGHT'\n\ntype SlideDirection = 'bottom' | 'top' | 'left' | 'right'\n\nlet last: <T>(array: T[]) => T = (a) => a[a.length - 1]\n\nconst CELL_CLASSNAME = 'rw-cell'\nconst FOCUSED_CELL_SELECTOR = `.${CELL_CLASSNAME}[tabindex]`\n\nconst MIN = new Date(1900, 0, 1)\nconst MAX = new Date(2099, 11, 31)\n\nconst VIEW_OPTIONS: View[] = ['month', 'year', 'decade', 'century']\n\nconst VIEW_UNIT: Record<View, DateUnit> = {\n month: 'day',\n year: 'month',\n decade: 'year',\n century: 'decade',\n}\n\nconst VIEW = {\n month: Month,\n year: Year,\n decade: Decade,\n century: Century,\n}\n\nconst ARROWS_TO_DIRECTION = {\n ArrowDown: 'DOWN',\n ArrowUp: 'UP',\n ArrowRight: 'RIGHT',\n ArrowLeft: 'LEFT',\n}\n\nconst OPPOSITE_DIRECTION: Record<'RIGHT' | 'LEFT', 'RIGHT' | 'LEFT'> = {\n LEFT: 'RIGHT',\n RIGHT: 'LEFT',\n}\n\nconst MULTIPLIER = {\n year: 1,\n decade: 10,\n century: 100,\n}\n\nfunction inRangeValue(_value: Date | undefined | null, min: Date, max: Date) {\n let value = dateOrNull(_value)\n if (value === null) return value\n return dates.max(dates.min(value, max), min)\n}\n\nconst propTypes = {\n /**\n * @example ['disabled', ['new Date()']]\n */\n disabled: PropTypes.bool,\n /**\n * @example ['readOnly', ['new Date()']]\n */\n readOnly: PropTypes.bool,\n\n /**\n * @example ['onChangePicker', [ ['new Date()'] ]]\n */\n onChange: PropTypes.func,\n\n /**\n * The selected Date.\n *\n * ```tsx live\n * import { Calendar } from 'react-widgets';\n *\n * <Calendar value={new Date()} />\n * ```\n * @example false\n */\n value: PropTypes.instanceOf(Date),\n\n /**\n * The minimum date that the Calendar can navigate from.\n *\n * @example ['prop', ['min', 'new Date()']]\n */\n min: PropTypes.instanceOf(Date),\n\n /**\n * The maximum date that the Calendar can navigate to.\n *\n * @example ['prop', ['max', 'new Date()']]\n */\n max: PropTypes.instanceOf(Date),\n\n /**\n * Default current date at which the calendar opens. If none is provided, opens at today's date or the `value` date (if any).\n */\n currentDate: PropTypes.instanceOf(Date),\n\n /**\n * Change event Handler that is called when the currentDate is changed. The handler is called with the currentDate object.\n */\n onCurrentDateChange: PropTypes.func,\n\n /** Specify the navigate into the past header icon */\n navigatePrevIcon: PropTypes.node,\n\n /** Specify the navigate into the future header icon */\n navigateNextIcon: PropTypes.node,\n\n /**\n * Controls the currently displayed calendar view. Use `defaultView` to set a unique starting view.\n *\n * @type {(\"month\"|\"year\"|\"decade\"|\"century\")}\n * @controllable onViewChange\n */\n view(props: any, ...args: any[]) {\n // @ts-ignore\n return PropTypes.oneOf(props.views || VIEW_OPTIONS)(props, ...args)\n },\n\n /**\n * Defines a list of views the Calendar can traverse through, starting with the\n * first in the list to the last.\n *\n * @type array<\"month\"|\"year\"|\"decade\"|\"century\">\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(VIEW_OPTIONS)),\n\n /**\n * A callback fired when the `view` changes.\n *\n * @controllable view\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback fired when the Calendar navigates between views, or forward and backwards in time.\n *\n * @type function(date: ?Date, direction: string, view: string)\n */\n onNavigate: PropTypes.func,\n culture: PropTypes.string,\n autoFocus: PropTypes.bool,\n\n /**\n * Show or hide the Calendar footer.\n *\n * @example ['prop', ['footer', true]]\n */\n footer: PropTypes.bool,\n\n /**\n * Provide a custom component to render the days of the month. The Component is provided the following props\n *\n * - `date`: a `Date` object for the day of the month to render\n * - `label`: a formatted `string` of the date to render. To adjust the format of the `label` string use the `dateFormat` prop, listed below.\n */\n renderDay: PropTypes.func,\n\n formats: PropTypes.shape({\n /**\n * A formatter for the header button of the month view.\n *\n * @example ['dateFormat', ['headerFormat', \"{ date: 'medium' }\"]]\n */\n header: PropTypes.any,\n\n /**\n * A formatter for the Calendar footer, formats today's Date as a string.\n *\n * @example ['dateFormat', ['footerFormat', \"{ date: 'medium' }\", \"date => 'Today is: ' + formatter(date)\"]]\n */\n footer: PropTypes.any,\n\n /**\n * A formatter calendar days of the week, the default formats each day as a Narrow name: \"Mo\", \"Tu\", etc.\n *\n * @example ['prop', { day: \"day => \\n['🎉', 'M', 'T','W','Th', 'F', '🎉'][day.getDay()]\" }]\n */\n day: PropTypes.any,\n\n /**\n * A formatter for day of the month\n *\n * @example ['prop', { date: \"dt => String(dt.getDate())\" }]\n */\n date: PropTypes.any,\n\n /**\n * A formatter for month name.\n *\n * @example ['dateFormat', ['monthFormat', \"{ raw: 'MMMM' }\", null, { defaultView: '\"year\"' }]]\n */\n month: PropTypes.any,\n\n /**\n * A formatter for month name.\n *\n * @example ['dateFormat', ['yearFormat', \"{ raw: 'yy' }\", null, { defaultView: '\"decade\"' }]]\n */\n year: PropTypes.any,\n\n /**\n * A formatter for decade, the default formats the first and last year of the decade like: 2000 - 2009.\n */\n decade: PropTypes.any,\n\n /**\n * A formatter for century, the default formats the first and last year of the century like: 1900 - 1999.\n */\n century: PropTypes.any,\n }),\n\n messages: PropTypes.shape({\n moveBack: PropTypes.string,\n moveForward: PropTypes.string,\n }),\n\n onKeyDown: PropTypes.func,\n\n /** @ignore */\n tabIndex: PropTypes.any,\n}\n\nconst useViewState = (views: View[], view = views[0], currentDate: Date) => {\n const lastView = useRef(view)\n const lastDate = useRef(currentDate)\n\n let slideDirection: SlideDirection\n if (view !== lastView.current) {\n slideDirection =\n views.indexOf(lastView.current) > views.indexOf(view) ? 'top' : 'bottom'\n } else if (lastDate.current !== currentDate) {\n slideDirection = dates.gt(currentDate, lastDate.current) ? 'left' : 'right'\n }\n\n useEffect(() => {\n lastDate.current = currentDate\n lastView.current = view\n })\n\n return slideDirection!\n}\n\ntype View = 'month' | 'year' | 'decade' | 'century'\n\nexport interface CalendarProps<TLocalizer = unknown>\n extends WidgetHTMLProps,\n WidgetProps {\n bordered?: boolean\n views?: View[]\n disabled?: boolean\n readOnly?: boolean\n\n value?: Date | null\n defaultValue?: Date\n onChange?: (nextValue: Date) => void\n\n min?: Date\n max?: Date\n\n view?: View\n defaultView?: View\n onViewChange?: (nextView: View) => void\n\n currentDate?: Date\n defaultCurrentDate?: Date\n onCurrentDateChange?: (nextDate: Date) => void\n\n onNavigate?: (\n date: Date,\n slideDirection: SlideDirection,\n nextView: View,\n ) => void\n renderDay?: RenderDayProp\n formats?: DateFormats<InferFormat<TLocalizer>>\n\n messages?: {\n moveBack?: string\n moveForward?: string\n moveToday?: string\n }\n}\n\n/**\n * @public\n */\nfunction Calendar({\n id,\n autoFocus,\n bordered = true,\n views = VIEW_OPTIONS,\n tabIndex = 0,\n disabled,\n readOnly,\n className,\n\n value,\n defaultValue,\n onChange,\n\n currentDate: pCurrentDate,\n defaultCurrentDate,\n onCurrentDateChange,\n\n min = MIN,\n max = MAX,\n\n view,\n defaultView = views[0],\n onViewChange,\n\n onKeyDown,\n onNavigate,\n renderDay,\n messages,\n formats,\n ...elementProps\n}: CalendarProps) {\n const [currentValue, handleChange] = useUncontrolledProp(\n value,\n defaultValue,\n onChange,\n )\n const [currentDate, handleCurrentDateChange] = useUncontrolledProp(\n pCurrentDate,\n defaultCurrentDate || currentValue || new Date(),\n onCurrentDateChange,\n )\n const [currentView, handleViewChange] = useUncontrolledProp(\n view,\n defaultView,\n onViewChange,\n )\n\n const localizer = useLocalizer(messages, formats)\n const ref = useRef<HTMLDivElement>(null)\n\n const viewId = useInstanceId(id, '_calendar')\n const labelId = useInstanceId(id, '_calendar_label')\n\n useAutoFocus(!!autoFocus, ref)\n\n const slideDirection = useViewState(views, currentView, currentDate!)\n\n const [, focused] = useFocusManager(\n ref,\n { disabled },\n {\n willHandle() {\n if (tabIndex == -1) return false\n },\n },\n )\n\n const lastValue = useRef(currentValue)\n useEffect(() => {\n const inValue = inRangeValue(currentValue, min, max)\n const last = lastValue.current\n lastValue.current = currentValue\n\n if (!dates.eq(inValue, dateOrNull(last), VIEW_UNIT[currentView]))\n maybeSetCurrentDate(inValue)\n })\n\n const isDisabled = disabled || readOnly\n\n /**\n * Handlers\n */\n\n const handleViewChangeImpl = () => {\n navigate('UP')\n }\n\n const handleMoveBack = () => {\n navigate('LEFT')\n }\n\n const handleMoveForward = () => {\n navigate('RIGHT')\n }\n\n const handleDateChange = (date: Date) => {\n if (views[0] === currentView) {\n maybeSetCurrentDate(date)\n\n notify(handleChange, [date])\n\n focus()\n return\n }\n\n navigate('DOWN', date)\n }\n\n const handleMoveToday = () => {\n let date = new Date()\n let firstView = views[0]\n\n notify(onChange, [date])\n\n if (dates.inRange(date, min, max, firstView)) {\n focus()\n maybeSetCurrentDate(date)\n notify(handleViewChange, [firstView])\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n let ctrl = e.ctrlKey || e.metaKey\n let key = e.key\n let direction: Direction = ARROWS_TO_DIRECTION[\n key as keyof typeof ARROWS_TO_DIRECTION\n ] as Direction\n let unit = VIEW_UNIT[currentView]\n\n if (key === 'Enter') {\n e.preventDefault()\n return handleDateChange(currentDate)\n }\n\n if (direction) {\n if (ctrl) {\n e.preventDefault()\n navigate(direction)\n } else {\n const isRTL =\n getComputedStyle(e.currentTarget).getPropertyValue('direction') ===\n 'rtl'\n\n if (isRTL && direction in OPPOSITE_DIRECTION)\n direction = OPPOSITE_DIRECTION[direction as 'LEFT' | 'RIGHT']\n\n let nextDate = Calendar.move(\n currentDate,\n min,\n max,\n currentView,\n direction,\n )\n\n if (!dates.eq(currentDate, nextDate, unit)) {\n e.preventDefault()\n\n if (dates.gt(nextDate, currentDate, currentView))\n navigate('RIGHT', nextDate)\n else if (dates.lt(nextDate, currentDate, currentView))\n navigate('LEFT', nextDate)\n else maybeSetCurrentDate(nextDate)\n }\n }\n }\n\n notify(onKeyDown, [e])\n }\n\n function navigate(direction: Direction, date?: Date) {\n let nextView = currentView\n let slideDir: SlideDirection =\n direction === 'LEFT' || direction === 'UP' ? 'right' : 'left'\n\n if (direction === 'UP')\n nextView = views[views.indexOf(currentView) + 1] || nextView\n\n if (direction === 'DOWN')\n nextView = views[views.indexOf(currentView) - 1] || nextView\n\n if (!date)\n date =\n ['LEFT', 'RIGHT'].indexOf(direction) !== -1\n ? nextDate(direction)\n : currentDate\n\n if (dates.inRange(date!, min, max, nextView)) {\n notify(onNavigate, [date!, slideDir, nextView])\n\n //this.focus()\n maybeSetCurrentDate(date)\n notify(handleViewChange, [nextView])\n }\n }\n\n const focus = () => {\n const node = ref.current?.querySelector(FOCUSED_CELL_SELECTOR) as any\n node?.focus()\n }\n\n const moveFocus = (node: HTMLElement, hadFocus: boolean) => {\n let current = document.activeElement\n\n if (hadFocus && (!current || !node.contains(current))) {\n node.focus()\n }\n }\n\n function maybeSetCurrentDate(date: Date | null | undefined) {\n let inRangeDate = inRangeValue(\n date ? new Date(date) : currentDate,\n min,\n max,\n )\n\n if (\n date === currentDate ||\n dates.eq(inRangeDate, dateOrNull(currentDate), VIEW_UNIT[currentView])\n )\n return\n\n notify(handleCurrentDateChange, [inRangeDate!])\n }\n\n function nextDate(direction: Direction) {\n let method = direction === 'LEFT' ? 'subtract' : 'add'\n\n let unit = currentView === 'month' ? currentView : 'year'\n let multi = (MULTIPLIER as any)[currentView] || 1\n\n return (dates as any)[method](currentDate, 1 * multi, unit)\n }\n\n function getHeaderLabel() {\n switch (currentView) {\n case 'month':\n return localizer.formatDate(currentDate, 'header')\n\n case 'year':\n return localizer.formatDate(currentDate, 'year')\n\n case 'decade':\n return localizer.formatDate(\n dates.startOf(currentDate, 'decade'),\n 'decade',\n )\n case 'century':\n return localizer.formatDate(\n dates.startOf(currentDate, 'century'),\n 'century',\n )\n }\n }\n\n let View = VIEW[currentView]\n let todayNotInRange = !dates.inRange(new Date(), min, max, currentView!)\n\n let key = currentView + '_' + dates[currentView](currentDate)\n\n // let elementProps = Props.pickElementProps(this),\n // let viewProps = pick(uncontrolledProps, View)\n\n const prevDisabled =\n isDisabled || !dates.inRange(nextDate('LEFT'), min, max, currentView!)\n\n const nextDisabled =\n isDisabled || !dates.inRange(nextDate('RIGHT'), min, max, currentView!)\n\n return (\n <Widget\n {...elementProps}\n role=\"group\"\n ref={ref}\n focused={focused}\n disabled={disabled}\n readOnly={readOnly}\n tabIndex={tabIndex}\n className={cn(\n className,\n 'rw-calendar',\n bordered && 'rw-calendar-contained',\n )}\n >\n <CalendarHeader\n label={getHeaderLabel()}\n labelId={labelId}\n localizer={localizer}\n upDisabled={isDisabled || currentView === last(views)}\n prevDisabled={prevDisabled}\n todayDisabled={isDisabled || todayNotInRange}\n nextDisabled={nextDisabled}\n onViewChange={handleViewChangeImpl}\n onMoveLeft={handleMoveBack}\n onMoveRight={handleMoveForward}\n onMoveToday={handleMoveToday}\n />\n <Calendar.Transition\n direction={slideDirection}\n onTransitionEnd={moveFocus}\n >\n <View\n key={key}\n min={min}\n max={max}\n id={viewId}\n value={currentValue}\n localizer={localizer}\n disabled={isDisabled}\n focusedItem={currentDate}\n onChange={handleDateChange}\n onKeyDown={handleKeyDown}\n aria-labelledby={labelId}\n renderDay={renderDay}\n />\n </Calendar.Transition>\n </Widget>\n )\n}\n\nfunction dateOrNull(dt?: Date | null) {\n if (dt && !isNaN(dt.getTime())) return dt\n return null\n}\n\nCalendar.displayName = 'Calendar'\n\nCalendar.propTypes = propTypes\n\n// Calendar.defaultProps = {\n// min: new Date(1900, 0, 1),\n// max: new Date(2099, 11, 31),\n// views: VIEW_OPTIONS,\n// tabIndex: '0',\n// }\n\nCalendar.Transition = SlideTransitionGroup\n\nCalendar.move = (\n date: Date,\n min: Date,\n max: Date,\n view: View,\n direction: Direction,\n) => {\n let isMonth = view === 'month'\n let isUpOrDown = direction === 'UP' || direction === 'DOWN'\n let rangeUnit = view && VIEW_UNIT[view]\n let addUnit = isMonth && isUpOrDown ? 'week' : VIEW_UNIT[view]\n let amount = isMonth || !isUpOrDown ? 1 : 4\n let newDate\n\n if (direction === 'UP' || direction === 'LEFT') amount *= -1\n\n newDate = dates.add(date, amount, addUnit)\n\n return dates.inRange(newDate, min, max, rangeUnit) ? newDate : date\n}\n\nexport default Calendar\n","import cn from 'classnames'\nimport * as React from 'react'\nimport { ReactNode } from 'react'\nimport Button from './Button'\n\nexport interface Props extends React.HTMLProps<HTMLButtonElement> {\n label?: string\n icon?: ReactNode\n busy?: boolean\n spinner?: ReactNode\n children?: ReactNode\n}\n\nfunction CalendarButton({ className, ...props }: Props) {\n return (\n <Button\n {...props}\n tabIndex={undefined}\n className={cn(className, 'rw-calendar-btn')}\n />\n )\n}\n\nexport default CalendarButton\n","import React from 'react'\nimport CalendarButton from './CalendarButton'\nimport { caretDown, chevronLeft, chevronRight } from './Icon'\nimport { Localizer } from './Localization'\n\ninterface Props {\n label: string\n labelId?: string\n\n upDisabled: boolean\n prevDisabled: boolean\n todayDisabled: boolean\n nextDisabled: boolean\n onViewChange: () => void\n onMoveLeft: () => void\n onMoveToday: () => void\n onMoveRight: () => void\n\n navigatePrevIcon?: React.ReactNode\n navigateNextIcon?: React.ReactNode\n\n localizer: Localizer\n isRtl?: boolean\n}\n\nfunction CalendarHeader({\n localizer,\n label,\n labelId,\n onMoveRight,\n onMoveToday,\n onMoveLeft,\n onViewChange,\n prevDisabled,\n todayDisabled,\n upDisabled,\n nextDisabled,\n navigatePrevIcon = chevronLeft,\n navigateNextIcon = chevronRight,\n}: Props) {\n return (\n <div className=\"rw-calendar-header\">\n <CalendarButton\n id={labelId}\n onClick={onViewChange}\n className=\"rw-calendar-btn-view\"\n disabled={upDisabled}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {label} {caretDown}\n </CalendarButton>\n <CalendarButton\n className=\"rw-calendar-btn-left\"\n onClick={onMoveLeft}\n disabled={prevDisabled}\n label={localizer.messages.moveBack()}\n icon={navigatePrevIcon}\n />\n <CalendarButton\n className=\"rw-calendar-btn-today\"\n disabled={todayDisabled}\n onClick={onMoveToday}\n >\n {localizer.messages.moveToday()}\n </CalendarButton>\n <CalendarButton\n className=\"rw-calendar-btn-right\"\n onClick={onMoveRight}\n disabled={nextDisabled}\n label={localizer.messages.moveForward()}\n icon={navigateNextIcon}\n />\n </div>\n )\n}\n\nexport default CalendarHeader\n","import cn from 'classnames'\nimport React, { ReactNode, useEffect, useRef } from 'react'\nimport dates from './dates'\nimport useFocusManager from './useFocusManager'\n\nexport type DateUnit =\n | 'second'\n | 'minutes'\n | 'hours'\n | 'day'\n | 'week'\n | 'month'\n | 'year'\n | 'decade'\n | 'century'\n\nfunction clamp(date: Date, min: Date, max: Date) {\n return dates.max(dates.min(date, max), min)\n}\n\nexport interface CalendarViewProps {\n id: string\n className?: string\n children?: ReactNode\n focusedItem: Date\n onKeyDown: React.KeyboardEventHandler<HTMLTableElement>\n 'aria-labelledby': string\n}\n\nfunction CalendarView({\n className,\n focusedItem,\n onKeyDown,\n children,\n 'aria-labelledby': labelledby,\n}: CalendarViewProps) {\n const ref = useRef<HTMLTableElement>(null)\n const [focusEvents, focused] = useFocusManager(ref)\n\n useEffect(() => {\n const node = ref.current\n if (!node || !focused) return\n\n node.querySelector<HTMLElement>('.rw-cell[tabindex]')?.focus()\n }, [focusedItem, focused, ref])\n\n return (\n <div\n role=\"grid\"\n ref={ref}\n tabIndex={-1}\n {...focusEvents}\n onKeyDown={onKeyDown}\n aria-labelledby={labelledby}\n className={cn(className, 'rw-nav-view', 'rw-calendar-grid')}\n >\n {children}\n </div>\n )\n}\n\ninterface CellProps {\n onChange(date: Date): void\n now?: Date\n min: Date\n max: Date\n date: Date\n unit: DateUnit\n disabled?: boolean\n selected?: Date | null\n focusedItem?: Date\n viewUnit: 'month' | 'year' | 'decade' | 'century'\n children?: ReactNode\n label: string\n}\n\nfunction CalendarViewCell({\n onChange,\n min,\n max,\n date,\n unit,\n disabled,\n selected,\n focusedItem,\n viewUnit,\n children,\n label,\n}: CellProps) {\n const isEqual = (nextDate: Date | undefined) => dates.eq(date, nextDate, unit)\n\n const isEmpty = !dates.inRange(date, min, max, unit)\n const isDisabled = disabled || isEmpty\n\n // const isNow = now && isEqual(now)\n\n const isFocused = !disabled && !isEmpty && isEqual(focusedItem)\n const isSelected = selected && isEqual(selected)\n\n const isOffView =\n date &&\n focusedItem &&\n viewUnit &&\n dates[viewUnit](date) !== dates[viewUnit](focusedItem)\n\n const handleChange = () => {\n onChange(clamp(date, min, max))\n }\n\n return (\n <div\n role=\"gridcell\"\n title={label}\n aria-label={label}\n aria-readonly={disabled}\n aria-selected={Boolean(isSelected)}\n tabIndex={isFocused ? 0 : void 0}\n onClick={!isDisabled ? handleChange : undefined}\n className={cn(\n 'rw-cell',\n // isNow && 'rw-now',\n isDisabled && 'rw-state-disabled',\n isEmpty && 'rw-cell-not-allowed',\n isOffView && 'rw-cell-off-range',\n isSelected && 'rw-state-selected',\n )}\n >\n <span aria-hidden>{children}</span>\n </div>\n )\n}\n\nCalendarView.Body = (\n props: React.AllHTMLAttributes<HTMLTableSectionElement>,\n) => <div role=\"rowgroup\" className=\"rw-calendar-body\" {...props} />\n\nCalendarView.Row = (props: React.AllHTMLAttributes<HTMLTableRowElement>) => (\n <div role=\"row\" className=\"rw-calendar-row\" {...props} />\n)\nCalendarView.Cell = CalendarViewCell\n\nexport default CalendarView\n","import React, { useMemo } from 'react'\nimport CalendarView, { CalendarViewProps } from './CalendarView'\nimport { Localizer } from './Localization'\nimport { chunk } from './_'\nimport dates from './dates'\n\ninterface CenturyProps extends CalendarViewProps {\n disabled?: boolean\n onChange: (nextDate: Date) => void\n value?: Date | null\n min: Date\n max: Date\n localizer: Localizer\n}\n\nfunction CenturyView({\n focusedItem,\n disabled,\n onChange,\n value,\n localizer,\n min,\n max,\n ...props\n}: CenturyProps) {\n const chunks = useMemo(() => chunk(getCenturyDecades(focusedItem), 4), [\n focusedItem,\n ])\n\n return (\n <CalendarView {...props} focusedItem={focusedItem}>\n <CalendarView.Body>\n {chunks.map((row, rowIdx) => (\n <CalendarView.Row key={rowIdx}>\n {row.map((date, colIdx) => {\n let label = localizer.formatDate(\n dates.startOf(date, 'decade'),\n 'decade',\n )\n\n return (\n <CalendarView.Cell\n key={colIdx}\n unit=\"decade\"\n viewUnit=\"century\"\n label={label}\n date={date}\n min={min}\n max={max}\n onChange={onChange}\n focusedItem={focusedItem}\n selected={value}\n disabled={disabled}\n >\n {label}\n </CalendarView.Cell>\n )\n })}\n </CalendarView.Row>\n ))}\n </CalendarView.Body>\n </CalendarView>\n )\n}\n\nfunction getCenturyDecades(_date: Date) {\n let days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n let date = dates.add(dates.startOf(_date, 'century'), -20, 'year')\n\n return days.map(() => (date = dates.add(date, 10, 'year')))\n}\n\nexport default CenturyView\n","import cn from 'classnames'\nimport * as PropTypes from 'prop-types'\nimport * as React from 'react'\nimport { useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { useUncontrolledProp } from 'uncontrollable'\nimport { caretDown } from './Icon'\nimport Input from './Input'\nimport List, { ListHandle } from './List'\nimport { FocusListContext, useFocusList } from './FocusListContext'\nimport BasePopup from './Popup'\nimport InputAddon from './InputAddon'\nimport Widget from './Widget'\nimport WidgetPicker from './WidgetPicker'\nimport { useMessagesWithDefaults } from './messages'\nimport {\n BaseListboxInputProps,\n ChangeHandler,\n Filterable,\n PopupWidgetProps,\n SelectHandler,\n WidgetHTMLProps,\n WidgetProps,\n} from './shared'\nimport { DataItem, WidgetHandle } from './types'\nimport { useActiveDescendant } from './A11y'\nimport * as CustomPropTypes from './PropTypes'\nimport { TextAccessorFn, useAccessors } from './Accessors'\nimport { useFilteredData } from './Filter'\nimport useDropdownToggle from './useDropdownToggle'\nimport useFocusManager from './useFocusManager'\nimport { notify, useFirstFocusedRender, useInstanceId } from './WidgetHelpers'\nimport { Spinner } from './Icon'\n\nfunction indexOf<TDataItem>(\n data: readonly TDataItem[],\n searchTerm: string,\n text: TextAccessorFn,\n) {\n if (!searchTerm.trim()) return -1\n for (let idx = 0; idx < data.length; idx++)\n if (text(data[idx]).toLowerCase() === searchTerm) return idx\n return -1\n}\n\nlet propTypes = {\n value: PropTypes.any,\n onChange: PropTypes.func,\n open: PropTypes.bool,\n onToggle: PropTypes.func,\n\n renderListItem: PropTypes.func,\n listComponent: PropTypes.elementType,\n\n renderListGroup: PropTypes.func,\n groupBy: CustomPropTypes.accessor,\n\n data: PropTypes.array,\n dataKey: CustomPropTypes.accessor,\n textField: CustomPropTypes.accessor,\n name: PropTypes.string,\n\n /** Do not show the auto complete list when it returns no results. */\n hideEmptyPopup: PropTypes.bool,\n\n /** Hide the combobox dropdown indicator. */\n hideCaret: PropTypes.bool,\n\n /**\n *\n * @type {(dataItem: ?any, metadata: { originalEvent: SyntheticEvent }) => void}\n */\n onSelect: PropTypes.func,\n\n autoFocus: PropTypes.bool,\n\n disabled: CustomPropTypes.disabled.acceptsArray,\n\n readOnly: CustomPropTypes.disabled,\n\n busy: PropTypes.bool,\n\n /** Specify the element used to render the select (down arrow) icon. */\n selectIcon: PropTypes.node,\n\n /** Specify the element used to render the busy indicator */\n busySpinner: PropTypes.node,\n\n dropUp: PropTypes.bool,\n popupTransition: PropTypes.elementType,\n\n placeholder: PropTypes.string,\n\n /** Adds a css class to the input container element. */\n containerClassName: PropTypes.string,\n\n inputProps: PropTypes.object,\n listProps: PropTypes.object,\n\n messages: PropTypes.shape({\n openCombobox: CustomPropTypes.message,\n emptyList: CustomPropTypes.message,\n emptyFilter: CustomPropTypes.message,\n }),\n}\n\nexport type ComboboxHandle = WidgetHandle\n\nexport interface ComboboxProps<TDataItem = DataItem>\n extends WidgetHTMLProps,\n WidgetProps,\n PopupWidgetProps,\n Filterable<TDataItem>,\n BaseListboxInputProps<TDataItem, string | TDataItem> {\n name?: string\n\n /**\n * If a `data` item matches the current typed value select it automatically.\n */\n autoSelectMatches?: boolean\n onChange?: ChangeHandler<TDataItem | string>\n onSelect?: SelectHandler<TDataItem | string>\n\n hideCaret?: boolean\n hideEmptyPopup?: boolean\n}\n\ndeclare interface Combobox {\n <TDataItem = DataItem>(\n props: ComboboxProps<TDataItem> & React.RefAttributes<ComboboxHandle>,\n ): React.ReactElement | null\n\n displayName?: string\n propTypes?: any\n}\n\n/**\n * ---\n * shortcuts:\n * - { key: alt + down arrow, label: open combobox }\n * - { key: alt + up arrow, label: close combobox }\n * - { key: down arrow, label: move focus to next item }\n * - { key: up arrow, label: move focus to previous item }\n * - { key: home, label: move focus to first item }\n * - { key: end, label: move focus to last item }\n * - { key: enter, label: select focused item }\n * - { key: any key, label: search list for item starting with key }\n * ---\n *\n * Select an item from the list, or input a custom value. The Combobox can also make suggestions as you type.\n\n * @public\n */\nconst ComboboxImpl: Combobox = React.forwardRef(function Combobox<TDataItem>(\n {\n id,\n className,\n containerClassName,\n placeholder,\n autoFocus,\n\n textField,\n dataKey,\n autoSelectMatches,\n\n focusFirstItem = false,\n\n value,\n defaultValue = '',\n onChange,\n\n open,\n defaultOpen = false,\n onToggle,\n\n filter = true,\n busy,\n disabled,\n readOnly,\n selectIcon = caretDown,\n hideCaret,\n hideEmptyPopup,\n busySpinner,\n dropUp,\n tabIndex,\n popupTransition,\n name,\n onSelect,\n onKeyDown,\n onBlur,\n onFocus,\n inputProps,\n listProps,\n groupBy,\n renderListItem,\n renderListGroup,\n optionComponent,\n listComponent: ListComponent = List,\n popupComponent: Popup = BasePopup,\n data: rawData = [],\n messages: userMessages,\n ...elementProps\n }: ComboboxProps<TDataItem>,\n outerRef: React.RefObject<ComboboxHandle>,\n) {\n let [currentValue, handleChange] = useUncontrolledProp(\n value,\n defaultValue,\n onChange,\n )\n const [currentOpen, handleOpen] = useUncontrolledProp(\n open,\n defaultOpen,\n onToggle,\n )\n\n const ref = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const listRef = useRef<ListHandle>(null)\n\n const [suggestion, setSuggestion] = useState<TDataItem | null>(null)\n const shouldFilter = useRef(false)\n\n const inputId = useInstanceId(id, '_input')\n const listId = useInstanceId(id, '_listbox')\n const activeId = useInstanceId(id, '_listbox_active_option')\n\n const accessors = useAccessors(textField, dataKey)\n const messages = useMessagesWithDefaults(userMessages)\n const toggle = useDropdownToggle(currentOpen, handleOpen)\n\n const isDisabled = disabled === true\n const isReadOnly = !!readOnly\n\n const data = useFilteredData(\n rawData,\n filter,\n shouldFilter.current ? accessors.text(currentValue) : void 0,\n accessors.text,\n )\n\n const selectedItem = useMemo(\n () => data[accessors.indexOf(data, currentValue)],\n [data, currentValue, accessors],\n )\n\n const list = useFocusList<TDataItem>({\n activeId,\n scope: ref,\n focusFirstItem,\n anchorItem: currentOpen ? selectedItem : undefined,\n })\n\n const [focusEvents, focused] = useFocusManager(\n ref,\n { disabled: isDisabled, onBlur, onFocus },\n {\n didHandle(focused) {\n if (!focused) {\n shouldFilter.current = false\n toggle.close()\n setSuggestion(null)\n list.focus(undefined)\n } else {\n focus({ preventScroll: true })\n }\n },\n },\n )\n\n useActiveDescendant(ref, activeId, currentOpen, [list.getFocused()])\n\n /**\n * Handlers\n */\n\n const handleClick = (e: React.MouseEvent) => {\n if (readOnly || isDisabled) return\n\n // prevents double clicks when in a <label>\n e.preventDefault()\n\n focus()\n toggle()\n }\n\n const handleSelect = (\n data: string | TDataItem,\n originalEvent: React.SyntheticEvent,\n ) => {\n toggle.close()\n shouldFilter.current = false\n\n setSuggestion(null)\n notify(onSelect, [data, { originalEvent }])\n change(data, originalEvent, true)\n focus({ preventScroll: true })\n }\n\n const handleInputKeyDown = ({\n key,\n }: React.KeyboardEvent<HTMLInputElement>) => {\n if (key === 'Backspace' || key === 'Delete') {\n list.focus(null)\n }\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n let idx = autoSelectMatches\n ? indexOf(rawData, event.target.value.toLowerCase(), accessors.text)\n : -1\n\n shouldFilter.current = true\n\n setSuggestion(null)\n\n const nextValue = idx === -1 ? event.target.value : rawData[idx]\n\n change(nextValue, event)\n\n if (!nextValue) toggle.close()\n else toggle.open()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) return\n\n let { key, altKey, shiftKey } = e\n\n notify(onKeyDown, [e])\n\n if (e.defaultPrevented) return\n\n const select = (item: TDataItem | undefined) =>\n item != null && handleSelect(item, e)\n\n const setFocused = (el?: HTMLElement) => {\n if (!el) return\n setSuggestion(list.toDataItem(el)!)\n list.focus(el)\n }\n\n if (key === 'End' && currentOpen && !shiftKey) {\n e.preventDefault()\n setFocused(list.last())\n } else if (key === 'Home' && currentOpen && !shiftKey) {\n e.preventDefault()\n setFocused(list.first())\n } else if (key === 'Escape' && currentOpen) {\n e.preventDefault()\n setSuggestion(null)\n toggle.close()\n } else if (key === 'Enter' && currentOpen) {\n e.preventDefault()\n select(list.getFocused()!)\n } else if (key === 'ArrowDown') {\n e.preventDefault()\n if (currentOpen) {\n setFocused(list.next())\n } else {\n return toggle.open()\n }\n } else if (key === 'ArrowUp') {\n e.preventDefault()\n if (altKey) return toggle.close()\n\n if (currentOpen) {\n setFocused(list.prev())\n }\n }\n }\n\n /**\n * Methods\n */\n\n function focus(opts?: FocusOptions) {\n if (inputRef.current) inputRef.current.focus(opts)\n }\n\n function change(\n nextValue: TDataItem | string,\n originalEvent?: React.SyntheticEvent,\n selected = false,\n ) {\n handleChange(nextValue, {\n lastValue: currentValue,\n originalEvent,\n source: selected ? 'listbox' : 'input',\n })\n }\n\n /**\n * Rendering\n */\n\n useImperativeHandle(outerRef, () => ({\n focus,\n }))\n\n let shouldRenderPopup = useFirstFocusedRender(focused, currentOpen!)\n\n let valueItem = accessors.findOrSelf(data, currentValue)\n let inputValue = accessors.text(suggestion || valueItem)\n\n let completeType = filter ? ('list' as const) : ('none' as const)\n\n let popupOpen = currentOpen && (!hideEmptyPopup || !!data.length)\n let inputReadOnly =\n // @ts-ignore\n inputProps?.readOnly != null ? inputProps?.readOnly : readOnly\n\n let inputAddon: React.ReactNode = false\n\n if (!hideCaret) {\n inputAddon = (\n <InputAddon\n busy={busy}\n icon={selectIcon}\n spinner={busySpinner}\n onClick={handleClick}\n disabled={!!isDisabled || isReadOnly}\n // FIXME\n label={messages.openCombobox()}\n />\n )\n } else if (busy) {\n inputAddon = (\n <span aria-hidden=\"true\" className=\"rw-btn rw-picker-caret\">\n {busySpinner || Spinner}\n </span>\n )\n }\n\n return (\n <Widget\n {...elementProps}\n ref={ref}\n open={currentOpen}\n dropUp={dropUp}\n focused={focused}\n disabled={isDisabled}\n readOnly={isReadOnly}\n {...focusEvents}\n onKeyDown={handleKeyDown}\n className={cn(className, 'rw-combobox')}\n >\n <WidgetPicker\n className={cn(\n containerClassName,\n hideCaret && 'rw-widget-input',\n hideCaret && !busy && 'rw-hide-caret',\n )}\n >\n <Input\n {...inputProps}\n role=\"combobox\"\n name={name}\n id={inputId}\n className={cn(\n // @ts-ignore\n inputProps && inputProps.className,\n 'rw-combobox-input',\n !hideCaret && 'rw-widget-input',\n )}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n disabled={isDisabled}\n readOnly={inputReadOnly}\n aria-busy={!!busy}\n aria-owns={listId}\n aria-autocomplete={completeType}\n aria-expanded={currentOpen}\n aria-haspopup={true}\n placeholder={placeholder}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n ref={inputRef}\n />\n {inputAddon}\n </WidgetPicker>\n <FocusListContext.Provider value={list.context}>\n {shouldRenderPopup && (\n <Popup\n dropUp={dropUp}\n open={popupOpen}\n transition={popupTransition}\n onEntering={() => listRef.current!.scrollIntoView()}\n >\n <ListComponent\n {...listProps}\n id={listId}\n tabIndex={-1}\n data={data}\n groupBy={groupBy}\n disabled={disabled}\n accessors={accessors}\n renderItem={renderListItem}\n renderGroup={renderListGroup}\n optionComponent={optionComponent}\n value={selectedItem}\n searchTerm={(valueItem && accessors.text(valueItem)) || ''}\n aria-hidden={!popupOpen}\n aria-labelledby={inputId}\n aria-live={popupOpen ? 'polite' : void 0}\n onChange={(d, meta) =>\n handleSelect(d as TDataItem, meta.originalEvent!)\n }\n ref={listRef}\n messages={{\n emptyList: rawData.length\n ? messages.emptyFilter\n : messages.emptyList,\n }}\n />\n </Popup>\n )}\n </FocusListContext.Provider>\n </Widget>\n )\n})\n\nComboboxImpl.displayName = 'Combobox'\nComboboxImpl.propTypes = propTypes\n\nexport default ComboboxImpl\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, { useImperativeHandle, useRef, useCallback } from 'react'\nimport { useUncontrolled } from 'uncontrollable'\nimport Calendar, { CalendarProps } from './Calendar'\nimport DatePickerInput, { DatePickerInputProps } from './DatePickerInput'\nimport { calendar } from './Icon'\nimport { useLocalizer, DateFormats } from './Localization'\nimport BasePopup, { PopupProps } from './Popup'\nimport TimeInput, { TimeInputProps } from './TimeInput'\nimport Widget, { WidgetProps } from './Widget'\nimport WidgetPicker from './WidgetPicker'\nimport dates from './dates'\nimport useDropdownToggle from './useDropdownToggle'\nimport useTabTrap from './useTabTrap'\nimport useFocusManager from './useFocusManager'\nimport { notify, useFirstFocusedRender, useInstanceId } from './WidgetHelpers'\n\nimport { TransitionProps } from 'react-transition-group/Transition'\nimport { WidgetHTMLProps, InferFormat } from './shared'\nimport useEventCallback from '@restart/hooks/useEventCallback'\nimport InputAddon from './InputAddon'\n\nlet propTypes = {\n /**\n * @example ['valuePicker', [ ['new Date()', null] ]]\n */\n value: PropTypes.instanceOf(Date),\n\n /**\n * @example ['onChangePicker', [ ['new Date()', null] ]]\n */\n onChange: PropTypes.func,\n\n /**\n * @example ['openDate']\n */\n open: PropTypes.bool,\n onToggle: PropTypes.func,\n\n /**\n * Default current date at which the calendar opens. If none is provided, opens at today's date or the `value` date (if any).\n */\n currentDate: PropTypes.instanceOf(Date),\n\n /**\n * Change event Handler that is called when the currentDate is changed. The handler is called with the currentDate object.\n */\n onCurrentDateChange: PropTypes.func,\n\n onSelect: PropTypes.func,\n\n /**\n * The minimum Date that can be selected. Min only limits selection, it doesn't constrain the date values that\n * can be typed or pasted into the widget. If you need this behavior you can constrain values via\n * the `onChange` handler.\n *\n * @example ['prop', ['min', 'new Date()']]\n */\n min: PropTypes.instanceOf(Date),\n\n /**\n * The maximum Date that can be selected. Max only limits selection, it doesn't constrain the date values that\n * can be typed or pasted into the widget. If you need this behavior you can constrain values via\n * the `onChange` handler.\n *\n * @example ['prop', ['max', 'new Date()']]\n */\n max: PropTypes.instanceOf(Date),\n\n /**\n * A formatting options used to display the date value. This is a shorthand for\n * setting both `valueDisplayFormat` and `valueEditFormat`.\n */\n valueFormat: PropTypes.any,\n\n /**\n * A formatting options used to display the date value. For more information about formats\n * visit the [Localization page](./localization)\n *\n * ```tsx live\n * import { DatePicker } from 'react-widgets';\n *\n * <DatePicker\n * defaultValue={new Date()}\n * valueDisplayFormat={{ dateStyle: \"medium\" }}\n * />\n * ```\n */\n\n valueDisplayFormat: PropTypes.any,\n\n /**\n * A formatting options used while the date input has focus. Useful for showing a simpler format for inputing.\n * For more information about formats visit the [Localization page](./localization)\n *\n * ```tsx live\n * import { DatePicker } from 'react-widgets';\n *\n * <DatePicker\n * defaultValue={new Date()}\n * valueEditFormat={{ dateStyle: \"short\" }}\n * valueDisplayFormat={{ dateStyle: \"medium\" }}\n * />\n * ```\n */\n valueEditFormat: PropTypes.any,\n\n /**\n * Enable the time list component of the picker.\n */\n includeTime: PropTypes.bool,\n\n timePrecision: PropTypes.oneOf(['minutes', 'seconds', 'milliseconds']),\n\n timeInputProps: PropTypes.object,\n\n /** Specify the element used to render the calendar dropdown icon. */\n selectIcon: PropTypes.node,\n\n dropUp: PropTypes.bool,\n\n popupTransition: PropTypes.elementType,\n\n placeholder: PropTypes.string,\n name: PropTypes.string,\n autoFocus: PropTypes.bool,\n /**\n * @example ['disabled', ['new Date()']]\n */\n disabled: PropTypes.bool,\n /**\n * @example ['readOnly', ['new Date()']]\n */\n readOnly: PropTypes.bool,\n\n /**\n * Determines how the widget parses the typed date string into a Date object. You can provide an array of formats to try,\n * or provide a function that returns a date to handle parsing yourself. When `parse` is unspecified and\n * the `format` prop is a `string` parse will automatically use that format as its default.\n */\n parse: PropTypes.oneOfType([PropTypes.any, PropTypes.func]),\n\n /** @ignore */\n tabIndex: PropTypes.any,\n /** @ignore */\n 'aria-labelledby': PropTypes.string,\n /** @ignore */\n 'aria-describedby': PropTypes.string,\n\n /** @ignore */\n localizer: PropTypes.any,\n\n onKeyDown: PropTypes.func,\n onKeyPress: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n\n /** Adds a css class to the input container element. */\n containerClassName: PropTypes.string,\n\n calendarProps: PropTypes.object,\n inputProps: PropTypes.object,\n messages: PropTypes.shape({\n dateButton: PropTypes.string,\n }),\n}\n\nconst defaultProps = {\n ...(Calendar as any).defaultProps,\n\n min: new Date(1900, 0, 1),\n max: new Date(2099, 11, 31),\n selectIcon: calendar,\n formats: {},\n}\n\nexport interface DatePickerProps<TLocalizer = unknown>\n extends Omit<WidgetHTMLProps, 'onChange' | 'defaultValue'>,\n Omit<WidgetProps, 'onChange' | 'onSelect' | 'defaultValue'> {\n /**\n * @example ['valuePicker', [ ['new Date()', null] ]]\n */\n value?: Date | null\n\n defaultValue?: Date | null\n\n /**\n * @example ['onChangePicker', [ ['new Date()', null] ]]\n */\n onChange?: (date: Date | null | undefined, rawValue: string) => void\n\n /**\n * @example ['openDateTime']\n */\n open?: boolean\n onToggle?: (isOpen: boolean) => void\n\n /**\n * Default current date at which the calendar opens. If none is provided, opens at today's date or the `value` date (if any).\n */\n currentDate?: Date\n\n /**\n * Change event Handler that is called when the currentDate is changed. The handler is called with the currentDate object.\n */\n onCurrentDateChange?: () => void\n\n onSelect?: (date: Date | null, rawValue: string) => void\n\n /**\n * The minimum Date that can be selected. Min only limits selection, it doesn't constrain the date values that\n * can be typed or pasted into the widget. If you need this behavior you can constrain values via\n * the `onChange` handler.\n *\n * @example ['prop', ['min', 'new Date()']]\n */\n min?: Date\n\n /**\n * The maximum Date that can be selected. Max only limits selection, it doesn't constrain the date values that\n * can be typed or pasted into the widget. If you need this behavior you can constrain values via\n * the `onChange` handler.\n *\n * @example ['prop', ['max', 'new Date()']]\n */\n max?: Date\n\n /**\n * The amount of minutes between each entry in the time list.\n *\n * @example ['prop', { step: 90 }]\n */\n step?: number\n\n /**\n * Enable the time list component of the picker.\n */\n includeTime?: boolean\n\n timePrecision?: 'minutes' | 'seconds' | 'milliseconds'\n\n timeInputProps?: Partial<TimeInputProps>\n\n /** Specify the element used to render the calendar dropdown icon. */\n selectIcon?: React.ReactNode\n\n /**\n * @example ['prop', { dropUp: true }]\n */\n dropUp?: boolean\n\n popupTransition?: React.ComponentType<TransitionProps>\n popupComponent?: React.ComponentType<PopupProps>\n\n placeholder?: string\n name?: string\n autoFocus?: boolean\n /**\n * @example ['disabled', ['new Date()']]\n */\n disabled?: boolean\n /**\n * @example ['readOnly', ['new Date()']]\n */\n readOnly?: boolean\n\n /**\n * Determines how the widget parses the typed date string into a Date object. You can provide a date format\n * or a function that returns a date to handle parsing yourself. When `parse` is unspecified and\n * the default `localizer.parse` is used and passed the string as well as `valueDisplayFormat` or `valueEditFormat`.\n */\n parse?: string | ((str: string, localizer?: TLocalizer) => Date | undefined)\n\n onKeyDown?: (e: React.KeyboardEvent<HTMLDivElement>) => void\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void\n onBlur?: () => void\n onFocus?: () => void\n\n /** Adds a css class to the input container element. */\n containerClassName?: string\n\n calendarProps?: Partial<CalendarProps>\n inputProps?: Partial<DatePickerInputProps>\n\n valueFormat?: InferFormat<TLocalizer>\n valueDisplayFormat?: InferFormat<TLocalizer>\n valueEditFormat?: InferFormat<TLocalizer>\n\n formats?: DateFormats<InferFormat<TLocalizer>>\n\n messages?: CalendarProps['messages'] & {\n dateButton?: string\n }\n}\n\nexport interface DatePickerHandle {\n focus(): void\n}\n\n/**\n * ---\n * subtitle: DatePicker, TimePicker\n * localized: true\n * shortcuts:\n * - { key: alt + down arrow, label: open calendar or time }\n * - { key: alt + up arrow, label: close calendar or time }\n * - { key: down arrow, label: move focus to next item }\n * - { key: up arrow, label: move focus to previous item }\n * - { key: home, label: move focus to first item }\n * - { key: end, label: move focus to last item }\n * - { key: enter, label: select focused item }\n * - { key: any key, label: search list for item starting with key }\n * ---\n *\n * @public\n * @extends Calendar\n */\nconst DatePicker = React.forwardRef(\n (\n uncontrolledProps: DatePickerProps,\n outerRef: React.Ref<DatePickerHandle>,\n ) => {\n const {\n id,\n value,\n onChange,\n onSelect,\n onToggle,\n onKeyDown,\n onKeyPress,\n onCurrentDateChange,\n inputProps,\n calendarProps,\n timeInputProps,\n autoFocus,\n tabIndex,\n disabled,\n readOnly,\n className,\n // @ts-ignore\n valueFormat,\n valueDisplayFormat = valueFormat,\n valueEditFormat = valueFormat,\n containerClassName,\n name,\n selectIcon,\n placeholder,\n includeTime = false,\n min,\n max,\n open,\n dropUp,\n parse,\n messages,\n formats,\n currentDate,\n popupTransition,\n popupComponent: Popup = BasePopup,\n timePrecision,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n ...elementProps\n } = useUncontrolled(uncontrolledProps, {\n open: 'onToggle',\n value: 'onChange',\n currentDate: 'onCurrentDateChange',\n })\n const localizer = useLocalizer(messages, formats)\n\n const ref = useRef<HTMLInputElement>(null)\n const calRef = useRef<HTMLDivElement>(null)\n\n const tabTrap = useTabTrap(calRef)\n\n const inputId = useInstanceId(id, '_input')\n const dateId = useInstanceId(id, '_date')\n\n const currentFormat = includeTime ? 'datetime' : 'date'\n\n const toggle = useDropdownToggle(open, onToggle!)\n\n const [focusEvents, focused] = useFocusManager(ref, uncontrolledProps, {\n didHandle(focused) {\n if (!focused) {\n toggle.close()\n tabTrap.stop()\n } else if (open) {\n tabTrap.focus()\n }\n },\n })\n\n const dateParser = useCallback(\n (str: string) => {\n if (typeof parse == 'function') {\n return parse(str, localizer) ?? null\n }\n\n return (\n localizer.parseDate(\n str,\n parse ?? valueEditFormat ?? valueDisplayFormat,\n ) ?? null\n )\n },\n [localizer, parse, valueDisplayFormat, valueEditFormat],\n )\n /**\n * Handlers\n */\n\n const handleChange = useEventCallback(\n (date: Date | null | undefined, str: string, constrain?: boolean) => {\n if (readOnly || disabled) return\n if (constrain) date = inRangeValue(date)\n\n if (onChange) {\n if (date == null || value == null) {\n if (\n date != value //eslint-disable-line eqeqeq\n )\n onChange(date, str)\n } else if (!dates.eq(date, value)) {\n onChange(date, str)\n }\n }\n },\n )\n\n const handleKeyDown = useEventCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) return\n\n notify(onKeyDown, [e])\n\n if (e.defaultPrevented) return\n\n if (e.key === 'Escape' && open) {\n toggle.close()\n } else if (e.altKey) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n toggle.open()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n toggle.close()\n }\n }\n },\n )\n\n const handleKeyPress = useEventCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n notify(onKeyPress, [e])\n\n if (e.defaultPrevented) return\n },\n )\n\n const handleDateSelect = useEventCallback((date) => {\n let dateTime = dates.merge(date, value, currentDate)\n let dateStr = formatDate(date)\n\n if (!includeTime) toggle.close()\n\n notify(onSelect, [dateTime, dateStr])\n handleChange(dateTime, dateStr, true)\n ref.current?.focus()\n })\n\n const handleTimeChange = useEventCallback((date) => {\n handleChange(date, formatDate(date), true)\n })\n\n const handleCalendarClick = useEventCallback((e: React.MouseEvent) => {\n if (readOnly || disabled) return\n\n // prevents double clicks when in a <label>\n e.preventDefault()\n toggle()\n })\n\n const handleOpening = () => {\n tabTrap.start()\n requestAnimationFrame(() => {\n tabTrap.focus()\n })\n }\n\n const handleClosing = () => {\n tabTrap.stop()\n if (focused) focus()\n }\n\n /**\n * Methods\n */\n\n function focus() {\n if (open) calRef.current?.focus()\n else ref.current?.focus()\n }\n\n function inRangeValue(value: Date | null | undefined) {\n if (value == null) return value\n\n return dates.max(dates.min(value, max!), min!)\n }\n\n function formatDate(date: Date) {\n return date instanceof Date && !isNaN(date.getTime())\n ? localizer.formatDate(date, currentFormat)\n : ''\n }\n\n useImperativeHandle(outerRef, () => ({\n focus,\n }))\n\n let shouldRenderList = useFirstFocusedRender(focused, open!)\n\n const inputReadOnly =\n inputProps?.readOnly != null ? inputProps?.readOnly : readOnly\n return (\n <Widget\n {...elementProps}\n defaultValue={undefined}\n open={!!open}\n dropUp={dropUp}\n focused={focused}\n disabled={disabled}\n readOnly={readOnly}\n onKeyDown={handleKeyDown}\n onKeyPress={handleKeyPress}\n {...focusEvents}\n className={cn(className, 'rw-date-picker')}\n >\n <WidgetPicker className={containerClassName}>\n <DatePickerInput\n {...inputProps}\n id={inputId}\n ref={ref}\n role=\"combobox\"\n name={name}\n value={value}\n tabIndex={tabIndex}\n autoFocus={autoFocus}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={inputReadOnly}\n formatter={currentFormat}\n displayFormat={valueDisplayFormat}\n editFormat={valueEditFormat}\n editing={focused}\n localizer={localizer}\n parse={dateParser}\n onChange={handleChange}\n aria-haspopup\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n aria-expanded={!!open}\n aria-owns={dateId}\n />\n\n <InputAddon\n icon={selectIcon}\n label={localizer.messages.dateButton()}\n disabled={disabled || readOnly}\n onClick={handleCalendarClick}\n />\n </WidgetPicker>\n\n {!!shouldRenderList && (\n <Popup\n dropUp={dropUp}\n open={open}\n role=\"dialog\"\n ref={calRef}\n id={dateId}\n className=\"rw-calendar-popup\"\n transition={popupTransition}\n onEntering={handleOpening}\n onExited={handleClosing}\n >\n <Calendar\n min={min}\n max={max}\n bordered={false}\n {...calendarProps}\n messages={{\n ...messages,\n ...calendarProps?.messages,\n }}\n tabIndex={-1}\n value={value}\n autoFocus={false}\n onChange={handleDateSelect}\n currentDate={currentDate}\n onCurrentDateChange={onCurrentDateChange}\n aria-hidden={!open}\n aria-live=\"polite\"\n aria-labelledby={inputId}\n />\n {includeTime && (\n <TimeInput\n {...timeInputProps}\n value={value}\n precision={timePrecision}\n onChange={handleTimeChange}\n datePart={currentDate}\n />\n )}\n </Popup>\n )}\n </Widget>\n )\n },\n)\n\nDatePicker.displayName = 'DatePicker'\nDatePicker.propTypes = propTypes as any\nDatePicker.defaultProps = defaultProps\n\nexport default DatePicker\n","import React, { useMemo, useRef, useState } from 'react'\nimport { isNullOrInvalid } from './dates'\nimport Input, { InputProps } from './Input'\nimport { Localizer, RequiredDateMethods } from './Localization'\n\nexport interface DatePickerInputProps<TDateFormat = unknown>\n extends Omit<InputProps, 'value' | 'onChange'> {\n formatter: RequiredDateMethods\n editing: boolean\n editFormat?: TDateFormat\n displayFormat?: TDateFormat\n parse: (str: string) => Date | null\n value?: Date | null\n onChange: (date: Date | null, rawValue: string) => void\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void\n localizer: Localizer<TDateFormat>\n\n disabled?: boolean\n readOnly?: boolean\n}\n\nconst DatePickerInput = React.forwardRef(\n (\n {\n value,\n formatter,\n editing,\n editFormat,\n displayFormat,\n localizer,\n parse,\n onChange,\n onBlur,\n disabled,\n readOnly,\n ...props\n }: DatePickerInputProps,\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const needsFlush = useRef(false)\n\n const nextTextValue = useMemo(\n () =>\n value instanceof Date && isValid(value)\n ? localizer.formatDate(\n value,\n formatter,\n editing ? editFormat : displayFormat,\n )\n : '',\n [value, formatter, localizer, displayFormat, editing, editFormat],\n )\n\n const [prevValue, setPrevValue] = useState(nextTextValue)\n const [textValue, setTextValue] = useState(nextTextValue)\n\n if (prevValue !== nextTextValue) {\n setPrevValue(nextTextValue)\n setTextValue(nextTextValue)\n }\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) onBlur(event)\n\n if (needsFlush.current) {\n let date = parse(event.target.value)\n\n const dateIsInvalid = event.target.value != '' && isNullOrInvalid(date)\n if (dateIsInvalid) {\n setTextValue('')\n }\n needsFlush.current = false\n\n onChange(date, event.target.value)\n }\n }\n\n const handleChange = ({ target }: React.FormEvent<HTMLInputElement>) => {\n needsFlush.current = true\n setTextValue((target as HTMLInputElement).value)\n }\n\n return (\n <Input\n {...props}\n type=\"text\"\n ref={ref}\n className=\"rw-widget-input\"\n value={textValue}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onBlur={handleBlur}\n />\n )\n },\n)\n\nDatePickerInput.displayName = 'DatePickerInput'\n\nexport default DatePickerInput\n\nfunction isValid(d: Date) {\n return !isNaN(d.getTime())\n}\n","import React from 'react'\n\nconst padStart = (\n value: string | number | null | undefined,\n len: number,\n padding: string,\n) => {\n let str = String(value ?? '')\n while (str.length < len) str = padding + str\n return str\n}\n\ninterface Props\n extends Omit<React.HTMLProps<HTMLInputElement>, 'value' | 'onChange'> {\n value: number | undefined | null\n valueText?: string\n pad?: number\n placeholder?: string\n min: number\n max: number\n emptyChar?: string\n onChange: React.ChangeEventHandler<HTMLInputElement>\n}\n\nconst DateTimePartInput = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n value,\n valueText = String(value ?? ''),\n pad,\n placeholder,\n min,\n max,\n emptyChar,\n ...props\n },\n ref,\n ) => (\n <input\n {...props}\n ref={ref}\n data-focusable\n autoComplete=\"off\"\n role=\"spinbutton\"\n aria-valuenow={value ?? void 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={valueText}\n // seems readonly is not valid\n aria-disabled={props.disabled || props.readOnly}\n arai-placeholder={placeholder}\n placeholder={placeholder}\n className=\"rw-time-part-input\"\n value={\n placeholder && !value\n ? ''\n : padStart(value, pad || 0, value == null ? emptyChar! : '0')\n }\n />\n ),\n)\n\nexport default DateTimePartInput\n","import React, { useMemo } from 'react'\nimport CalendarView, { CalendarViewProps } from './CalendarView'\nimport { Localizer } from './Localization'\nimport { chunk } from './_'\nimport dates from './dates'\n\ninterface DecadeProps extends CalendarViewProps {\n disabled?: boolean\n onChange: (nextDate: Date) => void\n value?: Date | null\n min: Date\n max: Date\n localizer: Localizer\n}\n\nfunction DecadeView({\n focusedItem,\n disabled,\n onChange,\n value,\n localizer,\n min,\n max,\n ...props\n}: DecadeProps) {\n const chunks = useMemo(() => chunk(getDecadeYears(focusedItem), 4), [\n focusedItem,\n ])\n\n return (\n <CalendarView {...props} focusedItem={focusedItem}>\n <CalendarView.Body>\n {chunks.map((row, rowIdx) => (\n <CalendarView.Row key={rowIdx}>\n {row.map((date, colIdx) => {\n let label = localizer.formatDate(date, 'year')\n\n return (\n <CalendarView.Cell\n key={colIdx}\n unit=\"year\"\n viewUnit=\"decade\"\n label={label}\n date={date}\n min={min}\n max={max}\n onChange={onChange}\n focusedItem={focusedItem}\n selected={value}\n disabled={disabled}\n >\n {label}\n </CalendarView.Cell>\n )\n })}\n </CalendarView.Row>\n ))}\n </CalendarView.Body>\n </CalendarView>\n )\n}\n\nfunction getDecadeYears(_date: Date) {\n let days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n let date = dates.add(dates.startOf(_date, 'decade'), -2, 'year')\n\n return days.map(() => (date = dates.add(date, 1, 'year')))\n}\n\nexport default DecadeView\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, { useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport { useUncontrolledProp } from 'uncontrollable'\nimport useTimeout from '@restart/hooks/useTimeout'\nimport AddToListOption, { CREATE_OPTION } from './AddToListOption'\nimport DropdownListInput, {\n DropdownInputHandle,\n RenderValueProp,\n} from './DropdownListInput'\nimport { caretDown } from './Icon'\nimport List, { ListHandle } from './List'\nimport { FocusListContext, useFocusList } from './FocusListContext'\nimport BasePopup from './Popup'\nimport Widget from './Widget'\nimport WidgetPicker from './WidgetPicker'\nimport { useMessagesWithDefaults } from './messages'\nimport {\n BaseListboxInputProps,\n Filterable,\n PopupWidgetProps,\n Searchable,\n WidgetHTMLProps,\n WidgetProps,\n} from './shared'\nimport { DataItem, WidgetHandle } from './types'\nimport { useActiveDescendant } from './A11y'\nimport { useFilteredData, presets } from './Filter'\nimport * as CustomPropTypes from './PropTypes'\nimport canShowCreate from './canShowCreate'\nimport { useAccessors } from './Accessors'\nimport useAutoFocus from './useAutoFocus'\nimport useDropdownToggle from './useDropdownToggle'\nimport useFocusManager from './useFocusManager'\nimport { notify, useFirstFocusedRender, useInstanceId } from './WidgetHelpers'\nimport PickerCaret from './PickerCaret'\n\nconst propTypes = {\n value: PropTypes.any,\n\n /**\n * @type {function (\n * dataItems: ?any,\n * metadata: {\n * lastValue: ?any,\n * searchTerm: ?string\n * originalEvent: SyntheticEvent,\n * }\n * ): void}\n */\n onChange: PropTypes.func,\n open: PropTypes.bool,\n onToggle: PropTypes.func,\n\n data: PropTypes.array,\n dataKey: CustomPropTypes.accessor,\n textField: CustomPropTypes.accessor,\n allowCreate: PropTypes.oneOf([true, false, 'onFilter']),\n\n /**\n * A React render prop for customizing the rendering of the DropdownList\n * value\n */\n renderValue: PropTypes.func,\n renderListItem: PropTypes.func,\n listComponent: CustomPropTypes.elementType,\n optionComponent: CustomPropTypes.elementType,\n renderPopup: PropTypes.func,\n\n renderListGroup: PropTypes.func,\n groupBy: CustomPropTypes.accessor,\n\n /**\n *\n * @type {(dataItem: ?any, metadata: { originalEvent: SyntheticEvent }) => void}\n */\n onSelect: PropTypes.func,\n\n onCreate: PropTypes.func,\n\n /**\n * @type function(searchTerm: string, metadata: { action, lastSearchTerm, originalEvent? })\n */\n onSearch: PropTypes.func,\n\n searchTerm: PropTypes.string,\n busy: PropTypes.bool,\n\n /** Specify the element used to render the select (down arrow) icon. */\n selectIcon: PropTypes.node,\n\n /** Specify the element used to render the busy indicator */\n busySpinner: PropTypes.node,\n\n placeholder: PropTypes.string,\n\n dropUp: PropTypes.bool,\n popupTransition: CustomPropTypes.elementType,\n\n disabled: CustomPropTypes.disabled.acceptsArray,\n readOnly: CustomPropTypes.disabled,\n\n /** Adds a css class to the input container element. */\n containerClassName: PropTypes.string,\n\n inputProps: PropTypes.object,\n listProps: PropTypes.object,\n\n messages: PropTypes.shape({\n open: PropTypes.string,\n emptyList: CustomPropTypes.message,\n emptyFilter: CustomPropTypes.message,\n createOption: CustomPropTypes.message,\n }),\n}\n\nfunction useSearchWordBuilder(delay: number) {\n const timeout = useTimeout()\n const wordRef = useRef('')\n\n function search(character: string, cb: (word: string) => void) {\n let word = (wordRef.current + character).toLowerCase()\n\n if (!character) return\n\n wordRef.current = word\n\n timeout.set(() => {\n wordRef.current = ''\n cb(word)\n }, delay)\n }\n return search\n}\n\nexport type DropdownHandle = WidgetHandle\n\nexport interface DropdownProps<TDataItem>\n extends WidgetProps,\n WidgetHTMLProps,\n PopupWidgetProps,\n Searchable,\n Filterable<TDataItem>,\n BaseListboxInputProps<TDataItem> {\n name?: string\n autoFocus?: boolean\n autoComplete?: 'on' | 'off'\n\n onCreate?: (searchTerm: string) => void\n renderValue?: RenderValueProp<TDataItem>\n}\n\ndeclare interface DropdownList {\n <TDataItem = DataItem>(\n props: DropdownProps<TDataItem> & React.RefAttributes<DropdownHandle>,\n ): React.ReactElement | null\n\n displayName?: string\n propTypes?: any\n}\n\n/**\n * A `<select>` replacement for single value lists.\n * @public\n */\nconst DropdownListImpl: DropdownList = React.forwardRef(function DropdownList<\n TDataItem\n>(\n {\n id,\n autoFocus,\n textField,\n dataKey,\n\n value,\n defaultValue,\n onChange,\n\n open,\n defaultOpen = false,\n onToggle,\n\n searchTerm,\n defaultSearchTerm = '',\n onSearch,\n\n filter = true,\n allowCreate = false,\n delay = 500,\n\n focusFirstItem,\n\n className,\n containerClassName,\n placeholder,\n busy,\n disabled,\n readOnly,\n selectIcon = caretDown,\n busySpinner,\n dropUp,\n tabIndex,\n popupTransition,\n name,\n autoComplete,\n onSelect,\n onCreate,\n onKeyPress,\n onKeyDown,\n onClick,\n inputProps,\n listProps,\n renderListItem,\n renderListGroup,\n optionComponent,\n renderValue,\n groupBy,\n onBlur,\n onFocus,\n listComponent: ListComponent = List,\n popupComponent: Popup = BasePopup,\n data: rawData = [],\n messages: userMessages,\n ...elementProps\n }: DropdownProps<TDataItem>,\n outerRef: React.RefObject<DropdownHandle>,\n) {\n const [currentValue, handleChange] = useUncontrolledProp(\n value,\n defaultValue,\n onChange as any,\n )\n const [currentOpen, handleOpen] = useUncontrolledProp(\n open,\n defaultOpen,\n onToggle,\n )\n const [currentSearch, handleSearch] = useUncontrolledProp(\n searchTerm,\n defaultSearchTerm,\n onSearch,\n )\n\n const ref = useRef<HTMLDivElement>(null)\n const filterRef = useRef<DropdownInputHandle>(null)\n const listRef = useRef<ListHandle>(null)\n\n const inputId = useInstanceId(id, '_input')\n const listId = useInstanceId(id, '_listbox')\n const activeId = useInstanceId(id, '_listbox_active_option')\n\n const accessors = useAccessors(textField, dataKey)\n const messages = useMessagesWithDefaults(userMessages)\n\n useAutoFocus(!!autoFocus, ref)\n\n const toggle = useDropdownToggle(currentOpen, handleOpen!)\n\n const isDisabled = disabled === true\n // const disabledItems = toItemArray(disabled)\n const isReadOnly = !!readOnly\n\n const [focusEvents, focused] = useFocusManager(\n ref,\n { disabled: isDisabled, onBlur, onFocus },\n {\n didHandle(focused) {\n if (focused) {\n if (filter) focus()\n return\n }\n\n toggle.close()\n clearSearch()\n },\n },\n )\n\n const data = useFilteredData(\n rawData,\n currentOpen ? filter : false,\n currentSearch,\n accessors.text,\n )\n\n const selectedItem = useMemo(\n () => data[accessors.indexOf(data, currentValue)],\n [data, currentValue, accessors],\n )\n\n const list = useFocusList({\n activeId,\n scope: ref,\n focusFirstItem,\n anchorItem: currentOpen ? selectedItem : undefined,\n })\n\n const [autofilling, setAutofilling] = useState(false)\n\n const nextSearchChar = useSearchWordBuilder(delay)\n\n const focusedItem = list.getFocused()\n useActiveDescendant(ref, activeId, focusedItem && currentOpen, [focusedItem])\n\n const showCreateOption = canShowCreate(allowCreate, {\n searchTerm: currentSearch,\n data,\n accessors,\n })\n\n const handleCreate = (event?: React.SyntheticEvent) => {\n notify(onCreate, [currentSearch!])\n\n clearSearch(event)\n toggle.close()\n focus()\n }\n\n const handleSelect = (\n dataItem: TDataItem,\n originalEvent?: React.SyntheticEvent,\n ) => {\n if (readOnly || isDisabled) return\n if (dataItem === undefined) return\n\n originalEvent?.preventDefault()\n\n if (dataItem === CREATE_OPTION) {\n handleCreate(originalEvent)\n return\n }\n\n notify(onSelect, [dataItem, { originalEvent }])\n change(dataItem, originalEvent, true)\n toggle.close()\n focus()\n }\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (readOnly || isDisabled) return\n\n // prevents double clicks when in a <label>\n e.preventDefault()\n\n focus()\n toggle()\n notify(onClick, [e])\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly || isDisabled) return\n let { key, altKey, ctrlKey, shiftKey } = e\n notify(onKeyDown, [e])\n\n let closeWithFocus = () => {\n clearSearch()\n\n toggle.close()\n if (currentOpen) setTimeout(focus)\n }\n\n if (e.defaultPrevented) return\n\n if (key === 'End' && currentOpen && !shiftKey) {\n e.preventDefault()\n list.focus(list.last())\n } else if (key === 'Home' && currentOpen && !shiftKey) {\n e.preventDefault()\n list.focus(list.first())\n } else if (key === 'Escape' && (currentOpen || currentSearch)) {\n e.preventDefault()\n closeWithFocus()\n } else if (key === 'Enter' && currentOpen && ctrlKey && showCreateOption) {\n e.preventDefault()\n handleCreate(e)\n } else if ((key === 'Enter' || (key === ' ' && !filter)) && currentOpen) {\n e.preventDefault()\n if (list.hasFocused()) handleSelect(list.getFocused()!, e)\n } else if (key === 'ArrowDown') {\n e.preventDefault()\n\n if (!currentOpen) {\n toggle.open()\n return\n }\n\n list.focus(list.next())\n } else if (key === 'ArrowUp') {\n e.preventDefault()\n\n if (altKey) return closeWithFocus()\n\n list.focus(list.prev())\n }\n }\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly || isDisabled) return\n\n notify(onKeyPress, [e])\n if (e.defaultPrevented || filter) return\n\n nextSearchChar(String.fromCharCode(e.which), (word) => {\n if (!currentOpen) return\n\n let isValid = (item: TDataItem) =>\n presets.startsWith(\n accessors.text(item).toLowerCase(),\n word.toLowerCase(),\n )\n\n const [items, focusedItem] = list.get()\n const len = items.length\n const startIdx = items.indexOf(focusedItem!) + 1\n const offset = startIdx >= len ? 0 : startIdx\n\n let idx = 0\n let pointer = offset\n while (idx < len) {\n pointer = (idx + offset) % len\n let item = items[pointer]\n if (isValid(list.toDataItem(item)!)) break\n idx++\n }\n\n if (idx === len) return\n\n list.focus(items[pointer])\n })\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n // hitting space to open\n if (!currentOpen && !e.target.value.trim()) {\n e.preventDefault()\n } else {\n search(e.target.value, e, 'input')\n }\n\n toggle.open()\n }\n\n const handleAutofillChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let filledValue = e.target.value.toLowerCase()\n\n if (filledValue === '') return void change(null)\n\n for (const item of rawData) {\n if (\n String(accessors.value(item)).toLowerCase() === filledValue ||\n accessors.text(item).toLowerCase() === filledValue\n ) {\n change(item, e)\n break\n }\n }\n }\n\n function change(\n nextValue: unknown,\n originalEvent?: React.SyntheticEvent,\n selected = false,\n ) {\n if (!accessors.matches(nextValue, currentValue)) {\n notify(handleChange, [\n nextValue,\n {\n originalEvent,\n source: selected ? 'listbox' : 'input',\n lastValue: currentValue,\n searchTerm: currentSearch,\n },\n ])\n\n clearSearch(originalEvent)\n toggle.close()\n }\n }\n\n function focus() {\n if (filter) filterRef.current!.focus()\n else ref.current!.focus()\n }\n\n function clearSearch(originalEvent?: React.SyntheticEvent) {\n search('', originalEvent, 'clear')\n }\n\n function search(\n nextSearchTerm: string,\n originalEvent?: React.SyntheticEvent,\n action: 'input' | 'clear' = 'input',\n ) {\n if (currentSearch !== nextSearchTerm)\n handleSearch(nextSearchTerm, {\n action,\n originalEvent,\n lastSearchTerm: currentSearch,\n })\n }\n\n /**\n * Render\n */\n\n useImperativeHandle(outerRef, () => ({\n focus,\n }))\n\n let valueItem = accessors.findOrSelf(data, currentValue)\n\n let shouldRenderPopup = useFirstFocusedRender(focused, currentOpen!)\n\n const widgetProps: React.HTMLProps<HTMLDivElement> = {\n ...elementProps,\n role: 'combobox',\n id: inputId,\n //tab index when there is no filter input to take focus\n tabIndex: filter ? -1 : tabIndex || 0,\n // FIXME: only when item exists\n 'aria-owns': listId,\n 'aria-expanded': !!currentOpen,\n 'aria-haspopup': true,\n 'aria-busy': !!busy,\n 'aria-live': currentOpen ? 'polite' : undefined,\n 'aria-autocomplete': 'list',\n 'aria-disabled': isDisabled,\n 'aria-readonly': isReadOnly,\n }\n\n return (\n <FocusListContext.Provider value={list.context}>\n <Widget\n {...widgetProps}\n open={!!currentOpen}\n dropUp={!!dropUp}\n focused={!!focused}\n disabled={isDisabled}\n readOnly={isReadOnly}\n autofilling={autofilling}\n {...focusEvents}\n onKeyDown={handleKeyDown}\n onKeyPress={handleKeyPress}\n className={cn(className, 'rw-dropdown-list')}\n ref={ref}\n >\n <WidgetPicker\n onClick={handleClick}\n tabIndex={filter ? -1 : 0}\n className={cn(containerClassName, 'rw-widget-input')}\n >\n <DropdownListInput\n {...inputProps}\n value={valueItem}\n dataKeyAccessor={accessors.value}\n textAccessor={accessors.text}\n name={name}\n readOnly={readOnly}\n disabled={isDisabled}\n allowSearch={!!filter}\n searchTerm={currentSearch}\n ref={filterRef}\n autoComplete={autoComplete}\n onSearch={handleInputChange}\n onAutofill={setAutofilling}\n onAutofillChange={handleAutofillChange}\n placeholder={placeholder}\n renderValue={renderValue}\n />\n <PickerCaret\n visible\n busy={busy}\n icon={selectIcon}\n spinner={busySpinner}\n />\n </WidgetPicker>\n {shouldRenderPopup && (\n <Popup\n dropUp={dropUp}\n open={currentOpen}\n transition={popupTransition}\n onEntered={focus}\n onEntering={() => listRef.current!.scrollIntoView()}\n >\n <ListComponent\n {...listProps}\n id={listId}\n data={data}\n tabIndex={-1}\n disabled={disabled}\n groupBy={groupBy}\n searchTerm={currentSearch}\n accessors={accessors}\n renderItem={renderListItem}\n renderGroup={renderListGroup}\n optionComponent={optionComponent}\n value={selectedItem}\n onChange={(d, meta) =>\n handleSelect(d as TDataItem, meta.originalEvent!)\n }\n aria-live={currentOpen ? 'polite' : undefined}\n aria-labelledby={inputId}\n aria-hidden={!currentOpen}\n ref={listRef}\n messages={{\n emptyList: rawData.length\n ? messages.emptyFilter\n : messages.emptyList,\n }}\n />\n {showCreateOption && (\n <AddToListOption onSelect={handleCreate}>\n {messages.createOption(currentValue, currentSearch || '')}\n </AddToListOption>\n )}\n </Popup>\n )}\n </Widget>\n </FocusListContext.Provider>\n )\n})\n\nDropdownListImpl.displayName = 'DropdownList'\n\nDropdownListImpl.propTypes = propTypes\n\nexport default DropdownListImpl\n","import cn from 'classnames'\nimport React, { useImperativeHandle, useRef, useState } from 'react'\nimport { RenderProp, Value, WidgetHandle } from './types'\nimport { TextAccessorFn, DataKeyAccessorFn } from './Accessors'\n\nexport type RenderValueProp<TDataItem> = RenderProp<{\n item: TDataItem\n dataKey: Value\n text: string\n}>\n\nexport type DropdownInputHandle = WidgetHandle\n\ninterface Props<TDataItem> {\n name?: string\n autoComplete?: 'on' | 'off'\n value: TDataItem\n disabled?: boolean\n readOnly?: boolean\n allowSearch?: boolean\n placeholder?: string\n textAccessor: TextAccessorFn\n dataKeyAccessor: DataKeyAccessorFn\n searchTerm?: string\n onSearch?: React.ChangeEventHandler<HTMLInputElement>\n onAutofill(autofilling: boolean): void\n onAutofillChange(e: React.ChangeEvent<HTMLInputElement>): void\n renderValue?: RenderValueProp<TDataItem>\n}\n\nconst DropdownListInput = React.forwardRef(function <TDataItem>(\n {\n name,\n autoComplete,\n value,\n allowSearch,\n placeholder,\n textAccessor,\n dataKeyAccessor,\n searchTerm,\n onSearch,\n onAutofill,\n onAutofillChange,\n renderValue,\n disabled,\n readOnly,\n }: Props<TDataItem>,\n ref: React.Ref<DropdownInputHandle>,\n) {\n const [autofilling, setAutofilling] = useState(false)\n\n const searchRef = useRef<HTMLInputElement>(null)\n\n const handleAutofillDetect = ({\n animationName,\n }: React.AnimationEvent<HTMLInputElement>) => {\n let autofilling: boolean\n\n if (animationName === 'react-widgets-autofill-start') autofilling = true\n else if (animationName === 'react-widgets-autofill-cancel')\n autofilling = false\n else return\n\n setAutofilling(autofilling)\n onAutofill(autofilling)\n }\n\n const handleAutofill = (e: React.ChangeEvent<HTMLInputElement>) => {\n setAutofilling(false)\n onAutofillChange(e)\n }\n let dataKey = dataKeyAccessor(value)\n let text = value == null ? '' : textAccessor(value)\n\n let strValue = String(dataKey ?? '')\n if (strValue === String({})) strValue = ''\n\n const inputValue =\n !value && placeholder ? (\n <span className=\"rw-placeholder\">{placeholder}</span>\n ) : renderValue ? (\n renderValue({ item: value, dataKey, text })\n ) : (\n text\n )\n\n useImperativeHandle(ref, () => ({\n focus() {\n if (searchRef.current) searchRef.current.focus()\n },\n }))\n\n // There is some interaction between unmounting the search and value inputs\n // that cancels autofilling in Chrome, it may be due to an input the browser\n // was considering suddenly disappeared. hiding it seems to avoid the issue\n const style = autofilling ? { display: 'none' } : undefined\n\n return (\n <div className=\"rw-dropdown-list-input\">\n {autoComplete !== 'off' && (\n <input\n name={name}\n tabIndex={-1}\n disabled={disabled}\n readOnly={readOnly}\n value={strValue == null ? '' : strValue}\n autoComplete={autoComplete}\n onChange={handleAutofill}\n onAnimationStart={handleAutofillDetect}\n aria-hidden={!autofilling}\n className={cn('rw-detect-autofill', !autofilling && 'rw-sr')}\n />\n )}\n <>\n {allowSearch && (\n <input\n ref={searchRef}\n disabled={disabled}\n readOnly={readOnly}\n style={style}\n className=\"rw-dropdownlist-search\"\n autoComplete=\"off\"\n value={searchTerm || ''}\n size={(searchTerm || '').length + 2}\n onChange={onSearch}\n />\n )}\n {!searchTerm && (\n <span className=\"rw-dropdown-list-value\" style={style}>\n {inputValue}\n </span>\n )}\n </>\n </div>\n )\n})\n\nDropdownListInput.displayName = 'DropdownListInput'\n\nexport default DropdownListInput\n","import { dataText, TextAccessor } from './Accessors'\nimport { useMemo } from 'react'\n\nexport const presets = {\n eq: (a: any, b: any) => a === b,\n contains: (a: string, b: string) => a.indexOf(b) !== -1,\n startsWith: (a: string, b: string) => a.lastIndexOf(b, 0) === 0,\n}\n\nexport type FilterFunction<TDataItem> = (\n item: TDataItem,\n searchTerm: string,\n idx?: number,\n) => boolean\n\nexport type FilterPreset = keyof typeof presets\n\nexport type Filter<TDataItem> =\n | boolean\n | FilterPreset\n | FilterFunction<TDataItem>\n | null\n\nfunction normalizeFilter<TDataItem>(\n filter: Filter<TDataItem>,\n textField?: TextAccessor,\n): FilterFunction<TDataItem> | null {\n if (filter === false) return null\n if (typeof filter === 'function') return filter\n\n const filterPreset = presets[filter === true ? 'startsWith' : filter || 'eq']\n return (item: TDataItem, searchTerm: string) => {\n let textValue = dataText(item, textField)\n return filterPreset(textValue.toLowerCase(), searchTerm.toLowerCase())\n }\n}\n\nexport function useFilteredData<TDataItem>(\n data: readonly TDataItem[],\n filterer: Filter<TDataItem>,\n searchTerm = '',\n textAccessor?: TextAccessor,\n) {\n return useMemo(() => {\n const filter = normalizeFilter(filterer, textAccessor)\n\n if (!filter || !searchTerm.trim()) return data\n\n return data.filter((item, idx) => filter(item, searchTerm, idx))\n }, [data, filterer, searchTerm, textAccessor])\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport querySelectorAll from 'dom-helpers/querySelectorAll'\nimport React, {\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useState,\n useRef,\n} from 'react'\nimport { TextAccessorFn } from './Accessors'\n\ntype FocusListContext = {\n focusedItem: any | undefined\n activeId?: string\n map: WeakMap<HTMLElement, any>\n}\n\nexport const FocusListContext = React.createContext<FocusListContext | null>(\n null,\n)\n\nexport interface FocusProps {\n children: any\n textAccessor: TextAccessorFn\n}\n\nexport interface FocusList<TDataItem = unknown> {\n size(): number;\n focus: (el: HTMLElement | null | undefined) => void\n first: () => HTMLElement | undefined\n last: () => HTMLElement | undefined\n prev(opts?: FocusOptions): HTMLElement | undefined\n next(opts?: FocusOptions): HTMLElement | undefined\n hasFocused: () => boolean\n getFocused: () => TDataItem | undefined\n toDataItem: (el: HTMLElement) => TDataItem | undefined\n context: FocusListContext\n get(): [HTMLElement[], HTMLElement | undefined]\n}\n\ninterface FocusOptions {\n behavior?: 'clear' | 'stop' | 'loop'\n}\n\nconst defaultOpts = { behavior: 'stop' as const }\n\ninterface FocusListOptions<TDataItem> {\n scope: React.MutableRefObject<HTMLElement | null>\n anchorItem?: TDataItem\n focusFirstItem?: boolean\n scopeSelector?: string\n activeId?: string\n}\n\nexport function useListOption<TDataItem, T extends HTMLElement>(\n dataItem: TDataItem,\n) {\n const ctx = useContext(FocusListContext)\n const prevElement = useRef<T | null>(null)\n\n // this is a bit convoluted because we want to use a ref object, a callback ref\n // causes an extra render which is fine except that it means the list hook for\n // anchor items fires before elements are processed\n const ref = useRef<T>(null)\n\n useLayoutEffect(\n () => () => {\n ctx?.map.delete(ref.current!)\n },\n [],\n )\n useLayoutEffect(() => {\n if (prevElement.current !== ref.current) {\n ctx?.map.delete(prevElement.current!)\n }\n\n prevElement.current = ref.current\n if (ref.current && ctx?.map.get(ref.current) !== dataItem) {\n ctx?.map.set(ref.current, dataItem)\n }\n })\n\n const focused = dataItem === ctx?.focusedItem\n return [ref, focused, focused ? ctx?.activeId : undefined] as const\n}\n\nexport const useFocusList = <TDataItem>({\n scope: listRef,\n anchorItem,\n focusFirstItem = false,\n scopeSelector = '',\n activeId,\n}: FocusListOptions<TDataItem>) => {\n const map = useMemo(() => new WeakMap<HTMLElement, any>(), [])\n\n const [focusedItem, setFocusedItem] = useState<TDataItem>()\n const itemSelector = `${scopeSelector} [data-rw-focusable]`.trim()\n\n const get = () => {\n const items = querySelectorAll(listRef.current!, itemSelector)\n return [items, items.find((e) => e.dataset.rwFocused === '')] as const\n }\n\n const list: any = useMemo(() => {\n return {\n size() {\n const [items] = get();\n return items.length;\n },\n get,\n toDataItem: (el: HTMLElement) => map.get(el),\n\n first() {\n const [[first]] = get()\n return first\n },\n focus(el: HTMLElement | null) {\n if (!el || map.has(el)) setFocusedItem(el ? map.get(el) : undefined)\n },\n last() {\n const [items] = get()\n return items[items.length - 1]\n },\n\n next({ behavior }: FocusOptions = defaultOpts) {\n const [items, focusedItem] = get()\n let nextIdx = items.indexOf(focusedItem!) + 1\n\n if (nextIdx >= items.length) {\n if (behavior === 'loop') return items[0]\n if (behavior === 'clear') return undefined\n return focusedItem\n }\n return items[nextIdx]\n },\n\n prev({ behavior }: FocusOptions = defaultOpts) {\n const [items, focusedItem] = get()\n let nextIdx = Math.max(0, items.indexOf(focusedItem!)) - 1\n\n if (nextIdx < 0) {\n if (behavior === 'loop') return items[items.length - 1]\n if (behavior === 'clear') return undefined\n return focusedItem\n }\n return items[nextIdx]\n },\n }\n }, [])\n\n useLayoutEffect(() => {\n if (!anchorItem) {\n list.focus(null)\n return\n }\n\n const element = get()[0].find((el) => list.toDataItem(el) === anchorItem)\n list.focus(element)\n }, [anchorItem])\n\n useLayoutEffect(() => {\n if (!listRef.current) return\n const [, focusedElement] = get()\n const hasItem = focusedElement != null\n\n if (\n (!hasItem && focusFirstItem) ||\n (hasItem && !listRef.current.contains(focusedElement!))\n ) {\n if (focusFirstItem) list.focus(list.first())\n else list.focus(null)\n }\n })\n\n const context = useMemo(\n () => ({\n map,\n focusedItem,\n activeId,\n }),\n [focusedItem, activeId],\n )\n\n list.context = context\n\n list.getFocused = useCallback(() => focusedItem, [focusedItem])\n list.hasFocused = () => focusedItem !== undefined\n\n return list as FocusList<TDataItem>\n}\n","import * as React from 'react'\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const caretUp = (\n <svg\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 320 512\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M288.66 352H31.34c-17.82 0-26.74-21.54-14.14-34.14L145.86 189.2a20 20 0 0 1 28.28 0L302.8 317.86c12.6 12.6 3.68 34.14-14.14 34.14z\" />\n </svg>\n)\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const caretDown = (\n <svg\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 320 512\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\" />\n </svg>\n)\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const chevronRight = (\n <svg\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 320 512\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M285.48 272.97L91.13 467.31a24 24 0 0 1-33.94 0l-22.67-22.66a24 24 0 0 1-.04-33.9L188.5 256 34.48 101.25a24 24 0 0 1 .04-33.9L57.2 44.7a24 24 0 0 1 33.94 0l194.35 194.34a24 24 0 0 1 0 33.94z\" />\n </svg>\n)\n\nexport const chevronLeft = (\n <svg\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 320 512\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M34.52 239.03L228.87 44.69a24 24 0 0 1 33.94 0l22.67 22.67a24 24 0 0 1 .04 33.9L131.49 256l154.02 154.75a24 24 0 0 1-.04 33.9l-22.67 22.67a24 24 0 0 1-33.94 0L34.52 272.97a24 24 0 0 1 0-33.94z\" />\n </svg>\n)\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const calendar = (\n <svg\n aria-hidden\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 448 512\"\n className=\"rw-i-calendar\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\" />\n </svg>\n)\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const clock = (\n <svg\n aria-hidden\n height=\"1em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 512 512\"\n className=\"rw-i-clock\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6a12 12 0 0 1 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\" />\n </svg>\n)\n\nexport const times = (\n <svg\n height=\".8em\"\n fill=\"currentcolor\"\n viewBox=\"0 0 352 512\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" />\n </svg>\n)\n\n/*!\nFont Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n*/\nexport const clear = (\n <svg\n aria-hidden\n height=\"1em\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\" />\n </svg>\n)\n\n// https://codepen.io/aurer/pen/jEGbA\nexport const Spinner = (\n <svg\n height=\"1.4em\"\n viewBox=\"0 0 50 50\"\n xmlSpace=\"preserve\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill=\"currentcolor\"\n d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\"\n >\n <animateTransform\n attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 25 25\"\n to=\"360 25 25\"\n dur=\"0.6s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n)\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nexport interface InputProps extends React.AllHTMLAttributes<HTMLInputElement> {\n component?: React.ElementType\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n disabled,\n readOnly,\n value,\n tabIndex,\n type = 'text',\n component: Component = 'input',\n ...props\n },\n ref,\n ) => (\n <Component\n {...props}\n ref={ref}\n type={type}\n tabIndex={tabIndex || 0}\n autoComplete=\"off\"\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n value={value == null ? '' : value}\n className={cn(className, 'rw-input')}\n />\n ),\n)\n\nInput.displayName = 'Input'\nInput.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n value: PropTypes.string,\n type: PropTypes.string,\n tabIndex: PropTypes.number,\n component: PropTypes.any,\n}\n\nexport default Input\n","import cn from 'classnames'\nimport React from 'react'\nimport Button, { Props as ButtonProps } from './Button'\n\ninterface Props extends ButtonProps {\n className?: string\n children?: any\n}\nfunction InputAddon({ className, ...props }: Props) {\n return (\n <Button\n {...props}\n className={cn(className, 'rw-input-addon rw-picker-btn')}\n />\n )\n}\n\nexport default InputAddon\n","import {\n DateLocalizer,\n DateTimePart,\n NumberLocalizer,\n RequiredDateMethods,\n} from './Localization'\nimport dates from './dates'\n\ntype Formatters = {\n [Key in RequiredDateMethods]: (date?: number | Date) => string\n}\ntype UserDateFormat =\n | Intl.DateTimeFormatOptions\n | ((date: Date, culture?: string) => string)\n\n// assumes both are supported or none\nlet supportStyles = false\nnew Intl.DateTimeFormat(undefined, {\n // @ts-ignore\n get dateStyle() {\n supportStyles = true\n },\n})\n\nconst dateShort = { day: 'numeric', month: 'numeric', year: 'numeric' }\nconst timeShort = { hour: 'numeric', minute: 'numeric' }\n\nconst getFormatter = (\n culture: string | undefined,\n options: Intl.DateTimeFormatOptions,\n): Intl.DateTimeFormat['format'] => Intl.DateTimeFormat(culture, options).format\n\n/**\n * A `react-widgets` Localizer using native `Intl` APIs.\n *\n */\nclass IntlDateLocalizer implements DateLocalizer<Intl.DateTimeFormatOptions> {\n culture?: string\n\n firstOfWeek: () => number\n\n date!: (date: Date, format?: UserDateFormat) => string\n time!: (date: Date, format?: UserDateFormat) => string\n datetime!: (date: Date, format?: UserDateFormat) => string\n header!: (date: Date, format?: UserDateFormat) => string\n footer!: (date: Date, format?: UserDateFormat) => string\n weekday!: (date: Date, format?: UserDateFormat) => string\n dayOfMonth!: (date: Date, format?: UserDateFormat) => string\n month!: (date: Date, format?: UserDateFormat) => string\n year!: (date: Date, format?: UserDateFormat) => string\n decade!: (date: Date, format?: UserDateFormat) => string\n century!: (date: Date, format?: UserDateFormat) => string\n\n constructor({\n culture = undefined,\n firstOfWeek = 0,\n }: { culture?: string; firstOfWeek?: number } = {}) {\n this.culture = culture\n this.firstOfWeek = () => firstOfWeek\n\n function normalizeFormat(date: Date, format: UserDateFormat) {\n return typeof format === 'function'\n ? format(date, culture)\n : date.toLocaleString(culture, format)\n }\n\n const formats: Formatters = {\n date: getFormatter(\n culture,\n // @ts-ignore\n supportStyles ? { dateStyle: 'short' } : dateShort,\n ),\n time: getFormatter(\n culture,\n // @ts-ignore\n supportStyles ? { timeStyle: 'short' } : timeShort,\n ),\n datetime: getFormatter(\n culture,\n // @ts-ignore\n supportStyles\n ? { dateStyle: 'short', timeStyle: 'short' }\n : { ...dateShort, ...timeShort },\n ),\n header: getFormatter(culture, { month: 'short', year: 'numeric' }),\n weekday: getFormatter(culture, { weekday: 'narrow' }),\n dayOfMonth: getFormatter(culture, { day: '2-digit' }),\n month: getFormatter(culture, { month: 'short' }),\n year: getFormatter(culture, { year: 'numeric' }),\n decade: (date: Date) =>\n `${this.year(date)} - ${this.year(dates.endOf(date, 'decade'))}`,\n century: (date: Date) =>\n `${this.year(date)} - ${this.year(dates.endOf(date, 'century'))}`,\n }\n\n Object.keys(formats).forEach((key: RequiredDateMethods) => {\n this[key] = (date: Date, format?: UserDateFormat): string =>\n format ? normalizeFormat(date, format) : formats[key](date)\n })\n }\n\n toFormattedParts(\n date: Date,\n format: Intl.DateTimeFormatOptions = {\n dateStyle: 'short',\n timeStyle: 'short',\n },\n ): DateTimePart[] {\n return Intl.DateTimeFormat(this.culture, format)\n .formatToParts(date)\n .filter((p) => p.type !== 'timeZoneName') as any\n }\n\n parse(value: string) {\n const date = new Date(value)\n return isNaN(+date) ? null : date\n }\n}\n\ntype UserNumberFormat =\n | Intl.NumberFormatOptions\n | ((num: number, culture?: string) => string)\n\n/**\n * A number localization strategy based on `Intl.NumberFormat`.\n */\nclass IntlNumberLocalizer implements NumberLocalizer<Intl.NumberFormatOptions> {\n culture?: string\n decimalCharacter: () => string\n format: (num: number, format?: UserNumberFormat) => string\n\n constructor({ culture = undefined } = {}) {\n this.culture = culture\n\n const decimal =\n 'formatToParts' in Intl.NumberFormat(culture)\n ? Intl.NumberFormat(culture).formatToParts(1.1)[1].value\n : 1.1.toLocaleString(culture).match(/[^\\d]/)?.[0] || '.'\n\n const formatter = Intl.NumberFormat(culture).format\n\n this.decimalCharacter = () => decimal\n this.format = (num: number, format?: UserNumberFormat): string => {\n if (format) {\n return typeof format === 'function'\n ? format(num, culture)\n : num.toLocaleString(culture, format)\n }\n\n return formatter(num)\n }\n }\n\n parse(value: string) {\n return parseFloat(value.replace(this.decimalCharacter(), '.'))\n }\n}\n\nexport {\n IntlDateLocalizer as DateLocalizer,\n IntlNumberLocalizer as NumberLocalizer,\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, {\n useCallback,\n useImperativeHandle,\n useMemo,\n MutableRefObject,\n} from 'react'\nimport ListOption, { ListOptionProps } from './ListOption'\nimport ListOptionGroup from './ListOptionGroup'\nimport { UserProvidedMessages, useMessagesWithDefaults } from './messages'\n// import { WidgetHTMLProps } from './shared'\nimport { DataItem, RenderProp, Value } from './types'\nimport * as CustomPropTypes from './PropTypes'\nimport { groupBySortedKeys, makeArray, toItemArray } from './_'\nimport { Accessors } from './Accessors'\nimport { useInstanceId } from './WidgetHelpers'\nimport useMutationObserver from '@restart/hooks/useMutationObserver'\nimport useCallbackRef from '@restart/hooks/useCallbackRef'\nimport useMergedRefs from '@restart/hooks/useMergedRefs'\n\nconst whitelist = [\n 'style',\n 'className',\n 'role',\n 'id',\n 'autocomplete',\n 'size',\n 'tabIndex',\n 'maxLength',\n 'name',\n]\n\nconst whitelistRegex = [/^aria-/, /^data-/, /^on[A-Z]\\w+/]\n\nfunction pickElementProps<T>(props: T): Partial<T> {\n const result: Partial<T> = {}\n Object.keys(props).forEach((key) => {\n if (\n whitelist.indexOf(key) !== -1 ||\n whitelistRegex.some((r) => !!key.match(r))\n )\n (result as any)[key] = (props as any)[key]\n })\n\n return result\n}\n\nconst propTypes = {\n data: PropTypes.array,\n\n dataKey: CustomPropTypes.accessor,\n textField: CustomPropTypes.accessor,\n\n onSelect: PropTypes.func,\n onMove: PropTypes.func,\n onHoverOption: PropTypes.func,\n\n optionComponent: PropTypes.elementType,\n renderItem: PropTypes.func,\n renderGroup: PropTypes.func,\n\n focusedItem: PropTypes.any,\n selectedItem: PropTypes.any,\n searchTerm: PropTypes.string,\n\n disabled: CustomPropTypes.disabled.acceptsArray,\n\n messages: PropTypes.shape({\n emptyList: PropTypes.func.isRequired,\n }),\n}\n\nexport type GroupBy<TDataItem = unknown> =\n | ((item: TDataItem) => unknown)\n | string\n\nexport interface ListHandle {\n scrollIntoView(): void\n}\n\nexport type RenderItemProp<TDataItem> = RenderProp<{\n item: TDataItem\n searchTerm?: string\n index: number\n text: string\n value: unknown\n disabled: boolean\n}>\n\nexport type RenderGroupProp = RenderProp<{\n group: any\n}>\n\nexport type OptionComponentProp = React.ComponentType<ListOptionProps<any>>\n\nexport type ChangeHandler<TDataItem> = (\n dataItem: TDataItem | TDataItem[],\n metadata: {\n action?: 'insert' | 'remove'\n dataItem?: TDataItem\n lastValue: Value\n originalEvent?: React.SyntheticEvent\n },\n) => void\n\nexport interface ListProps<TDataItem> {\n data: readonly TDataItem[]\n value?: readonly TDataItem[] | TDataItem\n accessors: Accessors\n focusedItem?: TDataItem\n className?: string\n multiple?: boolean\n disabled?: boolean | readonly TDataItem[]\n messages?: UserProvidedMessages\n renderItem?: RenderItemProp<TDataItem>\n renderGroup?: RenderGroupProp\n searchTerm?: string\n groupBy?: GroupBy<TDataItem>\n optionComponent?: React.ElementType\n onChange: ChangeHandler<TDataItem>\n elementRef?: MutableRefObject<HTMLDivElement | null>\n [key: string]: any\n}\n\ndeclare interface List {\n <TDataItem = DataItem>(\n props: ListProps<TDataItem> & React.RefAttributes<ListHandle>,\n ): React.ReactElement | null\n\n displayName?: string\n propTypes?: any\n}\n\nexport const useScrollFocusedIntoView = (\n element: HTMLElement | null,\n observeChanges = false,\n) => {\n const scrollIntoView = useCallback(() => {\n if (!element) return\n\n let selectedItem = element.querySelector('[data-rw-focused]')\n\n if (selectedItem && selectedItem.scrollIntoView) {\n selectedItem.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n }\n }, [element])\n\n useMutationObserver(\n observeChanges ? element : null,\n {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-rw-focused'],\n },\n scrollIntoView,\n )\n\n return scrollIntoView\n}\n\nexport function useHandleSelect<TDataItem>(\n multiple: boolean,\n dataItems: TDataItem[],\n onChange: ChangeHandler<TDataItem>,\n) {\n return (dataItem: TDataItem, event: React.SyntheticEvent) => {\n if (multiple === false) {\n onChange(dataItem, {\n dataItem,\n lastValue: dataItems[0],\n originalEvent: event,\n })\n return\n }\n\n const checked = dataItems.includes(dataItem)\n onChange(\n checked\n ? dataItems.filter((d) => d !== dataItem)\n : [...dataItems, dataItem],\n {\n dataItem,\n lastValue: dataItems,\n action: checked ? 'remove' : 'insert',\n originalEvent: event,\n },\n )\n }\n}\n\nconst List: List = React.forwardRef(function List<TDataItem>(\n {\n multiple = false,\n data = [],\n\n value,\n onChange,\n accessors,\n\n className,\n messages,\n disabled,\n renderItem,\n renderGroup,\n searchTerm,\n groupBy,\n elementRef,\n optionComponent: Option = ListOption,\n renderList,\n // onKeyDown,\n ...props\n }: ListProps<TDataItem>,\n outerRef: React.Ref<ListHandle>,\n) {\n const id = useInstanceId()\n\n const dataItems = makeArray(value, multiple)\n\n const groupedData = useMemo(\n () => (groupBy ? groupBySortedKeys<TDataItem>(groupBy, data) : undefined),\n [data, groupBy],\n )\n const [element, ref] = useCallbackRef<HTMLDivElement>()\n const disabledItems = toItemArray(disabled)\n const { emptyList } = useMessagesWithDefaults(messages)\n\n const divRef = useMergedRefs(ref, elementRef)\n\n const handleSelect = useHandleSelect(multiple, dataItems, onChange)\n\n const scrollIntoView = useScrollFocusedIntoView(element, true)\n\n let elementProps = pickElementProps(props)\n\n useImperativeHandle(outerRef, () => ({ scrollIntoView }), [scrollIntoView])\n\n function renderOption(item: TDataItem, idx: number) {\n const textValue = accessors.text(item)\n const itemIsDisabled = disabledItems.includes(item)\n const itemIsSelected = dataItems.includes(item)\n\n return (\n <Option\n dataItem={item}\n key={`item_${idx}`}\n searchTerm={searchTerm}\n onSelect={handleSelect}\n disabled={itemIsDisabled}\n selected={itemIsSelected}\n >\n {renderItem\n ? renderItem({\n item,\n searchTerm,\n index: idx,\n text: textValue,\n // TODO: probably remove\n value: accessors.value(item),\n disabled: itemIsDisabled,\n })\n : textValue}\n </Option>\n )\n }\n\n const items = groupedData\n ? groupedData.map(([group, items], idx) => (\n <div role=\"group\" key={`group_${idx}`}>\n <ListOptionGroup>\n {renderGroup ? renderGroup({ group }) : (group as string)}\n </ListOptionGroup>\n {items.map(renderOption)}\n </div>\n ))\n : data.map(renderOption)\n\n const rootProps = {\n id,\n tabIndex: 0,\n ref: divRef,\n ...elementProps,\n 'aria-multiselectable': !!multiple,\n className: cn(className, 'rw-list'),\n role: elementProps.role ?? 'listbox',\n children: React.Children.count(items) ? (\n items\n ) : (\n <div className=\"rw-list-empty\">{emptyList()}</div>\n ),\n }\n\n return renderList ? renderList(rootProps) : <div {...rootProps} />\n})\n\nList.displayName = 'List'\nList.propTypes = propTypes\n\nexport default List\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { useListOption } from './FocusListContext'\n\nconst propTypes = {\n activeId: PropTypes.string,\n dataItem: PropTypes.any,\n selected: PropTypes.bool.isRequired,\n onSelect: PropTypes.func.isRequired,\n component: PropTypes.any,\n}\n\nexport interface ListOptionProps<TDataItem>\n extends Omit<React.HTMLProps<HTMLDivElement>, 'onSelect'> {\n dataItem: TDataItem\n focused?: boolean\n selected: boolean\n searchTerm?: string\n disabled?: boolean\n onSelect: (dataItem: TDataItem, event: React.MouseEvent) => void\n component?: React.ElementType | null\n children?: React.ReactNode\n}\n\nfunction ListOption<TDataItem>({\n className,\n children,\n dataItem,\n selected,\n disabled,\n onSelect,\n searchTerm: _,\n ...props\n}: ListOptionProps<TDataItem>) {\n const [ref, focused, id] = useListOption<TDataItem, HTMLDivElement>(dataItem)\n\n const handleSelect = (event: React.MouseEvent<HTMLElement>) => {\n if (onSelect && !disabled) onSelect(dataItem, event)\n }\n\n let classes = {\n 'rw-state-focus': focused,\n 'rw-state-selected': selected,\n 'rw-state-disabled': disabled,\n }\n\n return (\n <div\n id={id}\n ref={ref}\n role=\"option\"\n data-rw-option=\"\"\n data-rw-focused={focused ? '' : undefined}\n data-rw-focusable={!disabled ? '' : undefined}\n tabIndex={-1}\n aria-selected={!!selected}\n className={cn('rw-list-option', className, classes)}\n onClick={handleSelect}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n// @ts-ignore\nListOption.propTypes = propTypes\n\nexport default ListOption\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\ninterface Props extends Omit<React.HTMLProps<HTMLDivElement>, 'onSelect'> {\n component?: React.ElementType\n}\n\nconst propTypes = {\n className: PropTypes.string,\n component: PropTypes.string,\n}\n\nfunction ListOptionGroup({ children, className, component = 'div' }: Props) {\n let Tag = component\n return (\n <Tag\n tabIndex=\"-1\"\n role=\"separator\"\n className={cn(className, 'rw-list-optgroup')}\n >\n {children}\n </Tag>\n )\n}\n\nListOptionGroup.propTypes = propTypes\n\nexport default ListOptionGroup\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport PropTypes from 'prop-types'\nimport cn from 'classnames'\nimport React, { useMemo, useRef } from 'react'\nimport { useUncontrolledProp } from 'uncontrollable'\nimport List, { GroupBy, useHandleSelect } from './List'\nimport { useFocusList, FocusListContext } from './FocusListContext'\nimport { DataItem, RenderProp, Value } from './types'\nimport * as CustomPropTypes from './PropTypes'\nimport { makeArray } from './_'\nimport { useAccessors, TextAccessor, DataKeyAccessor } from './Accessors'\nimport { WidgetHTMLProps } from './shared'\nimport { UserProvidedMessages } from './messages'\nimport { notify } from './WidgetHelpers'\nimport useFocusManager from './useFocusManager'\nimport { useWidgetProps } from './Widget'\n\nconst propTypes = {\n data: PropTypes.array,\n\n dataKey: CustomPropTypes.accessor,\n textField: CustomPropTypes.accessor,\n\n onSelect: PropTypes.func,\n onMove: PropTypes.func,\n onHoverOption: PropTypes.func,\n\n optionComponent: PropTypes.elementType,\n renderItem: PropTypes.func,\n renderGroup: PropTypes.func,\n\n focusedItem: PropTypes.any,\n selectedItem: PropTypes.any,\n searchTerm: PropTypes.string,\n\n /**\n * @example false\n */\n disabled: CustomPropTypes.disabled.acceptsArray,\n\n messages: PropTypes.shape({\n emptyList: PropTypes.func.isRequired,\n }),\n}\n\nexport interface ListboxHandle {\n scrollIntoView(): void\n}\n\nexport type RenderItemProp<TDataItem> = RenderProp<{\n item: TDataItem\n searchTerm?: string\n index: number\n text: string\n value: unknown\n disabled: boolean\n}>\n\nexport type RenderGroupProp = RenderProp<{\n group: any\n}>\n\nexport type SingleChangeHandler<TDataItem> = (\n dataItem: TDataItem,\n metadata: {\n lastValue: Value\n originalEvent?: React.SyntheticEvent\n },\n) => void\n\nexport type MultipleChangeHandler<TDataItem> = (\n dataItem: readonly TDataItem[],\n metadata: {\n action: 'insert' | 'remove'\n dataItem: TDataItem\n lastValue: Value\n originalEvent?: React.SyntheticEvent\n },\n) => void\n\nexport interface BaseListboxProps<TDataItem> extends WidgetHTMLProps {\n data: TDataItem[]\n defaultValue?: Value\n focusedItem?: TDataItem\n className?: string\n multiple?: boolean\n readOnly?: boolean\n /**\n * @example false\n */\n disabled?: boolean | TDataItem[]\n messages?: UserProvidedMessages\n renderItem?: RenderItemProp<TDataItem>\n renderGroup?: RenderGroupProp\n searchTerm?: string\n groupBy?: GroupBy<TDataItem>\n optionComponent?: React.ElementType\n textField?: TextAccessor\n dataKey?: DataKeyAccessor\n}\n\nexport interface SingleListboxProps<TDataItem>\n extends BaseListboxProps<TDataItem> {\n value?: Value\n defaultValue?: Value\n multiple?: false\n onChange?: SingleChangeHandler<TDataItem>\n}\n\nexport interface MultipleListboxProps<TDataItem>\n extends BaseListboxProps<TDataItem> {\n value?: Value[]\n defaultValue?: Value[]\n multiple: true\n onChange?: MultipleChangeHandler<TDataItem>\n}\n\nexport type ListboxProps<TDataItem> =\n | SingleListboxProps<TDataItem>\n | MultipleListboxProps<TDataItem>\n\ndeclare interface Listbox {\n <TDataItem = DataItem>(\n props: ListboxProps<TDataItem> & React.RefAttributes<ListboxHandle>,\n ): React.ReactElement | null\n\n displayName?: string\n propTypes?: any\n}\nconst Listbox: Listbox = React.forwardRef(function Listbox<TDataItem>(\n {\n defaultValue,\n value: propsValue,\n onChange: propsOnChange,\n\n textField,\n dataKey,\n\n data,\n onKeyDown,\n disabled,\n readOnly,\n onBlur,\n onFocus,\n multiple,\n ...props\n }: ListboxProps<TDataItem>,\n _outerRef: any,\n) {\n const [value, onChange] = useUncontrolledProp(\n propsValue,\n defaultValue,\n propsOnChange,\n )\n\n const accessors = useAccessors(textField, dataKey)\n\n const dataItems = useMemo(\n () =>\n makeArray(value, multiple).map((item) =>\n accessors.findOrSelf(data, item),\n ),\n [value, multiple, accessors, data],\n )\n const ref = useRef<HTMLDivElement>(null)\n const lastItemRef = useRef<TDataItem | null>(dataItems[dataItems.length - 1])\n\n const list = useFocusList({\n scope: ref,\n anchorItem: lastItemRef.current,\n })\n\n const isDisabled = disabled === true\n\n const handleChange = (dataItem: any, meta: any) => {\n if (isDisabled || readOnly) return\n\n lastItemRef.current = meta.dataItem\n onChange(dataItem, meta)\n }\n\n const handleSelect = useHandleSelect(!!multiple, dataItems, handleChange)\n\n const [focusEvents, focused] = useFocusManager(\n ref,\n { disabled: isDisabled, onBlur, onFocus },\n {\n didHandle(focused) {\n if (!focused) {\n list.focus(undefined)\n } else {\n focus({ preventScroll: true })\n }\n },\n },\n )\n\n function focus(opts: FocusOptions) {\n if (ref.current) ref.current.focus(opts)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled || readOnly) return\n let { key, shiftKey } = e\n\n notify(onKeyDown, [e])\n\n if (e.defaultPrevented) return\n\n if (key === 'End' && !shiftKey) {\n e.preventDefault()\n list.focus(list.last())\n } else if (key === 'Home' && !shiftKey) {\n e.preventDefault()\n list.focus(list.first())\n } else if (key === 'Enter' || key === ' ') {\n e.preventDefault()\n if (list.getFocused()) handleSelect(list.getFocused()!, e)\n } else if (key === 'ArrowDown') {\n e.preventDefault()\n list.focus(list.next())\n } else if (key === 'ArrowUp') {\n e.preventDefault()\n\n list.focus(list.prev())\n }\n }\n\n const widgetProps = useWidgetProps({\n focused,\n readOnly,\n disabled: isDisabled,\n className: cn(props.className, 'rw-listbox rw-widget-input rw-widget'),\n })\n\n return (\n <FocusListContext.Provider value={list.context}>\n <List\n {...props}\n {...widgetProps}\n disabled={disabled}\n tabIndex={isDisabled ? -1 : 0}\n data={data}\n elementRef={ref}\n value={dataItems}\n multiple={multiple}\n accessors={accessors}\n {...focusEvents}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n </FocusListContext.Provider>\n )\n})\n\nListbox.displayName = 'Listbox'\nListbox.propTypes = propTypes\n\nexport default Listbox\n","import React, { useContext, useMemo } from 'react'\nimport * as IntlLocalizers from './IntlLocalizer'\nimport {\n ProcessedMessages,\n UserProvidedMessages,\n getMessages,\n} from './messages'\n\nexport type DateTimePartType =\n | 'day'\n | 'dayPeriod'\n | 'era'\n | 'hour'\n | 'literal'\n | 'minute'\n | 'month'\n | 'second'\n | 'weekday'\n | 'year'\n | 'millisecond'\n\nexport type DateTimePart = { type: DateTimePartType; value: string }\n\nexport type RequiredDateMethods =\n | 'date'\n | 'time'\n | 'datetime'\n | 'header'\n | 'weekday'\n | 'dayOfMonth'\n | 'month'\n | 'year'\n | 'decade'\n | 'century'\n\nexport type DateLocalizer<TD> = {\n // toFormattedParts(date: Date, format: any): DateTimePart[]\n\n parse(dateString: string, format?: TD): Date | null\n firstOfWeek(): number\n} & { [Key in RequiredDateMethods]: (date: Date, format?: TD) => string }\n\nexport interface NumberLocalizer<TN> {\n parse(numberString: string, format?: TN): number | null\n\n decimalCharacter(): string\n\n format(value: number, format?: TN): string\n}\n\nexport interface Localizer<TD = unknown, TN = unknown> {\n formatOverrides: FormatterOverrides<TD, TN>\n messages: ProcessedMessages\n\n formatDate(\n value: Date,\n formatter: RequiredDateMethods,\n userFormat?: TD,\n ): string\n // formatDateToParts(value: Date, format: TD): DateTimePart[]\n\n formatNumber(value: number, userFormat?: TN): string\n\n parseDate(dateString: string, format?: TD): Date | null\n parseNumber(numberString: string, format?: TN): number | null\n\n firstOfWeek(): number\n decimalCharacter(): string\n}\n\nexport type DateFormats<TFormat> = {\n [Key in RequiredDateMethods]?: TFormat\n}\n\nexport type FormatterOverrides<TD, TN> = DateFormats<TD> & {\n number?: TN\n}\n\nfunction mergeWithDefaults<TD, TN>(\n date?: DateLocalizer<TD>,\n number?: NumberLocalizer<TN>,\n messages?: UserProvidedMessages,\n formatOverrides: FormatterOverrides<TD, TN> = {},\n): Localizer<TD, TN> {\n if (!date && !number)\n throw new Error('This component requires a Localizer but none was provided')\n\n return {\n formatOverrides,\n messages: getMessages(messages),\n\n formatDate(value: Date, format: RequiredDateMethods, userFormat?: TD) {\n return date![format](value, userFormat ?? this.formatOverrides[format])\n },\n formatNumber(value: number, userFormat?: TN) {\n return number!.format(value, userFormat ?? this.formatOverrides.number)\n },\n\n parseDate: date!.parse.bind(date),\n\n parseNumber: number!.parse.bind(number),\n\n decimalCharacter: number!.decimalCharacter.bind(number),\n\n firstOfWeek: date!.firstOfWeek.bind(date),\n }\n}\n\nconst LocalizerContext = React.createContext<Localizer<unknown, unknown>>(\n mergeWithDefaults(\n new IntlLocalizers.DateLocalizer(),\n new IntlLocalizers.NumberLocalizer(),\n ),\n)\n\ntype ProviderProps = {\n date?: DateLocalizer<any>\n number?: NumberLocalizer<any>\n messages?: UserProvidedMessages\n children?: React.ReactNode\n}\n\nconst Localization = ({\n date = new IntlLocalizers.DateLocalizer(),\n number = new IntlLocalizers.NumberLocalizer(),\n messages,\n children,\n}: ProviderProps) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const localizer = useMemo(() => mergeWithDefaults(date, number, messages), [\n date,\n number,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(messages),\n ])\n\n return (\n <LocalizerContext.Provider value={localizer}>\n {children}\n </LocalizerContext.Provider>\n )\n}\n\nexport const useLocalizer = (\n messages?: UserProvidedMessages,\n formats?: FormatterOverrides<any, any>,\n) => {\n const localizer = useContext(LocalizerContext)\n\n return useMemo(() => {\n if (!messages && !formats) return localizer\n return {\n // @ts-ignore\n ...localizer,\n messages: getMessages({ ...localizer.messages, ...messages }),\n formatOverrides: { ...localizer.formatOverrides, ...formats },\n }\n }, [messages, formats, localizer])\n}\n\nLocalization.useLocalizer = useLocalizer\n\nexport default Localization\n","import cn from 'classnames'\nimport React from 'react'\nimport CalendarView, { CalendarViewProps } from './CalendarView'\nimport { Localizer } from './Localization'\nimport { RenderProp } from './types'\nimport { chunk } from './_'\nimport dates from './dates'\n\nexport type RenderDayProp = RenderProp<{ date: Date; label: string }>\n\ninterface MonthProps extends CalendarViewProps {\n disabled?: boolean\n onChange: (nextDate: Date) => void\n value?: Date | null\n min: Date\n max: Date\n localizer: Localizer\n renderDay?: RenderDayProp\n}\n\nfunction visibleDays(date: Date, weekStart: number) {\n let current = dates.startOf(dates.startOf(date, 'month'), 'week', weekStart)\n let last = dates.endOf(dates.endOf(date, 'month'), 'week', weekStart)\n let days = [] as Date[]\n\n while (dates.lte(current, last, 'day')) {\n days.push(current)\n current = dates.add(current, 1, 'day')\n }\n\n return days\n}\n\nfunction MonthView({\n className,\n focusedItem,\n disabled,\n onChange,\n value,\n min,\n max,\n localizer,\n renderDay,\n ...props\n}: MonthProps) {\n let month = visibleDays(focusedItem, localizer.firstOfWeek())\n let rows = chunk(month, 7)\n\n return (\n <CalendarView\n {...props}\n focusedItem={focusedItem}\n className={cn(className, 'rw-calendar-month')}\n >\n <div role=\"rowgroup\" className=\"rw-calendar-head\">\n <CalendarView.Row className=\"rw-calendar-row\">\n {rows[0].map((date, idx) => (\n <div role=\"columnheader\" className=\"rw-head-cell\" key={idx}>\n {localizer.formatDate(date, 'weekday')}\n </div>\n ))}\n </CalendarView.Row>\n </div>\n <CalendarView.Body>\n {rows.map((row, rowIdx) => (\n <CalendarView.Row key={rowIdx}>\n {row.map((date, colIdx) => {\n let formattedDate = localizer.formatDate(date, 'dayOfMonth')\n let label = localizer.formatDate(date, 'date')\n\n return (\n <CalendarView.Cell\n key={colIdx}\n label={label}\n date={date}\n min={min}\n max={max}\n unit=\"day\"\n viewUnit=\"month\"\n onChange={onChange}\n focusedItem={focusedItem}\n selected={value}\n disabled={disabled}\n >\n {renderDay\n ? renderDay({ date, label: formattedDate })\n : formattedDate}\n </CalendarView.Cell>\n )\n })}\n </CalendarView.Row>\n ))}\n </CalendarView.Body>\n </CalendarView>\n )\n}\n\nexport default MonthView\n","import cn from 'classnames'\nimport closest from 'dom-helpers/closest'\nimport PropTypes from 'prop-types'\nimport React, {\n useImperativeHandle,\n useMemo,\n useRef,\n SyntheticEvent,\n useEffect,\n} from 'react'\nimport { useUncontrolledProp } from 'uncontrollable'\nimport AddToListOption, { CREATE_OPTION } from './AddToListOption'\nimport { times } from './Icon'\nimport List, { ListHandle } from './List'\nimport { FocusListContext, useFocusList } from './FocusListContext'\nimport MultiselectInput from './MultiselectInput'\nimport TagList, { RenderTagProp, TagComponentProp } from './MultiselectTagList'\nimport BasePopup from './Popup'\nimport Widget from './Widget'\nimport WidgetPicker from './WidgetPicker'\nimport { useMessagesWithDefaults } from './messages'\nimport {\n BaseListboxInputProps,\n Filterable,\n PopupWidgetProps,\n Searchable,\n WidgetHTMLProps,\n WidgetProps,\n} from './shared'\nimport { DataItem, Value, WidgetHandle } from './types'\nimport { setActiveDescendant } from './A11y'\nimport { useFilteredData, Filter } from './Filter'\nimport * as CustomPropTypes from './PropTypes'\nimport canShowCreate from './canShowCreate'\nimport { Accessors, useAccessors } from './Accessors'\nimport useDropdownToggle from './useDropdownToggle'\nimport useFocusManager from './useFocusManager'\nimport { notify, useFirstFocusedRender, useInstanceId } from './WidgetHelpers'\nimport DropdownCaret from './PickerCaret'\n\nconst ENTER = 13\n\nconst INSERT = 'insert'\nconst REMOVE = 'remove'\n\nlet propTypes = {\n data: PropTypes.array,\n //-- controlled props --\n value: PropTypes.array,\n\n /**\n * @type {function (\n * dataItems: ?any[],\n * metadata: {\n * dataItem: any,\n * action: 'insert' | 'remove',\n * originalEvent: SyntheticEvent,\n * lastValue: ?any[],\n * searchTerm: ?string\n * }\n * ): void}\n */\n onChange: PropTypes.func,\n\n searchTerm: PropTypes.string,\n /**\n * @type {function (\n * searchTerm: ?string,\n * metadata: {\n * action: 'clear' | 'input',\n * lastSearchTerm: ?string,\n * originalEvent: SyntheticEvent,\n * }\n * ): void}\n */\n onSearch: PropTypes.func,\n\n open: PropTypes.bool,\n handleOpen: PropTypes.func,\n //-------------------------------------------\n\n dataKey: CustomPropTypes.accessor,\n textField: CustomPropTypes.accessor,\n\n renderTagValue: PropTypes.func,\n\n renderListItem: PropTypes.func,\n\n renderListGroup: PropTypes.func,\n groupBy: CustomPropTypes.accessor,\n\n allowCreate: PropTypes.oneOf([true, false, 'onFilter']),\n\n /**\n *\n * @type { (dataItem: ?any, metadata: { originalEvent: SyntheticEvent }) => void }\n */\n onSelect: PropTypes.func,\n\n /**\n * @type { (searchTerm: string) => void }\n */\n onCreate: PropTypes.func,\n\n busy: PropTypes.bool,\n\n /** Specify the element used to render the select (down arrow) icon. */\n selectIcon: PropTypes.node,\n\n /** Specify the element used to render tag clear icons. */\n clearTagIcon: PropTypes.node,\n\n /** Specify the element used to render the busy indicator */\n busySpinner: PropTypes.node,\n\n dropUp: PropTypes.bool,\n popupTransition: PropTypes.elementType,\n\n /** Adds a css class to the input container element. */\n containerClassName: PropTypes.string,\n inputProps: PropTypes.object,\n listProps: PropTypes.object,\n\n autoFocus: PropTypes.bool,\n placeholder: PropTypes.string,\n\n /** Continue to show the input placeholder even if tags are selected */\n showPlaceholderWithValues: PropTypes.bool,\n\n /** Continue to show the selected items in the dropdown list */\n showSelectedItemsInList: PropTypes.bool,\n\n disabled: CustomPropTypes.disabled.acceptsArray,\n readOnly: CustomPropTypes.disabled,\n\n messages: PropTypes.shape({\n open: CustomPropTypes.message,\n emptyList: CustomPropTypes.message,\n emptyFilter: CustomPropTypes.message,\n createOption: CustomPropTypes.message,\n\n tagsLabel: CustomPropTypes.message,\n selectedItems: CustomPropTypes.message,\n noneSelected: CustomPropTypes.message,\n removeLabel: CustomPropTypes.message,\n }),\n}\n\nconst EMPTY_ARRAY = [] as unknown[]\n\nfunction useMultiselectData<TDataItem>(\n value = EMPTY_ARRAY,\n data: readonly TDataItem[],\n accessors: Accessors,\n filter?: Filter<TDataItem>,\n searchTerm?: string,\n showSelectedItemsInList?: boolean,\n) {\n data = useMemo(\n () =>\n showSelectedItemsInList\n ? data\n : data.filter((i) => !value.some((v) => accessors.matches(i, v))),\n [data, showSelectedItemsInList, value, accessors],\n )\n\n return [\n useFilteredData(data, filter || false, searchTerm, accessors.text),\n data.length,\n ] as const\n}\n\nexport type MultiselectHandle = WidgetHandle\n\nexport type ChangeHandler<TDataItem> = (\n dataItem: TDataItem[],\n metadata: {\n action: 'insert' | 'remove'\n dataItem: TDataItem\n searchTerm?: string\n lastValue: Value\n originalEvent?: React.SyntheticEvent\n },\n) => void\n\nexport interface MultiselectProps<TDataItem = DataItem>\n extends WidgetHTMLProps,\n WidgetProps,\n PopupWidgetProps,\n Filterable<TDataItem>,\n Searchable,\n Omit<BaseListboxInputProps<TDataItem, unknown[]>, 'onChange'> {\n onChange?: ChangeHandler<TDataItem>\n onCreate?: (searchTerm: string) => void\n showPlaceholderWithValues?: boolean\n renderTagValue?: RenderTagProp<TDataItem>\n clearTagIcon?: React.ReactNode\n tagOptionComponent?: TagComponentProp\n showSelectedItemsInList?: boolean\n}\n\ndeclare interface Multiselect {\n <TDataItem = DataItem>(\n props: MultiselectProps<TDataItem> & React.RefAttributes<MultiselectHandle>,\n ): React.ReactElement | null\n\n displayName?: string\n propTypes?: any\n}\n\n/**\n * ---\n * shortcuts:\n * - { key: left arrow, label: move focus to previous tag }\n * - { key: right arrow, label: move focus to next tag }\n * - { key: delete, deselect focused tag }\n * - { key: backspace, deselect next tag }\n * - { key: alt + up arrow, label: close Multiselect }\n * - { key: down arrow, label: open Multiselect, and move focus to next item }\n * - { key: up arrow, label: move focus to previous item }\n * - { key: home, label: move focus to first item }\n * - { key: end, label: move focus to last item }\n * - { key: enter, label: select focused item }\n * - { key: ctrl + enter, label: create new tag from current searchTerm }\n * - { key: any key, label: search list for item starting with key }\n * ---\n *\n * A select listbox alternative.\n *\n * @public\n */\nconst Multiselect: Multiselect = React.forwardRef(function Multiselect<\n TDataItem\n>(\n {\n dataKey,\n textField,\n autoFocus,\n id,\n\n value,\n defaultValue = [],\n onChange,\n\n open,\n defaultOpen = false,\n onToggle,\n\n focusFirstItem = false,\n\n searchTerm,\n defaultSearchTerm = '',\n onSearch,\n\n filter = 'startsWith',\n allowCreate = false,\n className,\n containerClassName,\n placeholder,\n busy,\n disabled,\n readOnly,\n selectIcon,\n clearTagIcon = times,\n busySpinner,\n dropUp,\n tabIndex,\n popupTransition,\n showPlaceholderWithValues = false,\n showSelectedItemsInList = false,\n onSelect,\n onCreate,\n onKeyDown,\n onBlur,\n onFocus,\n inputProps,\n listProps,\n renderListItem,\n renderListGroup,\n renderTagValue,\n optionComponent,\n tagOptionComponent,\n groupBy,\n listComponent: ListComponent = List,\n popupComponent: Popup = BasePopup,\n data: rawData = [],\n messages: userMessages,\n ...elementProps\n }: MultiselectProps<TDataItem>,\n outerRef: React.RefObject<MultiselectHandle>,\n) {\n let [currentValue, handleChange] = useUncontrolledProp(\n value,\n defaultValue,\n onChange,\n )\n const [currentOpen, handleOpen] = useUncontrolledProp(\n open,\n defaultOpen,\n onToggle,\n )\n const [currentSearch, handleSearch] = useUncontrolledProp(\n searchTerm,\n defaultSearchTerm,\n onSearch,\n )\n\n const ref = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const listRef = useRef<ListHandle>(null)\n\n const inputId = useInstanceId(id, '_input')\n const tagsId = useInstanceId(id, '_taglist')\n const listId = useInstanceId(id, '_listbox')\n const createId = useInstanceId(id, '_createlist_option')\n const activeTagId = useInstanceId(id, '_taglist_active_tag')\n const activeOptionId = useInstanceId(id, '_listbox_active_option')\n\n const accessors = useAccessors(textField, dataKey)\n const messages = useMessagesWithDefaults(userMessages)\n const toggle = useDropdownToggle(currentOpen, handleOpen)\n\n const isDisabled = disabled === true\n const isReadOnly = !!readOnly\n\n const [focusEvents, focused] = useFocusManager(\n ref,\n { disabled: isDisabled, onBlur, onFocus },\n {\n didHandle(focused, event) {\n if (focused) return focus()\n\n toggle.close()\n clearSearch(event)\n\n tagList.focus(null)\n },\n },\n )\n\n const dataItems = useMemo(\n () => currentValue!.map((item) => accessors.findOrSelf(rawData, item)),\n [rawData, currentValue, accessors],\n )\n\n const [data, lengthWithoutValues] = useMultiselectData(\n dataItems,\n rawData,\n accessors,\n currentOpen ? filter : false,\n currentSearch,\n showSelectedItemsInList,\n )\n\n const list = useFocusList<TDataItem>({\n scope: ref,\n scopeSelector: '.rw-popup',\n focusFirstItem,\n activeId: activeOptionId,\n anchorItem: currentOpen ? dataItems[dataItems.length - 1] : undefined,\n })\n const tagList = useFocusList<TDataItem>({\n scope: ref,\n scopeSelector: '.rw-multiselect-taglist',\n activeId: activeTagId,\n })\n\n const showCreateOption = canShowCreate(allowCreate, {\n searchTerm: currentSearch,\n data,\n dataItems,\n accessors,\n })\n\n /**\n * Update aria when it changes on update\n */\n const focusedTag = tagList.getFocused()\n useEffect(() => {\n if (currentOpen) return\n setActiveDescendant(inputRef.current, focusedTag ? activeTagId : '')\n }, [activeTagId, currentOpen, focusedTag])\n\n const focusedItem = list.getFocused()\n useEffect(() => {\n if (!currentOpen) return\n // if (focusedItem) tagList.focus(null)\n setActiveDescendant(inputRef.current, focusedItem ? activeOptionId : '')\n }, [activeOptionId, currentOpen, focusedItem])\n\n /**\n * Event Handlers\n */\n\n const handleDelete = (dataItem: TDataItem, event: React.SyntheticEvent) => {\n if (isDisabled || readOnly || tagList.size() === 0) return\n focus()\n change(dataItem, event, REMOVE)\n }\n\n const deletingRef = useRef(false)\n\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value && !deletingRef.current)\n deletingRef.current = true\n }\n\n const handleSearchKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && deletingRef.current) {\n deletingRef.current = false\n }\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n search(e.target.value, e, 'input')\n toggle.open()\n }\n\n const handleClick = (e: React.SyntheticEvent<HTMLDivElement>) => {\n if (isDisabled || readOnly) return\n\n // prevents double clicks when in a <label>\n e.preventDefault()\n focus()\n\n if (closest(e.target as HTMLDivElement, '.rw-select') && currentOpen) {\n toggle.close()\n } else toggle.open()\n }\n\n const handleDoubleClick = () => {\n if (isDisabled || !inputRef.current) return\n\n focus()\n if (inputRef.current) inputRef.current.select()\n }\n\n const handleSelect = (\n dataItem: TDataItem | undefined,\n originalEvent: React.SyntheticEvent,\n ) => {\n if (dataItem === undefined) return\n\n originalEvent.preventDefault()\n\n if (dataItem === CREATE_OPTION) {\n handleCreate(originalEvent)\n return\n }\n\n notify(onSelect, [dataItem, { originalEvent }])\n\n if (!showSelectedItemsInList || !dataItems.includes(dataItem)) {\n change(dataItem, originalEvent, INSERT)\n } else {\n change(dataItem, originalEvent, REMOVE)\n }\n focus()\n }\n\n const handleCreate = (event: SyntheticEvent) => {\n notify(onCreate, [currentSearch!])\n\n clearSearch(event)\n focus()\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) {\n event.preventDefault()\n return\n }\n\n let { key, keyCode, altKey, ctrlKey } = event\n\n notify(onKeyDown, [event])\n\n if (event.defaultPrevented) return\n\n if (key === 'ArrowDown') {\n event.preventDefault()\n\n if (!currentOpen) {\n toggle.open()\n return\n }\n list.focus(list.next())\n tagList.focus(null)\n } else if (key === 'ArrowUp' && (currentOpen || altKey)) {\n event.preventDefault()\n\n if (altKey) {\n toggle.close()\n return\n }\n\n list.focus(list.prev())\n tagList.focus(null)\n } else if (key === 'End') {\n event.preventDefault()\n\n if (currentOpen) {\n list.focus(list.last())\n tagList.focus(null)\n } else {\n tagList.focus(tagList.last())\n list.focus(null)\n }\n } else if (key === 'Home') {\n event.preventDefault()\n if (currentOpen) list.focus(list.first())\n else list.focus(tagList.first())\n } else if (currentOpen && keyCode === ENTER) {\n // using keyCode to ignore enter for japanese IME\n event.preventDefault()\n\n if (ctrlKey && showCreateOption) {\n return handleCreate(event)\n }\n\n handleSelect(list.getFocused(), event)\n } else if (key === 'Escape') {\n if (currentOpen) toggle.close()\n else tagList.focus(null)\n //\n } else if (!currentSearch && !deletingRef.current) {\n //\n if (key === 'ArrowLeft') {\n tagList.focus(tagList.prev({ behavior: 'loop' }))\n } else if (key === 'ArrowRight') {\n tagList.focus(tagList.next({ behavior: 'loop' }))\n //\n } else if (key === 'Delete' && tagList.getFocused()) {\n handleDelete(tagList.getFocused()!, event)\n //\n } else if (key === 'Backspace') {\n handleDelete(tagList.toDataItem(tagList.last()!)!, event)\n } else if (key === ' ' && !currentOpen) {\n event.preventDefault()\n toggle.open()\n }\n }\n }\n\n /**\n * Methods\n */\n\n function change(\n dataItem: TDataItem,\n originalEvent: React.SyntheticEvent,\n action: 'insert' | 'remove',\n ) {\n let nextDataItems = dataItems\n\n switch (action) {\n case INSERT:\n nextDataItems = nextDataItems.concat(dataItem)\n break\n case REMOVE:\n nextDataItems = nextDataItems.filter((d) => d !== dataItem)\n break\n }\n\n handleChange(nextDataItems, {\n action,\n dataItem,\n originalEvent,\n searchTerm: currentSearch,\n lastValue: currentValue,\n })\n\n clearSearch(originalEvent)\n }\n\n function clearSearch(originalEvent: React.SyntheticEvent) {\n search('', originalEvent, 'clear')\n }\n\n function search(\n nextSearchTerm: string,\n originalEvent: React.SyntheticEvent,\n action: 'input' | 'clear' = 'input',\n ) {\n if (nextSearchTerm !== currentSearch)\n handleSearch(nextSearchTerm, {\n action,\n originalEvent,\n lastSearchTerm: currentSearch,\n })\n }\n\n function focus() {\n if (inputRef.current) inputRef.current.focus()\n }\n\n /**\n * Render\n */\n\n useImperativeHandle(outerRef, () => ({\n focus,\n }))\n\n let shouldRenderPopup = useFirstFocusedRender(focused, currentOpen!)\n\n let shouldRenderTags = !!dataItems.length\n let inputOwns =\n `${listId} ` +\n (shouldRenderTags ? tagsId : '') +\n (showCreateOption ? createId : '')\n\n return (\n <Widget\n {...elementProps}\n ref={ref}\n open={currentOpen}\n dropUp={dropUp}\n focused={focused}\n disabled={isDisabled}\n readOnly={isReadOnly}\n onKeyDown={handleKeyDown}\n {...focusEvents}\n className={cn(className, 'rw-multiselect')}\n >\n <WidgetPicker\n onClick={handleClick}\n onTouchEnd={handleClick}\n onDoubleClick={handleDoubleClick}\n className={cn(containerClassName, 'rw-widget-input')}\n >\n <FocusListContext.Provider value={tagList.context}>\n <TagList<TDataItem>\n id={tagsId}\n textAccessor={accessors.text}\n clearTagIcon={clearTagIcon}\n label={messages.tagsLabel()}\n value={dataItems}\n readOnly={isReadOnly}\n disabled={disabled}\n onDelete={handleDelete}\n tagOptionComponent={tagOptionComponent}\n renderTagValue={renderTagValue}\n >\n <MultiselectInput\n {...inputProps}\n role=\"combobox\"\n autoFocus={autoFocus}\n tabIndex={tabIndex || 0}\n aria-expanded={!!currentOpen}\n aria-busy={!!busy}\n aria-owns={inputOwns}\n aria-controls={listId}\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n value={currentSearch}\n disabled={isDisabled}\n readOnly={isReadOnly}\n placeholder={\n (currentValue!.length && !showPlaceholderWithValues\n ? ''\n : placeholder) || ''\n }\n onKeyDown={handleSearchKeyDown}\n onKeyUp={handleSearchKeyUp}\n onChange={handleInputChange}\n ref={inputRef}\n />\n </TagList>\n </FocusListContext.Provider>\n <DropdownCaret\n busy={busy}\n spinner={busySpinner}\n icon={selectIcon}\n visible={focused}\n />\n </WidgetPicker>\n <FocusListContext.Provider value={list.context}>\n {shouldRenderPopup && (\n <Popup\n dropUp={dropUp}\n open={currentOpen}\n transition={popupTransition}\n onEntering={() => listRef.current!.scrollIntoView()}\n >\n <ListComponent\n {...listProps}\n id={listId}\n data={data}\n tabIndex={-1}\n disabled={disabled}\n searchTerm={currentSearch}\n accessors={accessors}\n renderItem={renderListItem}\n renderGroup={renderListGroup}\n value={dataItems}\n groupBy={groupBy}\n optionComponent={optionComponent}\n onChange={(d, meta) =>\n handleSelect(d as TDataItem, meta.originalEvent!)\n }\n aria-live=\"polite\"\n aria-labelledby={inputId}\n aria-hidden={!currentOpen}\n ref={listRef}\n messages={{\n emptyList: lengthWithoutValues\n ? messages.emptyFilter\n : messages.emptyList,\n }}\n />\n\n {showCreateOption && (\n <AddToListOption onSelect={handleCreate}>\n {messages.createOption(currentValue, currentSearch!)}\n </AddToListOption>\n )}\n </Popup>\n )}\n </FocusListContext.Provider>\n </Widget>\n )\n})\n\nMultiselect.displayName = 'Multiselect'\nMultiselect.propTypes = propTypes\n\nexport default Multiselect\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport * as CustomPropTypes from './PropTypes'\n\nconst propTypes = {\n value: PropTypes.string,\n placeholder: PropTypes.string,\n maxLength: PropTypes.number,\n onChange: PropTypes.func.isRequired,\n\n disabled: CustomPropTypes.disabled,\n readOnly: CustomPropTypes.disabled,\n}\n\nconst MultiselectInput = React.forwardRef(\n (\n { disabled, readOnly, ...props }: React.HTMLProps<HTMLInputElement>,\n ref: React.Ref<HTMLInputElement>,\n ) => {\n let size =\n Math.max(String(props.value || props.placeholder || '').length, 1) + 1\n\n return (\n <input\n spellCheck=\"false\"\n autoCapitalize=\"off\"\n {...props}\n size={size}\n ref={ref}\n autoComplete=\"off\"\n className=\"rw-multiselect-input\"\n aria-disabled={disabled}\n aria-readonly={readOnly}\n disabled={disabled}\n readOnly={readOnly}\n />\n )\n },\n)\n\nMultiselectInput.displayName = 'MultiselectInput'\nMultiselectInput.propTypes = propTypes\n\nexport default MultiselectInput\n","import cn from 'classnames'\nimport React from 'react'\nimport { useListOption } from './FocusListContext'\nimport { DataItem } from './types'\n\nexport interface MultiselectTagProps {\n id?: string\n className?: string\n dataItem: DataItem\n disabled?: boolean\n readOnly?: boolean\n label?: string\n style?: React.CSSProperties\n onRemove: (\n dataItem: DataItem,\n event: React.MouseEvent<HTMLButtonElement>,\n ) => void\n clearTagIcon: React.ReactNode\n children: React.ReactNode\n}\n\nfunction MultiselectTag({\n className,\n children,\n style,\n label,\n disabled,\n readOnly,\n onRemove,\n clearTagIcon,\n dataItem,\n}: MultiselectTagProps) {\n const [ref, focused, id] = useListOption<any, HTMLDivElement>(dataItem)\n\n const handleRemove = (event: any) => {\n if (!disabled) onRemove(dataItem, event)\n }\n\n return (\n <div\n ref={ref}\n role=\"option\"\n id={id}\n data-rw-option=\"\"\n data-rw-focusable={disabled ? undefined : ''}\n data-rw-focused={focused ? '' : undefined}\n className={cn(\n className,\n 'rw-multiselect-tag',\n disabled && 'rw-state-disabled',\n focused && !disabled && 'rw-state-focus',\n )}\n style={style}\n >\n <span className=\"rw-multiselect-tag-label\">{children}</span>\n <button\n type=\"button\"\n // these should not be tabbable\n tabIndex={-1}\n onClick={handleRemove}\n onTouchEnd={handleRemove}\n disabled={disabled || readOnly}\n className=\"rw-multiselect-tag-btn\"\n aria-label={label || 'Remove item'}\n >\n {clearTagIcon}\n </button>\n </div>\n )\n}\n\nexport default MultiselectTag\n","import React, { ReactNode } from 'react'\nimport MultiselectTag, { MultiselectTagProps } from './MultiselectTag'\nimport { RenderProp } from './types'\nimport { TextAccessorFn } from './Accessors'\n\nexport type RenderTagProp<TDataItem> = RenderProp<{ item: TDataItem }>\n\nexport type TagComponentProp = React.ComponentType<MultiselectTagProps>\n\ninterface MultiselectTagListProps<TDataItem> {\n id: string\n label?: string\n value: readonly TDataItem[]\n focusedItem?: TDataItem\n clearTagIcon: React.ReactNode\n textAccessor: TextAccessorFn\n onDelete: (\n dataItem: TDataItem,\n event: React.MouseEvent<HTMLButtonElement>,\n ) => void\n renderTagValue?: RenderTagProp<TDataItem>\n tagOptionComponent?: TagComponentProp\n\n disabled?: readonly TDataItem[] | boolean\n readOnly?: boolean\n children?: ReactNode\n}\n\nfunction MultiselectTagList<TDataItem>({\n id,\n value,\n textAccessor,\n label,\n disabled,\n readOnly,\n onDelete,\n children,\n clearTagIcon,\n renderTagValue,\n tagOptionComponent: TagOption = MultiselectTag,\n}: MultiselectTagListProps<TDataItem>) {\n return (\n <div\n id={id}\n role=\"listbox\"\n aria-label={label}\n aria-multiselectable=\"true\"\n aria-orientation=\"horizontal\"\n className=\"rw-multiselect-taglist\"\n >\n {value.map((item, i) => {\n const itemDisabled = Array.isArray(disabled)\n ? disabled.includes(item)\n : !!disabled\n return (\n <TagOption\n key={i}\n dataItem={item}\n onRemove={onDelete}\n clearTagIcon={clearTagIcon}\n disabled={itemDisabled}\n readOnly={readOnly}\n >\n {renderTagValue ? renderTagValue({ item }) : textAccessor(item)}\n </TagOption>\n )\n })}\n {children}\n </div>\n )\n}\n\nexport default MultiselectTagList\n","import activeElement from 'dom-helpers/activeElement'\nimport canUseDOM from 'dom-helpers/canUseDOM'\nimport PropTypes from 'prop-types'\nimport React, { FocusEvent, SyntheticEvent } from 'react'\nimport { findDOMNode } from 'react-dom'\nimport Input from './Input'\nimport * as CustomPropTypes from './PropTypes'\nimport { Localizer } from './Localization'\n\nlet isSign = (val: string) => (val || '').trim() === '-'\n\nfunction isPaddedZeros(str: string, localizer: Localizer) {\n let localeChar = localizer.decimalCharacter()\n let [_, decimals] = str.split(localeChar)\n\n return !!(decimals && decimals.match(/0+$/))\n}\n\nfunction isAtDelimiter(str: string, localizer: Localizer) {\n let localeChar = localizer.decimalCharacter()\n let lastIndex = str.length - 1\n\n if (str.length < 1) return false\n\n let char = str[lastIndex]\n return !!(char === localeChar && str.indexOf(char) === lastIndex)\n}\n\nexport interface NumberPickerInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'onChange' | 'value'\n > {\n value: number | null | undefined\n editing?: boolean\n placeholder?: string\n innerRef?: React.Ref<HTMLInputElement>\n localizer: Localizer\n parse?: (str: string, localizer: Localizer) => number\n\n min?: number\n max?: number\n\n disabled?: boolean\n readOnly?: boolean\n\n onChange: (\n number: number | null | undefined,\n event: SyntheticEvent<HTMLInputElement>,\n ) => void\n}\n\ninterface NumberPickerInputState {\n stringValue?: string\n lastValueFromProps?: string\n}\n\ninterface NumberPickerInputSnapshot {\n reselectText?: boolean\n}\n\nclass NumberPickerInput extends React.Component<\n NumberPickerInputProps,\n NumberPickerInputState,\n NumberPickerInputSnapshot\n> {\n static defaultProps = {\n value: null,\n editing: false,\n }\n\n static propTypes = {\n value: PropTypes.number,\n editing: PropTypes.bool,\n placeholder: PropTypes.string,\n\n localizer: PropTypes.object.isRequired,\n parse: PropTypes.func,\n\n min: PropTypes.number,\n max: PropTypes.number,\n\n disabled: CustomPropTypes.disabled,\n readOnly: CustomPropTypes.disabled,\n\n onChange: PropTypes.func.isRequired,\n }\n\n state: NumberPickerInputState = {}\n\n getSnapshotBeforeUpdate({\n editing,\n }: NumberPickerInputProps): NumberPickerInputSnapshot {\n return {\n reselectText: !editing && this.props.editing && this.isSelectingAllText(),\n }\n }\n\n static getDerivedStateFromProps(\n nextProps: NumberPickerInputProps,\n prevState: NumberPickerInputState,\n ) {\n let { value, editing, localizer } = nextProps\n\n let decimal = localizer.decimalCharacter()\n\n const stringValue =\n value == null || isNaN(value)\n ? ''\n : editing\n ? ('' + value).replace('.', decimal)\n : localizer.formatNumber(value /*, 'default'*/)\n\n if (prevState.lastValueFromProps !== stringValue)\n return {\n stringValue,\n lastValueFromProps: stringValue,\n }\n\n return null\n }\n\n componentDidUpdate(\n _: NumberPickerInputProps,\n __: NumberPickerInputState,\n { reselectText }: NumberPickerInputSnapshot,\n ) {\n if (reselectText) (findDOMNode(this) as HTMLInputElement).select()\n }\n\n // this intermediate state is for when one runs into\n // the decimal or are typing the number\n setStringValue(stringValue: string) {\n this.setState({ stringValue })\n }\n\n handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n let str = this.state.stringValue\n let number = this.parseNumber(str!)\n\n // if number is below the min\n // we need to flush low values and decimal stops, onBlur means i'm done inputing\n if (this.isIntermediateValue(number, str!)) {\n if (isNaN(number!)) {\n number = null\n }\n this.props.onChange(number, event)\n }\n }\n\n handleChange = (event: React.FormEvent<HTMLInputElement>) => {\n let { value, onChange } = this.props\n\n let stringValue = (event.target as HTMLInputElement).value,\n numberValue = this.parseNumber(stringValue)\n\n let isIntermediate = this.isIntermediateValue(numberValue, stringValue)\n\n if (stringValue == null || stringValue.trim() === '') {\n this.setStringValue('')\n onChange(null, event)\n\n return\n }\n // order here matters a lot\n if (isIntermediate) {\n this.setStringValue(stringValue)\n } else if (numberValue !== value) {\n onChange(numberValue, event)\n } else if (stringValue != this.state.stringValue) {\n this.setStringValue(stringValue)\n }\n }\n\n isIntermediateValue(num: number | undefined | null, str: string) {\n let { localizer, min } = this.props\n\n return !!(\n num! < min! ||\n isSign(str) ||\n isAtDelimiter(str, localizer) ||\n isPaddedZeros(str, localizer)\n )\n }\n\n isSelectingAllText() {\n const node = canUseDOM && (findDOMNode(this) as HTMLInputElement)\n return (\n canUseDOM &&\n activeElement() === node &&\n node.selectionStart === 0 &&\n node.selectionEnd === node.value.length\n )\n }\n\n parseNumber(strVal: string): number | undefined | null {\n let { localizer, parse: userParse } = this.props\n\n if (userParse) return userParse(strVal, localizer)\n\n return localizer.parseNumber(strVal)\n }\n\n render() {\n let {\n disabled,\n readOnly,\n placeholder,\n // eslint-disable-next-line react/prop-types\n innerRef,\n min,\n max,\n localizer: _,\n // eslint-disable-next-line no-unused-vars\n editing: __,\n ...props\n } = this.props\n\n let value = this.state.stringValue\n\n return (\n <Input\n {...props}\n ref={innerRef}\n inputMode=\"numeric\"\n className=\"rw-widget-input\"\n onChange={this.handleChange}\n onBlur={this.handleBlur}\n aria-valuenow={(value as any) as number /*HACK*/}\n aria-valuemin={isFinite(min!) ? min : undefined}\n aria-valuemax={isFinite(max!) ? max : undefined}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n value={value}\n />\n )\n }\n}\n\nexport default NumberPickerInput\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, { useRef } from 'react'\nimport { useUncontrolled } from 'uncontrollable'\nimport Button from './Button'\nimport { caretDown, caretUp } from './Icon'\nimport { useLocalizer, Localizer } from './Localization'\nimport NumberInput from './NumberInput'\nimport Widget, { WidgetProps } from './Widget'\nimport WidgetPicker from './WidgetPicker'\nimport * as CustomPropTypes from './PropTypes'\nimport useFocusManager from './useFocusManager'\nimport { notify } from './WidgetHelpers'\nimport { WidgetHTMLProps } from './shared'\nimport useEventCallback from '@restart/hooks/useEventCallback'\n\n// my tests in ie11/chrome/FF indicate that keyDown repeats\n// at about 35ms+/- 5ms after an initial 500ms delay. callback fires on the leading edge\nfunction createInterval(callback: () => void) {\n let fn: () => void\n let id: number\n const cancel = () => clearTimeout(id)\n\n id = window.setTimeout(\n (fn = () => {\n id = window.setTimeout(fn, 35)\n callback() //fire after everything in case the user cancels on the first call\n }),\n 500,\n )\n\n return cancel\n}\n\nfunction clamp(value: number | null | undefined, min: number, max: number) {\n max = max == null ? Infinity : max\n min = min == null ? -Infinity : min\n\n if (value == null || (value as any) === '') return null\n\n return Math.max(\n Math.min(typeof value == 'string' ? parseInt(value) : value, max),\n min,\n )\n}\n\nconst propTypes = {\n /**\n * @example ['valuePicker', [ [1, null] ]]\n */\n value: PropTypes.number,\n\n /**\n * @example ['onChangePicker', [ [1, null] ]]\n */\n onChange: PropTypes.func,\n\n /**\n * The minimum number that the NumberPicker value.\n * @example ['prop', ['min', 0]]\n */\n min: PropTypes.number,\n\n /**\n * The maximum number that the NumberPicker value.\n *\n * @example ['prop', ['max', 0]]\n */\n max: PropTypes.number,\n\n /**\n * Amount to increase or decrease value when using the spinner buttons.\n *\n * @example ['prop', ['step', 5]]\n */\n step: PropTypes.number,\n\n /**\n * Specify how precise the `value` should be when typing, incrementing, or decrementing the value.\n * When empty, precision is parsed from the current `format` and culture.\n */\n precision: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['auto'])]),\n\n /**\n * A format string used to display the number value. Localizer dependent, read about [localization](localization) for more info.\n *\n * @example ['prop', { max: 1, min: -1 , defaultValue: 0.2585, format: \"{ style: 'percent' }\" }]\n */\n format: PropTypes.any,\n\n parse: PropTypes.func,\n\n incrementIcon: PropTypes.node,\n decrementIcon: PropTypes.node,\n\n /** @ignore */\n tabIndex: PropTypes.any,\n name: PropTypes.string,\n placeholder: PropTypes.string,\n onKeyDown: PropTypes.func,\n onKeyPress: PropTypes.func,\n onKeyUp: PropTypes.func,\n autoFocus: PropTypes.bool,\n\n /**\n * @example ['disabled', ['1']]\n */\n disabled: CustomPropTypes.disabled,\n /**\n * @example ['readOnly', ['1.5']]\n */\n readOnly: CustomPropTypes.disabled,\n\n /** Adds a css class to the input container element. */\n containerClassName: PropTypes.string,\n\n inputProps: PropTypes.object,\n messages: PropTypes.shape({\n increment: PropTypes.string,\n decrement: PropTypes.string,\n }),\n\n /** @ignore */\n localizer: PropTypes.object,\n}\n\nconst defaultProps = {\n incrementIcon: caretUp,\n decrementIcon: caretDown,\n\n min: -Infinity,\n max: Infinity,\n step: 1,\n precision: 'auto',\n}\n\nexport interface NumberPickerProps\n extends WidgetHTMLProps,\n Omit<WidgetProps, 'onChange'> {\n /**\n * @example ['valuePicker', [ [1, null] ]]\n */\n value?: number | undefined\n\n /**\n * @example ['onChangePicker', [ [1, null] ]]\n */\n onChange?: (\n nextValue: number | null,\n ctx: {\n rawValue: number\n originalEvent: React.SyntheticEvent<\n HTMLDivElement | HTMLButtonElement\n > | null\n lastValue: number | undefined\n },\n ) => void\n\n /**\n * The minimum number that the NumberPicker value.\n * @example ['prop', ['min', 0]]\n */\n min?: number\n\n /**\n * The maximum number that the NumberPicker value.\n *\n * @example ['prop', ['max', 0]]\n */\n max?: number\n\n /**\n * Amount to increase or decrease value when using the spinner buttons.\n *\n * @example ['prop', ['step', 5]]\n */\n step?: number\n\n /**\n * Specify the decimal precision of the value when incrementing or decrementing by the\n * `step` value. This may be necessary to work around rounding issues due to\n * floating point math. By default the precision value used will be inferred\n * from the `step` and `value`, rounding the result to that.\n */\n precision?: number | 'auto'\n\n /**\n * A format string used to display the number value. Localizer dependent, read [localization](./localization) for more info.\n *\n * @example ['prop', { max: 1, min: -1 , defaultValue: 0.2585, format: \"{ style: 'percent' }\" }]\n */\n format?: string\n\n /**\n * Determines how the NumberPicker parses a number from the localized string representation.\n *\n * ```jsx live\n * import NumberPicker from 'react-widgets/NumberPicker';\n *\n * <NumberPicker\n * parse={(strValue, localizer) => {\n * return localizer.parseNumber(strValue.replace('_', ''))\n * }}\n * />\n * ```\n *\n * @example false\n */\n parse?: (str: string, localizer: Localizer) => number\n\n incrementIcon?: React.ReactNode\n decrementIcon?: React.ReactNode\n\n /** @ignore */\n tabIndex?: number\n name?: string\n placeholder?: string\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void\n onKeyPress?: (event: React.KeyboardEvent<HTMLDivElement>) => void\n onKeyUp?: (event: React.KeyboardEvent<HTMLDivElement>) => void\n autoFocus?: boolean\n\n /**\n * @example ['disabled', ['1']]\n */\n disabled?: boolean\n /**\n * @example ['readOnly', ['1.5']]\n */\n readOnly?: boolean\n\n /** Adds a css class to the input container element. */\n containerClassName?: string\n\n inputProps?: React.HtmlHTMLAttributes<HTMLInputElement>\n messages?: {\n increment?: string\n decrement?: string\n }\n\n /** @ignore */\n localizer?: Localizer\n}\n\n/**\n * ---\n * localized: true\n * shortcuts:\n * - { key: down arrow, label: decrement value }\n * - { key: up arrow, label: increment value }\n * - { key: home, label: set value to minimum value, if finite }\n * - { key: end, label: set value to maximum value, if finite }\n * ---\n *\n * @public\n */\nfunction NumberPicker(uncontrolledProps: NumberPickerProps) {\n const {\n className,\n containerClassName,\n disabled,\n readOnly,\n value,\n min,\n max,\n incrementIcon,\n decrementIcon,\n placeholder,\n autoFocus,\n tabIndex,\n parse,\n name,\n onChange,\n messages,\n format,\n onKeyDown,\n onKeyPress,\n onKeyUp,\n inputProps,\n precision,\n step: pStep,\n ...elementProps\n } = useUncontrolled(uncontrolledProps, { value: 'onChange' })\n\n const localizer = useLocalizer(messages, { number: format })\n\n const ref = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const repeaterRef = useRef<(() => void) | null>(null)\n\n const [focusEvents, focused] = useFocusManager(ref, uncontrolledProps, {\n willHandle(focused) {\n if (focused) focus()\n },\n })\n\n const handleMouseDown = useEventCallback(\n (\n direction: 'UP' | 'DOWN',\n event:\n | React.MouseEvent<HTMLButtonElement>\n | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if (event) event.persist()\n\n let method = direction === 'UP' ? increment : decrement\n\n let value = method(event),\n atTop = direction === 'UP' && value === max,\n atBottom = direction === 'DOWN' && value === min\n\n if (atTop || atBottom) handleMouseUp()\n else if (!repeaterRef.current) {\n repeaterRef.current = createInterval(() => {\n handleMouseDown(direction, event)\n })\n }\n },\n )\n\n const handleMouseUp = useEventCallback(() => {\n if (!repeaterRef.current) return\n repeaterRef.current()\n repeaterRef.current = null\n })\n\n const handleKeyDown = useEventCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) return\n\n let key = event.key\n\n notify(onKeyDown, [event])\n\n if (event.defaultPrevented) return\n\n if (key === 'End' && isFinite(max!)) handleChange(max!, event)\n else if (key === 'Home' && isFinite(min!)) handleChange(min!, event)\n else if (key === 'ArrowDown') {\n event.preventDefault()\n decrement(event)\n } else if (key === 'ArrowUp') {\n event.preventDefault()\n increment(event)\n }\n },\n )\n\n const handleChange = (\n rawValue: number,\n originalEvent: React.SyntheticEvent<\n HTMLDivElement | HTMLButtonElement\n > | null = null,\n ) => {\n let nextValue = clamp(rawValue, min!, max!)\n\n if (value !== nextValue)\n notify(onChange, [\n nextValue,\n {\n rawValue,\n originalEvent,\n lastValue: value,\n },\n ])\n }\n\n function focus() {\n inputRef.current?.focus()\n }\n\n function increment(\n event:\n | React.KeyboardEvent<HTMLDivElement>\n | React.MouseEvent<HTMLButtonElement>,\n ) {\n return step(pStep!, event)\n }\n\n function decrement(\n event:\n | React.KeyboardEvent<HTMLDivElement>\n | React.MouseEvent<HTMLButtonElement>,\n ) {\n return step(-pStep!, event)\n }\n\n function step(\n amount: number,\n event:\n | React.KeyboardEvent<HTMLDivElement>\n | React.MouseEvent<HTMLButtonElement>,\n ) {\n const nextValue = (value || 0) + amount\n let p: number | undefined =\n precision === 'auto'\n ? Math.max(getPrecision(value || 0), getPrecision(amount))\n : precision\n\n handleChange(\n p != null ? parseFloat(nextValue.toFixed(p)) : nextValue,\n event,\n )\n\n return nextValue\n }\n\n const clampedValue = clamp(value, min!, max!)\n\n return (\n <Widget\n {...elementProps}\n focused={focused}\n disabled={disabled}\n readOnly={readOnly}\n onKeyDown={handleKeyDown}\n {...focusEvents}\n ref={ref}\n className={cn(className, 'rw-number-picker')}\n >\n <WidgetPicker className={containerClassName}>\n <NumberInput\n {...inputProps}\n role=\"spinbutton\"\n tabIndex={tabIndex}\n value={clampedValue}\n placeholder={placeholder}\n autoFocus={autoFocus}\n editing={focused}\n localizer={localizer}\n parse={parse}\n name={name}\n min={min}\n max={max}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onKeyPress={onKeyPress}\n onKeyUp={onKeyUp}\n innerRef={inputRef}\n />\n <span className=\"rw-input-addon rw-number-picker-spinners\">\n <Button\n icon={incrementIcon}\n className=\"rw-picker-btn\"\n disabled={clampedValue === max || disabled || readOnly}\n label={(localizer.messages.increment as any)({\n value: clampedValue,\n min,\n max,\n })}\n onMouseUp={() => handleMouseUp()}\n onMouseDown={(e) => handleMouseDown('UP', e)}\n onMouseLeave={() => handleMouseUp()}\n />\n <Button\n icon={decrementIcon}\n className=\"rw-picker-btn\"\n disabled={clampedValue === min || disabled || readOnly}\n label={(localizer.messages.decrement as any)({\n value: clampedValue,\n min,\n max,\n })}\n onMouseUp={() => handleMouseUp()}\n onMouseDown={(e) => handleMouseDown('DOWN', e)}\n onMouseLeave={() => handleMouseUp()}\n />\n </span>\n </WidgetPicker>\n </Widget>\n )\n}\n\n;(NumberPicker as any).propTypes = propTypes\n;(NumberPicker as any).defaultProps = defaultProps\n\nexport default NumberPicker\n\nfunction getPrecision(a: number) {\n if (!isFinite(a)) return 0\n let e = 1\n let p = 0\n while (Math.round(a * e) / e !== a) {\n e *= 10\n p++\n }\n return p\n}\n","import cn from 'classnames'\nimport * as React from 'react'\nimport { ReactNode } from 'react'\nimport { Spinner, caretDown } from './Icon'\n\nexport interface Props extends React.HTMLProps<HTMLSpanElement> {\n icon?: ReactNode\n spinner?: ReactNode\n visible?: boolean\n busy?: boolean\n}\n\nconst DropdownCaret = ({\n className,\n busy,\n visible,\n icon = caretDown,\n spinner = Spinner,\n\n ...props\n}: Props) => (\n <span\n {...props}\n aria-hidden=\"true\"\n className={cn(className, 'rw-btn rw-picker-caret')}\n >\n {busy ? spinner : visible ? icon : null}\n </span>\n)\n\nexport default DropdownCaret\n","import cn from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport SlideDownTransition from './SlideDownTransition'\nimport { elementType } from './PropTypes'\nimport { TransitionProps } from 'react-transition-group/Transition'\n\ninterface StaticContainerProps {\n children: React.ReactNode\n shouldUpdate?: boolean\n}\n\nconst StaticContainer = React.memo(\n ({ children }: StaticContainerProps) => children as React.ReactElement,\n (_, { shouldUpdate }: StaticContainerProps) => !shouldUpdate,\n)\n\nconst defaultProps = {\n open: false,\n transition: SlideDownTransition,\n}\n\nconst propTypes = {\n open: PropTypes.bool,\n dropUp: PropTypes.bool,\n onEntering: PropTypes.func,\n onEntered: PropTypes.func,\n transition: elementType,\n role: PropTypes.string,\n id: PropTypes.string,\n}\n\nexport interface PopupProps {\n className?: string\n open?: boolean\n dropUp?: boolean\n onEnter?: () => void\n onEntering?: () => void\n onEntered?: () => void\n onExit?: () => void\n onExited?: () => void\n onExiting?: () => void\n transition?: React.ComponentType<TransitionProps>\n role?: string\n id?: string\n children: React.ReactNode\n}\n\nconst Popup = React.forwardRef(\n (\n {\n className,\n dropUp,\n open,\n role,\n id,\n transition,\n children,\n ...props\n }: PopupProps,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const Transition = transition!\n\n return (\n <Transition\n {...props}\n in={open}\n dropUp={dropUp}\n timeout={undefined! /**hack*/}\n className={cn('rw-popup-container', className)}\n >\n <div id={id} className=\"rw-popup\" ref={ref} role={role}>\n <StaticContainer shouldUpdate={open}>{children}</StaticContainer>\n </div>\n </Transition>\n )\n },\n)\n;(Popup as any).displayName = 'Popup'\n;(Popup as any).propTypes = propTypes\n;(Popup as any).defaultProps = defaultProps\n\nexport default Popup\n","import * as PropTypes from 'prop-types'\n\nexport const elementType = PropTypes.elementType\n\nexport let disabled: PropTypes.Validator<boolean> & {\n acceptsArray: PropTypes.Validator<any>\n} = Object.assign(\n (...args: [any, any, any, any, any]) => PropTypes.bool(...args),\n {\n acceptsArray: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n },\n)\n\nexport const accessor = PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n\nexport const message = PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n])\n","import cn from 'classnames'\nimport css from 'dom-helpers/css'\nimport getHeight from 'dom-helpers/height'\nimport transitionEnd from 'dom-helpers/transitionEnd'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport Transition, {\n ENTERING,\n EXITED,\n EXITING,\n TransitionStatus,\n} from 'react-transition-group/Transition'\n\nconst transitionClasses = {\n [ENTERING]: 'rw-slide-transition-entering',\n [EXITING]: 'rw-slide-transition-exiting',\n [EXITED]: 'rw-slide-transition-exited',\n}\n\nexport interface SlideDownTransitionProps {\n in: boolean\n innerClassName?: string\n dropUp?: boolean\n onExit?: () => void\n onExited?: () => void\n onEntering?: () => void\n onEntered?: () => void\n className?: string\n}\n\nclass SlideDownTransition extends React.Component<SlideDownTransitionProps> {\n static propTypes = {\n in: PropTypes.bool.isRequired,\n innerClassName: PropTypes.string,\n dropUp: PropTypes.bool,\n onExit: PropTypes.func,\n onExited: PropTypes.func,\n onEntering: PropTypes.func,\n onEntered: PropTypes.func,\n }\n\n getHeight(container: HTMLElement) {\n let content = container.firstChild as HTMLElement\n let margin =\n parseInt(css(content, 'margin-top') as string, 10) +\n parseInt(css(content, 'margin-bottom') as string, 10)\n\n let old = container.style.display\n let height\n\n container.style.display = 'block'\n height = (getHeight(content) || 0) + (isNaN(margin) ? 0 : margin)\n container.style.display = old\n return height\n }\n\n setContainerHeight = (elem: HTMLElement) => {\n elem.style.height = this.getHeight(elem) + 'px'\n }\n\n clearContainerHeight = (elem: HTMLElement) => {\n elem.style.height = ''\n }\n\n handleEntered = (elem: HTMLElement) => {\n this.clearContainerHeight(elem)\n\n if (this.props.onEntered) this.props.onEntered()\n }\n\n handleEntering = () => {\n if (this.props.onEntering) this.props.onEntering()\n }\n\n handleExit = (elem: HTMLElement) => {\n this.setContainerHeight(elem)\n\n if (this.props.onExit) this.props.onExit()\n }\n handleExited = (elem: HTMLElement) => {\n this.clearContainerHeight(elem)\n if (this.props.onExited) this.props.onExited()\n }\n\n handleTransitionEnd = (el: HTMLElement, done: () => void) => {\n transitionEnd(el.firstChild as HTMLElement, done)\n }\n\n render() {\n const { children, className, dropUp } = this.props\n\n return (\n <Transition\n appear\n in={this.props.in}\n onEnter={this.setContainerHeight}\n onEntering={this.handleEntering}\n onEntered={this.handleEntered}\n onExit={this.handleExit}\n onExited={this.handleExited}\n addEndListener={this.handleTransitionEnd}\n timeout={undefined as any /*hack*/}\n >\n {(status: TransitionStatus, innerProps: any) => (\n <div\n {...innerProps}\n className={cn(\n className,\n dropUp && 'rw-dropup',\n (transitionClasses as any)[status],\n )}\n >\n {React.cloneElement(children as React.ReactElement, {\n className: cn(\n 'rw-slide-transition',\n (children as React.ReactElement).props.className,\n ),\n })}\n </div>\n )}\n </Transition>\n )\n }\n}\n\nexport default SlideDownTransition\n","import cn from 'classnames'\nimport transitionEnd from 'dom-helpers/transitionEnd'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nconst DirectionPropType = PropTypes.oneOf(['left', 'right', 'top', 'bottom'])\n\nconst prefix = 'rw-calendar-transition'\nconst active = 'rw-calendar-transition-active'\nconst next = 'rw-calendar-transition-next'\nconst prev = 'rw-calendar-transition-prev'\n\nconst clone = (el: React.ReactElement | null | undefined, cls: string) =>\n el &&\n React.cloneElement(el, {\n className: cn(el.props.className, prefix, cls),\n })\n\ninterface SlideTransitionGroupProps {\n onTransitionEnd: (node: ChildNode, hadFocus: boolean | null) => void\n direction: 'left' | 'right' | 'top' | 'bottom'\n}\n\ninterface SlideTransitionGroupState {\n prevClasses: string\n currentClasses: string\n}\n\nclass SlideTransitionGroup extends React.Component<\n SlideTransitionGroupProps,\n SlideTransitionGroupState\n> {\n static defaultProps = {\n direction: 'left',\n }\n\n static propTypes = {\n direction: DirectionPropType,\n onTransitionEnd: PropTypes.func,\n }\n\n isTransitioning?: boolean\n container: React.RefObject<HTMLDivElement>\n current: React.ReactElement\n flush?: boolean\n prev?: React.ReactElement | null\n\n constructor(args: SlideTransitionGroupProps) {\n super(args)\n\n this.current = this.props.children as React.ReactElement\n this.container = React.createRef()\n\n this.state = {\n prevClasses: '',\n currentClasses: '',\n }\n }\n\n componentDidUpdate() {\n if (!this.flush || this.isTransitioning) return\n\n this.flush = false\n this.isTransitioning = true\n\n let previous = this.container.current!.firstChild!\n const hadFocus =\n document.activeElement && previous.contains(document.activeElement)\n\n this.setState({ prevClasses: '', currentClasses: next }, () => {\n let current = this.container.current!.lastChild! as HTMLElement\n\n current.clientHeight // eslint-disable-line\n\n this.setState(\n {\n prevClasses: prev,\n currentClasses: cn(next, active),\n },\n () => {\n transitionEnd(current, () => {\n this.prev = null\n\n if (\n (this.current as any).key !== (this.props.children as any).key\n ) {\n this.current = this.props.children as React.ReactElement\n }\n\n this.setState({ prevClasses: '', currentClasses: '' }, () =>\n this.handleTransitionEnd(hadFocus),\n )\n })\n },\n )\n })\n }\n\n handleTransitionEnd = (hadFocus: boolean | null) => {\n this.isTransitioning = false\n let current = this.container.current!.lastChild!\n if (this.props.onTransitionEnd)\n this.props.onTransitionEnd(current, hadFocus)\n }\n\n render() {\n let { direction, children, onTransitionEnd: _, ...props } = this.props\n\n if (!this.isTransitioning) {\n if ((this.current as any).key !== (children as any).key) {\n this.prev = this.current\n this.flush = true\n }\n\n this.current = children as React.ReactElement\n }\n\n let { prevClasses, currentClasses } = this.state\n return (\n <div\n {...props}\n ref={this.container}\n className={cn(\n `rw-calendar-transition-group`,\n direction === 'top' && 'rw-calendar-transition-top',\n direction === 'right' && 'rw-calendar-transition-right',\n direction === 'bottom' && 'rw-calendar-transition-bottom',\n direction === 'left' && 'rw-calendar-transition-left',\n )}\n >\n {clone(this.prev, prevClasses)}\n {clone(this.current, currentClasses)}\n </div>\n )\n }\n}\n\nexport default SlideTransitionGroup\n","import classNames from 'classnames'\nimport qsa from 'dom-helpers/querySelectorAll'\nimport PropTypes from 'prop-types'\nimport React, { useCallback, useRef, useState } from 'react'\nimport { useUncontrolled } from 'uncontrollable'\nimport Button from './Button'\nimport DateTimePartInput from './DateTimePartInput'\nimport { times } from './Icon'\nimport Widget, { WidgetProps } from './Widget'\nimport dates from './dates'\nimport useFocusManager from './useFocusManager'\n\ntype Meridiem = 'AM' | 'PM'\n\ninterface DateParts {\n era: Meridiem\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n}\n\ninterface TimeParts {\n meridiem: Meridiem\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n}\n\ntype TimePart = keyof TimeParts\n\nconst selectTextRange = (el: HTMLInputElement | HTMLDivElement) => {\n if (el instanceof HTMLInputElement) return el.select()\n const range = document.createRange()\n range.selectNodeContents(el)\n const selection = window.getSelection()\n if (selection) {\n selection.removeAllRanges()\n selection.addRange(range)\n }\n}\n\n// prettier-ignore\nconst isEmptyValue = (p: TimeParts, precision: TimePart) =>\n p.hours == null &&\n p.minutes == null &&\n ((precision != 'seconds' && precision !== 'milliseconds') || p.seconds == null) &&\n (precision !== 'milliseconds' || p.milliseconds == null);\n\n// prettier-ignore\nconst isPartialValue = (p: TimeParts, precision: TimePart) =>\n p.hours == null ||\n p.minutes == null ||\n ((precision === 'seconds' || precision === 'milliseconds') && p.seconds == null) ||\n (precision === 'milliseconds' && p.milliseconds == null);\n\nconst getValueParts = (\n value?: Date | null,\n use12HourClock?: boolean,\n): TimeParts => {\n let hours, minutes, seconds, milliseconds\n let meridiem: Meridiem = 'AM'\n\n if (value) {\n hours = value.getHours()\n if (use12HourClock) {\n meridiem = hours < 12 ? 'AM' : 'PM'\n hours = hours % 12 || 12\n }\n\n minutes = value.getMinutes()\n seconds = value.getSeconds()\n milliseconds = value.getMilliseconds()\n }\n\n return { hours, minutes, seconds, milliseconds, meridiem }\n}\n\nconst TEST_VALID = {\n hours: /^([1]?[0-9]|2[0-3])$/,\n hours12: /^(1[0-2]|0?[1-9])$/,\n minutes: /^([0-5]?\\d)$/,\n seconds: /^([0-5]?\\d)$/,\n milliseconds: /^(\\d{1,3})$/,\n}\n\nconst TEST_COMPLETE = {\n hours: /^([3-9]|\\d{2})$/,\n hours12: /^(\\d{2}|[2-9])$/,\n minutes: /^(d{2}|[6-9])$/,\n seconds: /^(d{2}|[6-9])$/,\n milliseconds: /^(\\d{3})$/,\n}\n\nfunction testPart(\n value: string,\n part: TimePart,\n use12HourClock: boolean,\n tests: Record<keyof typeof TEST_VALID, RegExp>,\n) {\n const key =\n part === 'hours' && use12HourClock\n ? 'hours12'\n : (part as keyof typeof tests)\n return tests[key].test(value)\n}\n\nconst isValid = (value: string, part: TimePart, use12HourClock: boolean) =>\n testPart(value, part, use12HourClock, TEST_VALID)\n\nconst isComplete = (value: string, part: TimePart, use12HourClock: boolean) =>\n testPart(value, part, use12HourClock, TEST_COMPLETE)\n\nexport interface TimeInputProps\n extends Omit<WidgetProps, 'value' | 'onChange'> {\n value?: Date | null\n onChange?: (date: Date | null, ctx?: any) => void\n datePart?: Date\n use12HourClock?: boolean\n padValues?: boolean\n emptyCharacter?: string\n noClearButton?: boolean\n disabled?: boolean\n readOnly?: boolean\n precision: 'minutes' | 'seconds' | 'milliseconds'\n hoursAddon?: React.ReactNode\n minutesAddon?: React.ReactNode\n secondsAddon?: React.ReactNode\n millisecondsAddon?: React.ReactNode\n}\n\nconst propTypes = {\n /**\n * @example ['valuePicker', [ ['new Date()'] ]]\n */\n value: PropTypes.instanceOf(Date),\n\n /**\n * @example ['onChangePicker', [ ['new Date()'] ]]\n */\n onChange: PropTypes.func,\n\n /**\n * The default date used to construct a new time when the `value` is empty\n *\n * @default new Date()\n **/\n datePart: PropTypes.instanceOf(Date),\n\n /**\n * Use a 12 hour clock (with AM/PM) instead of 24 hour one.\n * The configured localizer may provide a default value .\n **/\n use12HourClock: PropTypes.bool,\n\n /** Time part values will be padded by `0` */\n padValues: PropTypes.bool,\n\n /** The string character used to pad empty, or cleared values */\n emptyCharacter: PropTypes.string,\n\n /** Hide the input clear button */\n noClearButton: PropTypes.bool,\n\n /**\n * @example ['disabled', ['new Date()']]\n */\n disabled: PropTypes.bool,\n\n /**\n * @example ['readOnly', ['new Date()']]\n */\n readOnly: PropTypes.bool,\n\n /** Controls how precise of a time can be input **/\n precision: PropTypes.oneOf(['minutes', 'seconds', 'milliseconds']).isRequired,\n\n /**\n * The seperator between hours and minutes\n * @default ':'\n */\n hoursAddon: PropTypes.node,\n\n /**\n * The seperator between hours and minutes\n * @default ':'\n */\n minutesAddon: PropTypes.node,\n\n /**\n * The seperator between hours and minutes\n * @default ':'\n */\n secondsAddon: PropTypes.node,\n\n /**\n * The seperator between hours and minutes\n * @default '.'\n */\n millisecondsAddon: PropTypes.node,\n}\n\nconst defaultProps = {\n hoursAddon: ':',\n padValues: true,\n precision: 'minutes',\n emptyCharacter: '-',\n}\n\ninterface TimePartState {\n value: Date | null\n use12HourClock: boolean\n timeParts: TimeParts\n}\n\n// let count = 0\nfunction useTimePartState(value: Date | null, use12HourClock: boolean) {\n const [state, setState] = useState<TimePartState>(() => ({\n value,\n use12HourClock,\n timeParts: getValueParts(value, use12HourClock),\n }))\n\n const setTimeParts = useCallback(\n (timeParts: TimeParts) => setState((s) => ({ ...s, timeParts })),\n [setState],\n )\n\n if (state.value !== value || state.use12HourClock !== use12HourClock) {\n // count++\n // if (count < 100)\n setState({\n value,\n use12HourClock,\n timeParts: getValueParts(value, use12HourClock),\n })\n }\n\n return [state.timeParts, setTimeParts] as const\n}\n\nfunction TimeInput(uncontrolledProps: TimeInputProps) {\n const {\n value,\n use12HourClock,\n padValues: pad,\n emptyCharacter,\n precision,\n noClearButton,\n hoursAddon,\n minutesAddon,\n secondsAddon,\n millisecondsAddon,\n className,\n disabled,\n readOnly,\n datePart,\n onChange,\n onBlur,\n onFocus,\n ...props\n } = useUncontrolled(uncontrolledProps, { value: 'onChange' })\n\n let minsAddon =\n minutesAddon !== undefined\n ? minutesAddon\n : precision === 'seconds' || precision === 'milliseconds'\n ? ':'\n : ''\n let secsAddon =\n secondsAddon !== undefined\n ? secondsAddon\n : precision === 'milliseconds'\n ? ':'\n : ''\n\n const ref = useRef<HTMLDivElement>(null)\n const hourRef = useRef<HTMLInputElement>(null)\n\n const [focusEvents, focused] = useFocusManager(\n ref,\n { disabled, onBlur, onFocus },\n {\n didHandle: (focused, e: React.FocusEvent<HTMLElement>) => {\n if (!focused) return\n if (!e.target.dataset.focusable) hourRef.current?.focus()\n else select(e.target as HTMLInputElement)\n },\n },\n )\n\n const [timeParts, setTimeParts] = useTimePartState(\n value ?? null,\n use12HourClock ?? false,\n )\n\n function getDatePart() {\n return dates.startOf(datePart || new Date(), 'day')\n }\n\n const getMin = (part: TimePart) => (part === 'hours' ? 1 : 0)\n\n const getMax = (part: TimePart) => {\n if (part === 'hours') return use12HourClock ? 12 : 23\n if (part === 'milliseconds') return 999\n return 59\n }\n\n function select(\n target: HTMLInputElement = document.activeElement as HTMLInputElement,\n ) {\n window.Promise.resolve().then(() => {\n if (focused) selectTextRange(target)\n })\n }\n\n /**\n * Handlers\n */\n\n const handleClear = () => {\n hourRef.current?.focus()\n\n if (value) onChange!(null)\n else setTimeParts(getValueParts(null))\n }\n\n const handleChange = (\n part: TimePart,\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const currentValue = timeParts[part]\n\n const { target } = event\n const rawValue = target.value\n let strValue = `${currentValue || ''}${rawValue}`\n let numValue = +strValue\n\n if (\n isNaN(numValue) ||\n (strValue && !isValid(strValue, part, use12HourClock ?? false))\n ) {\n // the combined value is now past the max or invalid so try the single\n // digit and \"start over\" filling the value\n if (\n isValid(rawValue, part, use12HourClock ?? false) &&\n !isNaN(+rawValue)\n ) {\n // change the effective current value\n strValue = rawValue\n numValue = +rawValue\n } else {\n return event.preventDefault()\n }\n }\n\n const nextValue = target.value ? numValue : null\n\n notifyChange({ [part]: nextValue })\n\n if (\n nextValue != null &&\n isComplete(strValue, part, use12HourClock ?? false)\n ) {\n focusNext(event.currentTarget, +1)\n } else {\n select(target)\n }\n }\n\n const handleSelect = ({\n target,\n }:\n | React.SyntheticEvent<HTMLInputElement | HTMLDivElement>\n | React.FocusEvent<HTMLInputElement | HTMLDivElement>) => {\n select(target as HTMLInputElement)\n }\n\n const handleKeyDown = (\n part: TimePart,\n event: React.KeyboardEvent<HTMLInputElement | HTMLDivElement>,\n ) => {\n const { key } = event\n const input = event.currentTarget as HTMLInputElement\n const { selectionStart: start, selectionEnd: end } = input\n\n const isRTL =\n getComputedStyle(input).getPropertyValue('direction') === 'rtl'\n const isMeridiem = part === 'meridiem'\n const isNext = key === (isRTL ? 'ArrowLeft' : 'ArrowRight')\n const isPrev = key === (isRTL ? 'ArrowRight' : 'ArrowLeft')\n\n if (key === 'ArrowUp') {\n event.preventDefault()\n increment(part, 1)\n }\n if (key === 'ArrowDown') {\n event.preventDefault()\n increment(part, -1)\n }\n if (isPrev && (isMeridiem || start! - 1 < 0)) {\n event.preventDefault()\n focusNext(input, -1)\n }\n if (isNext && (isMeridiem || input.value.length <= end! + 1)) {\n event.preventDefault()\n focusNext(input, +1)\n }\n\n if (readOnly && key !== 'Tab') {\n event.preventDefault()\n }\n\n if (isMeridiem) {\n if (key === 'a' || key === 'A') notifyChange({ meridiem: 'AM' })\n if (key === 'p' || key === 'P') notifyChange({ meridiem: 'PM' })\n }\n }\n\n const increment = (part: TimePart, inc: number) => {\n let nextPart = timeParts[part]\n if (part === 'meridiem') {\n nextPart = nextPart === 'AM' ? 'PM' : 'AM'\n } else {\n nextPart = ((nextPart as number) || 0) + inc\n if (!isValid(String(nextPart), part, use12HourClock ?? false)) return\n }\n\n notifyChange({ [part]: nextPart })\n select()\n }\n\n function notifyChange(updates: Partial<TimeParts>) {\n const nextTimeParts: TimeParts = { ...timeParts, ...updates }\n\n if (value && isEmptyValue(nextTimeParts, precision)) {\n return onChange!(null)\n }\n\n if (isPartialValue(nextTimeParts, precision))\n return setTimeParts(nextTimeParts)\n\n let { hours, minutes, seconds, milliseconds, meridiem } = nextTimeParts\n let nextDate = new Date(value || getDatePart())\n\n if (use12HourClock) {\n if (hours === 12) hours = 0\n hours! += meridiem === 'PM' ? 12 : 0\n }\n\n nextDate.setHours(hours!)\n nextDate.setMinutes(minutes!)\n\n if (seconds != null) nextDate.setSeconds(seconds)\n if (milliseconds != null) nextDate.setMilliseconds(milliseconds)\n\n onChange!(nextDate, {\n lastValue: value,\n timeParts,\n })\n }\n\n function focusNext(input: HTMLInputElement, delta: number) {\n let nodes = qsa(ref.current!, '* [data-focusable]')\n let next = nodes[nodes.indexOf(input) + delta]\n next?.focus()\n select(next as HTMLInputElement)\n }\n\n const { hours, minutes, seconds, milliseconds, meridiem } = timeParts\n const showClear = !isEmptyValue(timeParts, precision)\n\n return (\n <Widget\n {...props}\n role=\"group\"\n ref={ref}\n {...focusEvents}\n focused={focused}\n disabled={disabled}\n readOnly={readOnly}\n className={classNames(className, 'rw-time-input rw-widget-input')}\n >\n <DateTimePartInput\n size={2}\n pad={pad ? 2 : undefined}\n value={hours}\n disabled={disabled}\n readOnly={readOnly}\n aria-label=\"hours\"\n min={getMin('hours')}\n max={getMax('hours')}\n ref={hourRef}\n emptyChar={emptyCharacter}\n onSelect={handleSelect}\n onChange={(e) => handleChange('hours', e)}\n onKeyDown={(e) => handleKeyDown('hours', e)}\n />\n\n {hoursAddon && <span>{hoursAddon}</span>}\n <DateTimePartInput\n size={2}\n pad={pad ? 2 : undefined}\n value={minutes}\n disabled={disabled}\n readOnly={readOnly}\n aria-label=\"minutes\"\n min={getMin('minutes')}\n max={getMax('minutes')}\n emptyChar={emptyCharacter}\n onSelect={handleSelect}\n onChange={(e) => handleChange('minutes', e)}\n onKeyDown={(e) => handleKeyDown('minutes', e)}\n />\n\n {minsAddon && <span>{minsAddon}</span>}\n {(precision === 'seconds' || precision === 'milliseconds') && (\n <>\n <DateTimePartInput\n size={2}\n pad={pad ? 2 : undefined}\n value={seconds}\n disabled={disabled}\n readOnly={readOnly}\n aria-label=\"seconds\"\n min={getMin('seconds')}\n max={getMax('seconds')}\n emptyChar={emptyCharacter}\n onSelect={handleSelect}\n onChange={(e) => handleChange('seconds', e)}\n onKeyDown={(e) => handleKeyDown('seconds', e)}\n />\n {secsAddon && <span>{secsAddon}</span>}\n </>\n )}\n {precision === 'milliseconds' && (\n <>\n <DateTimePartInput\n size={3}\n pad={pad ? 3 : undefined}\n value={milliseconds}\n disabled={disabled}\n readOnly={readOnly}\n aria-label=\"milliseconds\"\n min={getMin('milliseconds')}\n max={getMax('milliseconds')}\n emptyChar={emptyCharacter}\n onSelect={handleSelect}\n onChange={(e) => handleChange('milliseconds', e)}\n onKeyDown={(e) => handleKeyDown('milliseconds', e)}\n />\n {millisecondsAddon && <span>{millisecondsAddon}</span>}\n </>\n )}\n {use12HourClock && (\n <div\n role=\"listbox\"\n aria-label=\"AM/PM\"\n aria-disabled={disabled}\n aria-readonly={readOnly}\n className=\"rw-time-part-meridiem\"\n >\n <div\n data-focusable\n role=\"option\"\n aria-atomic\n aria-selected\n aria-setsize={2}\n aria-live=\"assertive\"\n aria-disabled={disabled}\n aria-readonly={readOnly}\n aria-posinset={meridiem === 'AM' ? 1 : 2}\n tabIndex={!disabled ? 0 : void 0}\n onFocus={handleSelect}\n onSelect={handleSelect}\n onKeyDown={(e) => handleKeyDown('meridiem', e)}\n >\n <abbr>{meridiem}</abbr>\n </div>\n </div>\n )}\n {!noClearButton && (\n <Button\n label={'clear input'}\n onClick={handleClear}\n disabled={disabled || readOnly}\n className={classNames('rw-time-input-clear', showClear && 'rw-show')}\n >\n {times}\n </Button>\n )}\n </Widget>\n )\n}\n\nTimeInput.propTypes = propTypes\nTimeInput.defaultProps = defaultProps\n\nexport default TimeInput\n","import cn from 'classnames'\nimport React, { useState } from 'react'\nimport useGlobalListener from '@restart/hooks/useGlobalListener'\n\nexport interface WidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n focused?: boolean\n open?: boolean\n dropUp?: boolean\n autofilling?: boolean\n disabled?: boolean\n readOnly?: boolean\n}\n\nfunction useKeyboardNavigationCheck() {\n const [isNavigatingViaKeyboard, setIsNavigatingViaKeyboard] = useState(false)\n useGlobalListener('keydown', ({ key }) => {\n if (\n key == ' ' ||\n key === 'Tab' ||\n key == 'Enter' ||\n (key && key.indexOf('Arrow') !== -1)\n ) {\n setIsNavigatingViaKeyboard(true)\n }\n })\n\n // TODO: use pointerdown\n useGlobalListener('mousedown', () => {\n setIsNavigatingViaKeyboard(false)\n })\n\n return isNavigatingViaKeyboard\n}\n\nexport function useWidgetProps(props: WidgetProps) {\n const tabIndex = props.tabIndex != null ? props.tabIndex : -1\n const isKeyboardNavigating = useKeyboardNavigationCheck()\n return {\n tabIndex: tabIndex,\n 'data-intent': isKeyboardNavigating ? 'keyboard' : 'mouse',\n className: cn(\n props.className,\n 'rw-widget',\n props.disabled && 'rw-state-disabled',\n props.readOnly && 'rw-state-readonly',\n props.focused && 'rw-state-focus',\n props.autofilling && 'rw-webkit-autofill',\n props.open && `rw-open${props.dropUp ? '-up' : ''}`,\n ),\n }\n}\n\nconst Widget = React.forwardRef<HTMLDivElement, WidgetProps>(\n (\n {\n className,\n tabIndex,\n focused,\n open,\n dropUp,\n disabled,\n readOnly,\n autofilling,\n ...props\n },\n ref,\n ) => {\n const widgetProps = useWidgetProps({\n className,\n tabIndex,\n focused,\n open,\n dropUp,\n disabled,\n readOnly,\n autofilling,\n })\n\n return <div ref={ref} {...props} {...widgetProps} />\n },\n)\n\nWidget.displayName = 'Widget'\n\nexport default Widget\n","import { useRef } from 'react'\n\nlet idCount = 0\nfunction uniqueId(prefix?: string) {\n return '' + ((prefix == null ? '' : prefix) + ++idCount)\n}\n\nexport function notify<T extends (...args: any) => any>(\n handler: T | undefined,\n args: Parameters<T>,\n) {\n // eslint-disable-next-line prefer-spread\n if (handler) handler.apply(null, args)\n}\n\nexport const useInstanceId = (otherId?: string, suffix = '') => {\n const id = useRef<string>()\n if (!id.current) id.current = uniqueId('rw_')\n return (otherId || id.current) + suffix\n}\n\n/**\n * Allows for defering popup rendering untill the widget is focused,\n * or has been opened (in order to not remove it suddenly on close)\n */\nexport function useFirstFocusedRender(focused: boolean, open: boolean) {\n const ref = useRef(false)\n return ref.current || ((focused || !!open) && (ref.current = true))\n}\n","import cn from 'classnames'\nimport React from 'react'\n\nfunction WidgetPicker({\n className,\n ...props\n}: React.HTMLProps<HTMLDivElement>) {\n return (\n <div\n {...props}\n className={cn(\n className,\n 'rw-widget-picker',\n 'rw-widget-container'\n )}\n />\n )\n}\n\nexport default WidgetPicker\n","import React from 'react'\nimport CalendarView, { CalendarViewProps } from './CalendarView'\nimport { Localizer } from './Localization'\nimport { chunk } from './_'\nimport dates from './dates'\n\nconst months = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\nfunction monthsInYear(year: number) {\n let date = new Date(year, 0, 1)\n return months.map(i => dates.month(date, i))\n}\n\ninterface YearProps extends CalendarViewProps {\n disabled?: boolean\n onChange: (nextDate: Date) => void\n value?: Date | null\n min: Date\n max: Date\n localizer: Localizer\n}\n\nfunction YearView({\n focusedItem,\n disabled,\n onChange,\n value,\n min,\n localizer,\n max,\n ...props\n}: YearProps) {\n let months = monthsInYear(dates.year(focusedItem))\n\n return (\n <CalendarView {...props} focusedItem={focusedItem}>\n <CalendarView.Body>\n {chunk(months, 4).map((row, rowIdx) => (\n <CalendarView.Row key={rowIdx}>\n {row.map((date, colIdx) => {\n let label = localizer.formatDate(date, 'header')\n\n return (\n <CalendarView.Cell\n key={colIdx}\n label={label}\n date={date}\n min={min}\n max={max}\n unit=\"month\"\n viewUnit=\"year\"\n onChange={onChange}\n focusedItem={focusedItem}\n selected={value}\n disabled={disabled}\n >\n {localizer.formatDate(date, 'month')}\n </CalendarView.Cell>\n )\n })}\n </CalendarView.Row>\n ))}\n </CalendarView.Body>\n </CalendarView>\n )\n}\n\nexport default YearView\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport warning from 'tiny-warning'\nimport { GroupBy } from './List'\n\nexport function toItemArray<TDataItem>(\n a?: readonly TDataItem[] | boolean,\n): readonly TDataItem[] {\n if (Array.isArray(a)) return a\n return []\n}\n\nexport const makeArray = <T>(\n obj: T | readonly T[] | undefined | null,\n excludeNull = true,\n): T[] => {\n const result: T[] = []\n\n return excludeNull\n ? obj == null\n ? result\n : result.concat(obj)\n : result.concat(obj!)\n}\n\nexport const has = <T>(o: T, key: string) =>\n o ? Object.prototype.hasOwnProperty.call(o, key) : false\n\nexport function chunk<T>(array: readonly T[], chunkSize: number): Array<T[]> {\n let index = 0\n let length = array ? array.length : 0\n let result = [] as Array<T[]>\n\n chunkSize = Math.max(+chunkSize || 1, 1)\n while (index < length) result.push(array.slice(index, (index += chunkSize)))\n\n return result\n}\n\nexport function groupBySortedKeys<TData>(\n groupBy: GroupBy<TData>,\n data: readonly TData[],\n _keys: unknown[] = [],\n) {\n const iter =\n typeof groupBy === 'function' ? groupBy : (item: any) => item[groupBy]\n\n warning(\n typeof groupBy !== 'string' || !data.length || has(data[0], groupBy),\n `[React Widgets] You seem to be trying to group this list by a ` +\n `property \\`${groupBy}\\` that doesn't exist in the dataset items, this may be a typo`,\n )\n\n const groups = new Map<unknown, TData[]>()\n\n data.forEach(item => {\n let group = iter(item)\n\n if (groups.has(group)) groups.get(group)!.push(item)\n else groups.set(group, [item])\n })\n\n return Array.from(groups)\n}\n","import { AllowCreate } from './shared'\nimport { Accessors } from './Accessors'\n\ninterface Options {\n searchTerm?: string\n data: readonly unknown[]\n dataItems?: readonly unknown[]\n accessors: Accessors\n}\nexport default function canShowCreate(\n allowCreate: AllowCreate,\n { searchTerm = '', data, dataItems, accessors }: Options,\n) {\n const eq = (v: unknown) =>\n accessors.text(v).toLowerCase() === searchTerm.toLowerCase()\n\n // if there is an exact match on textFields:\n // \"john\" => { name: \"john\" }, don't show\n const hasExtactMatch = () =>\n (dataItems && dataItems.some(eq)) || data.some(eq)\n\n return !!(\n (allowCreate === true || (allowCreate === 'onFilter' && searchTerm)) &&\n !hasExtactMatch()\n )\n}\n","import * as dateMath from 'date-arithmetic'\n\nexport let isNullOrInvalid = (dte: Date | null | undefined) =>\n dte == null || isNaN(+dte)\n\nlet dates = Object.assign({}, dateMath, {\n merge(date?: Date | null, time?: Date | null, defaultDate?: Date) {\n if (isNullOrInvalid(time) && isNullOrInvalid(date) == null) return null\n\n if (isNullOrInvalid(time)) time = defaultDate || new Date()\n if (isNullOrInvalid(date)) date = defaultDate || new Date()\n\n date = dates.startOf(date!, 'day')\n date = dates.hours(date, dates.hours(time!))\n date = dates.minutes(date, dates.minutes(time!))\n date = dates.seconds(date, dates.seconds(time!))\n return dates.milliseconds(date, dates.milliseconds(time!))\n },\n})\n\nexport default dates\n","import * as React from 'react'\nimport { ReactNode, useMemo } from 'react'\n\ntype LabelMessage = string | ((ctx: any) => string)\ntype RenderableMessage = ReactNode | (() => ReactNode)\n\nexport interface Messages {\n moveToday: LabelMessage\n moveBack: LabelMessage\n moveForward: LabelMessage\n\n dateButton: LabelMessage\n openCombobox: LabelMessage\n\n emptyList: RenderableMessage\n emptyFilter: RenderableMessage\n\n createOption: (_value: any, searchTerm: string) => ReactNode | ReactNode\n\n tagsLabel: LabelMessage\n removeLabel: LabelMessage\n noneSelected: LabelMessage\n selectedItems: (labels: string[]) => string\n\n // number\n increment: LabelMessage\n decrement: LabelMessage\n}\n\nconst messages = {\n moveToday: 'Today',\n moveBack: 'Navigate back',\n moveForward: 'Navigate forward',\n\n dateButton: 'Select date',\n\n openCombobox: 'open combobox',\n\n emptyList: 'There are no items in this list',\n emptyFilter: 'The filter returned no results',\n\n createOption: (_value: any, searchTerm: string) => [\n ' Create option',\n searchTerm && ' ',\n searchTerm && <strong key=\"_\">{`\"${searchTerm}\"`}</strong>,\n ],\n\n tagsLabel: 'Selected items',\n removeLabel: 'Remove selected item',\n noneSelected: 'no selected items',\n selectedItems: (labels: string[]) => `Selected items: ${labels.join(', ')}`,\n\n // number\n increment: 'Increment value',\n decrement: 'Decrement value',\n}\n\nexport type UserProvidedMessages = Partial<Messages>\n\nexport type ProcessedMessages = {\n [P in keyof Messages]: Messages[P] extends Function\n ? Messages[P]\n : () => string\n}\n\nconst DEFAULTS = {}\n\nexport function getMessages(defaults: UserProvidedMessages = DEFAULTS) {\n let processed: Record<string, any> = {}\n\n Object.keys(messages).forEach((message: keyof Messages) => {\n let value = defaults[message]\n if (value == null) value = messages[message]\n\n processed[message] =\n typeof value === 'function'\n ? (value as () => string)\n : () => value as string\n })\n\n return processed as ProcessedMessages\n}\n\nexport const useMessagesWithDefaults = (defaults?: UserProvidedMessages) =>\n useMemo(() => getMessages(defaults), [defaults])\n","import { RefObject, useEffect } from 'react'\n\nexport default function useAutoFocus(\n autoFocus: boolean,\n ref: RefObject<HTMLElement>,\n) {\n useEffect(() => {\n if (autoFocus && ref.current) ref.current.focus()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import { notify } from './WidgetHelpers'\n\nexport default function useDropdownToggle(\n isOpen: boolean | undefined,\n onToggle: (isOpen: boolean) => void,\n) {\n function open() {\n if (!isOpen) notify(onToggle, [true])\n }\n function close() {\n if (isOpen) notify(onToggle, [false])\n }\n function toggle() {\n if (isOpen) close()\n else open()\n }\n\n toggle.open = open\n toggle.close = close\n return toggle\n}\n","import { useState } from 'react'\nimport useFocusManagerBase, {\n FocusManagerOptions,\n} from '@restart/hooks/useFocusManager'\nimport useEventCallback from '@restart/hooks/useEventCallback'\nimport useMounted from '@restart/hooks/useMounted'\nimport matches from 'dom-helpers/matches'\n\ninterface Props {\n disabled?: boolean\n onBlur?: React.FocusEventHandler\n onFocus?: React.FocusEventHandler\n}\n\nconst isInDisabledFieldset = (node: Element) => {\n return !!node && matches(node, 'fieldset[disabled] *')\n}\n\nexport default function useFocusManager(\n ref: React.RefObject<Element>,\n props: Props = {},\n opts: Omit<FocusManagerOptions, 'onChange' | 'isDisabled'> = {},\n) {\n const isMounted = useMounted()\n const [focused, setFocus] = useState(false)\n\n const isDisabled = useEventCallback(\n () => props.disabled === true || isInDisabledFieldset(ref.current!),\n )\n\n const events = useFocusManagerBase({\n ...opts,\n isDisabled,\n onChange: (focused) => {\n if (isMounted()) setFocus(focused)\n },\n didHandle(focused, event) {\n let handler = props[focused ? 'onFocus' : 'onBlur']\n if (handler) handler(event)\n // @ts-ignore used by work\n if (opts.didHandle && !event.isWidgetDefaultPrevented)\n opts.didHandle(focused, event)\n },\n })\n\n return [events, focused, setFocus] as const\n}\n","import { useMemo, useRef } from 'react'\nimport useEventListener from '@restart/hooks/useEventListener'\n\nconst defaultSelector = [\n 'input',\n 'textarea',\n 'select',\n 'button:not([tabindex=\"-1\"])',\n '[tabindex=\"0\"]',\n].join(',')\n\nconst getDocument = () => document\n\nexport default function useTabTrap(\n ref: React.RefObject<Element>,\n selector: string = defaultSelector,\n) {\n const startedRef = useRef(false)\n\n useEventListener(getDocument, 'keydown', (event: KeyboardEvent) => {\n if (!startedRef.current || !ref.current || event.key !== 'Tab') {\n return\n }\n\n const tabbables = ref.current.querySelectorAll<HTMLElement | SVGElement>(\n selector,\n )\n\n if (event.shiftKey && event.target === tabbables[0]) {\n tabbables[tabbables.length - 1].focus()\n event.preventDefault()\n } else if (\n (!event.shiftKey && event.target === tabbables[tabbables.length - 1]) ||\n !ref.current.contains(event.target as Element)\n ) {\n tabbables[0].focus()\n event.preventDefault()\n }\n })\n\n return useMemo(\n () => ({\n focus() {\n const tabbables = ref.current!.querySelectorAll<\n HTMLElement | SVGElement\n >(selector)\n const first = tabbables[0]\n if (first) first.focus()\n },\n start() {\n startedRef.current = true\n },\n stop() {\n startedRef.current = false\n },\n }),\n [ref, selector],\n )\n}\n","/*!\n Copyright (c) 2017 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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var MILI = 'milliseconds'\n , SECONDS = 'seconds'\n , MINUTES = 'minutes'\n , HOURS = 'hours'\n , DAY = 'day'\n , WEEK = 'week'\n , MONTH = 'month'\n , YEAR = 'year'\n , DECADE = 'decade'\n , CENTURY = 'century';\n\nvar multiplierMilli = {\n 'milliseconds': 1,\n 'seconds': 1000,\n 'minutes': 60 * 1000,\n 'hours': 60 * 60 * 1000,\n 'day': 24 * 60 * 60 * 1000,\n 'week': 7 * 24 * 60 * 60 * 1000 \n}\n\nvar multiplierMonth = {\n 'month': 1,\n 'year': 12,\n 'decade': 10 * 12,\n 'century': 100 * 12\n}\n\nfunction daysOf(year) {\n return [31, daysInFeb(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n}\n\nfunction daysInFeb(year) {\n return (\n year % 4 === 0 \n && year % 100 !== 0\n ) || year % 400 === 0\n ? 29\n : 28\n}\n\nexport function add(d, num, unit) {\n d = new Date(d)\n\n switch (unit){\n case MILI:\n case SECONDS:\n case MINUTES:\n case HOURS:\n case DAY:\n case WEEK:\n return addMillis(d, num * multiplierMilli[unit])\n case MONTH:\n case YEAR:\n case DECADE:\n case CENTURY:\n return addMonths(d, num * multiplierMonth[unit])\n }\n\n throw new TypeError('Invalid units: \"' + unit + '\"')\n}\n\nfunction addMillis(d, num) {\n var nextDate = new Date(+(d) + num)\n\n return solveDST(d, nextDate)\n}\n\nfunction addMonths(d, num) {\n var year = d.getFullYear()\n , month = d.getMonth()\n , day = d.getDate()\n , totalMonths = year * 12 + month + num\n , nextYear = Math.trunc(totalMonths / 12)\n , nextMonth = totalMonths % 12\n , nextDay = Math.min(day, daysOf(nextYear)[nextMonth])\n\n var nextDate = new Date(d)\n nextDate.setFullYear(nextYear)\n\n // To avoid a bug when sets the Feb month\n // with a date > 28 or date > 29 (leap year)\n nextDate.setDate(1)\n\n nextDate.setMonth(nextMonth)\n nextDate.setDate(nextDay)\n\n return nextDate\n}\n\nfunction solveDST(currentDate, nextDate) {\n var currentOffset = currentDate.getTimezoneOffset()\n , nextOffset = nextDate.getTimezoneOffset()\n\n // if is DST, add the difference in minutes\n // else the difference is zero\n var diffMinutes = (nextOffset - currentOffset)\n\n return new Date(+(nextDate) + diffMinutes * multiplierMilli['minutes'])\n}\n\nexport function subtract(d, num, unit) {\n return add(d, -num, unit)\n}\n\nexport function startOf(d, unit, firstOfWeek) {\n d = new Date(d)\n\n switch (unit) {\n case CENTURY:\n case DECADE:\n case YEAR:\n d = month(d, 0);\n case MONTH:\n d = date(d, 1);\n case WEEK:\n case DAY:\n d = hours(d, 0);\n case HOURS:\n d = minutes(d, 0);\n case MINUTES:\n d = seconds(d, 0);\n case SECONDS:\n d = milliseconds(d, 0);\n }\n\n if (unit === DECADE)\n d = subtract(d, year(d) % 10, 'year')\n\n if (unit === CENTURY)\n d = subtract(d, year(d) % 100, 'year')\n\n if (unit === WEEK)\n d = weekday(d, 0, firstOfWeek);\n\n return d\n}\n\nexport function endOf(d, unit, firstOfWeek){\n d = new Date(d)\n d = startOf(d, unit, firstOfWeek)\n switch (unit) {\n case CENTURY:\n case DECADE:\n case YEAR:\n case MONTH:\n case WEEK:\n d = add(d, 1, unit)\n d = subtract(d, 1, DAY)\n d.setHours(23, 59, 59, 999)\n break;\n case DAY:\n d.setHours(23, 59, 59, 999)\n break;\n case HOURS:\n case MINUTES:\n case SECONDS:\n d = add(d, 1, unit)\n d = subtract(d, 1, MILI)\n }\n return d\n}\n\nexport var eq = createComparer(function(a, b){ return a === b })\nexport var neq = createComparer(function(a, b){ return a !== b })\nexport var gt = createComparer(function(a, b){ return a > b })\nexport var gte = createComparer(function(a, b){ return a >= b })\nexport var lt = createComparer(function(a, b){ return a < b })\nexport var lte = createComparer(function(a, b){ return a <= b })\n\nexport function min(){\n return new Date(Math.min.apply(Math, arguments))\n}\n\nexport function max(){\n return new Date(Math.max.apply(Math, arguments))\n}\n\nexport function inRange(day, min, max, unit){\n unit = unit || 'day'\n\n return (!min || gte(day, min, unit))\n && (!max || lte(day, max, unit))\n}\n\nexport var milliseconds = createAccessor('Milliseconds')\nexport var seconds = createAccessor('Seconds')\nexport var minutes = createAccessor('Minutes')\nexport var hours = createAccessor('Hours')\nexport var day = createAccessor('Day')\nexport var date = createAccessor('Date')\nexport var month = createAccessor('Month')\nexport var year = createAccessor('FullYear')\n\nexport function decade(d, val) {\n return val === undefined\n ? year(startOf(d, DECADE))\n : add(d, val + 10, YEAR);\n}\n\nexport function century(d, val) {\n return val === undefined\n ? year(startOf(d, CENTURY))\n : add(d, val + 100, YEAR);\n}\n\nexport function weekday(d, val, firstDay) {\n var w = (day(d) + 7 - (firstDay || 0) ) % 7;\n\n return val === undefined\n ? w\n : add(d, val - w, DAY);\n}\n\nexport function diff(date1, date2, unit, asFloat) {\n var dividend, divisor, result;\n\n switch (unit) {\n case MILI:\n case SECONDS:\n case MINUTES:\n case HOURS:\n case DAY:\n case WEEK:\n dividend = date2.getTime() - date1.getTime(); break;\n case MONTH:\n case YEAR:\n case DECADE:\n case CENTURY:\n dividend = (year(date2) - year(date1)) * 12 + month(date2) - month(date1); break;\n default:\n throw new TypeError('Invalid units: \"' + unit + '\"');\n }\n\n switch (unit) {\n case MILI:\n divisor = 1; break;\n case SECONDS:\n divisor = 1000; break;\n case MINUTES:\n divisor = 1000 * 60; break;\n case HOURS:\n divisor = 1000 * 60 * 60; break;\n case DAY:\n divisor = 1000 * 60 * 60 * 24; break;\n case WEEK:\n divisor = 1000 * 60 * 60 * 24 * 7; break;\n case MONTH:\n divisor = 1; break;\n case YEAR:\n divisor = 12; break;\n case DECADE:\n divisor = 120; break;\n case CENTURY:\n divisor = 1200; break;\n default:\n throw new TypeError('Invalid units: \"' + unit + '\"');\n }\n\n result = dividend / divisor;\n\n return asFloat ? result : Math.round(result);\n}\n\nfunction createAccessor(method){\n var hourLength = (function(method) { \n switch(method) {\n case 'Milliseconds':\n return 3600000;\n case 'Seconds':\n return 3600;\n case 'Minutes':\n return 60;\n case 'Hours':\n return 1;\n default:\n return null;\n }\n })(method);\n \n return function(d, val){\n if (val === undefined)\n return d['get' + method]()\n\n var dateOut = new Date(d)\n dateOut['set' + method](val)\n \n if(hourLength && dateOut['get'+method]() != val && (method === 'Hours' || val >=hourLength && (dateOut.getHours()-d.getHours()<Math.floor(val/hourLength))) ){\n //Skip DST hour, if it occurs\n dateOut['set'+method](val+hourLength);\n }\n \n return dateOut\n }\n}\n\nfunction createComparer(operator) {\n return function (a, b, unit) {\n return operator(+startOf(a, unit), +startOf(b, unit))\n };\n}\n","import ownerDocument from './ownerDocument';\n/**\n * Return the actively focused element safely.\n *\n * @param doc the document to checl\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import matches from './matches';\nexport default function closest(node, selector, stopAt) {\n if (node.closest && !stopAt) node.closest(selector);\n var nextNode = node;\n\n do {\n if (matches(nextNode, selector)) return nextNode;\n nextNode = nextNode.parentElement;\n } while (nextNode && nextNode !== stopAt && nextNode.nodeType === document.ELEMENT_NODE);\n\n return null;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import ownerWindow from './ownerWindow';\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n if ('window' in node && node.window === node) return node;\n if (isDocument(node)) return node.defaultView || false;\n return false;\n}","export default function isDocument(element) {\n return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from './isWindow';\nexport default function getscrollAccessor(offset) {\n var prop = offset === 'pageXOffset' ? 'scrollLeft' : 'scrollTop';\n\n function scrollAccessor(node, val) {\n var win = isWindow(node);\n\n if (val === undefined) {\n return win ? win[offset] : node[prop];\n }\n\n if (win) {\n win.scrollTo(win[offset], val);\n } else {\n node[prop] = val;\n }\n }\n\n return scrollAccessor;\n}","import getScrollAccessor from './getScrollAccessor';\nexport default getScrollAccessor('pageXOffset');","import getScrollAccessor from './getScrollAccessor';\nexport default getScrollAccessor('pageYOffset');","import getWindow from './isWindow';\nimport offset from './offset';\nexport default function height(node, client) {\n var win = getWindow(node);\n return win ? win.innerHeight : client ? node.clientHeight : offset(node).height;\n}","import contains from './contains';\nimport ownerDocument from './ownerDocument';\nimport scrollLeft from './scrollLeft';\nimport scrollTop from './scrollTop';\nexport default function offset(node) {\n var doc = ownerDocument(node);\n var box = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n };\n var docElem = doc && doc.documentElement; // Make sure it's not a disconnected DOM node\n\n if (!docElem || !contains(docElem, node)) return box;\n if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect();\n box = {\n top: box.top + scrollTop(docElem) - (docElem.clientTop || 0),\n left: box.left + scrollLeft(docElem) - (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n return box;\n}","/* eslint-disable no-bitwise, no-cond-assign */\n// HTML DOM and SVG DOM may have different support levels,\n// so we need to check on context instead of a document root element.\nexport default function contains(context, node) {\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","var matchesImpl;\nexport default function matches(node, selector) {\n if (!matchesImpl) {\n var body = document.body;\n var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n matchesImpl = function matchesImpl(n, s) {\n return nativeMatch.call(n, s);\n };\n }\n\n return matchesImpl(node, selector);\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","function removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import css from './css';\nimport listen from './listen';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction triggerTransitionEnd(element) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('transitionend', true, true);\n element.dispatchEvent(evt);\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerTransitionEnd(element);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\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 */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\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 } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.13.1\n * react-is.development.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';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","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","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}","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\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 if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\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 _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _jsxFileName = \"/Users/jquense/src/uncontrollable/src/uncontrollable.js\";\nimport React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport invariant from 'invariant';\nimport * as Utils from './utils';\nexport default function uncontrollable(Component, controlledValues, methods) {\n if (methods === void 0) {\n methods = [];\n }\n\n var displayName = Component.displayName || Component.name || 'Component';\n var canAcceptRef = Utils.canAcceptRef(Component);\n var controlledProps = Object.keys(controlledValues);\n var PROPS_TO_OMIT = controlledProps.map(Utils.defaultKey);\n !(canAcceptRef || !methods.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '[uncontrollable] stateless function components cannot pass through methods ' + 'because they have no associated instances. Check component: ' + displayName + ', ' + 'attempting to pass through methods: ' + methods.join(', ')) : invariant(false) : void 0;\n\n var UncontrolledComponent =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(UncontrolledComponent, _React$Component);\n\n function UncontrolledComponent() {\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 _this.handlers = Object.create(null);\n controlledProps.forEach(function (propName) {\n var handlerName = controlledValues[propName];\n\n var handleChange = function handleChange(value) {\n if (_this.props[handlerName]) {\n var _this$props;\n\n _this._notifying = true;\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 (_this$props = _this.props)[handlerName].apply(_this$props, [value].concat(args));\n\n _this._notifying = false;\n }\n\n if (!_this.unmounted) _this.setState(function (_ref) {\n var _extends2;\n\n var values = _ref.values;\n return {\n values: _extends(Object.create(null), values, (_extends2 = {}, _extends2[propName] = value, _extends2))\n };\n });\n };\n\n _this.handlers[handlerName] = handleChange;\n });\n if (methods.length) _this.attachRef = function (ref) {\n _this.inner = ref;\n };\n var values = Object.create(null);\n controlledProps.forEach(function (key) {\n values[key] = _this.props[Utils.defaultKey(key)];\n });\n _this.state = {\n values: values,\n prevProps: {}\n };\n return _this;\n }\n\n var _proto = UncontrolledComponent.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n //let setState trigger the update\n return !this._notifying;\n };\n\n UncontrolledComponent.getDerivedStateFromProps = function getDerivedStateFromProps(props, _ref2) {\n var values = _ref2.values,\n prevProps = _ref2.prevProps;\n var nextState = {\n values: _extends(Object.create(null), values),\n prevProps: {}\n };\n controlledProps.forEach(function (key) {\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n nextState.prevProps[key] = props[key];\n\n if (!Utils.isProp(props, key) && Utils.isProp(prevProps, key)) {\n nextState.values[key] = props[Utils.defaultKey(key)];\n }\n });\n return nextState;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unmounted = true;\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n innerRef = _this$props2.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"innerRef\"]);\n\n PROPS_TO_OMIT.forEach(function (prop) {\n delete props[prop];\n });\n var newProps = {};\n controlledProps.forEach(function (propName) {\n var propValue = _this2.props[propName];\n newProps[propName] = propValue !== undefined ? propValue : _this2.state.values[propName];\n });\n return React.createElement(Component, _extends({}, props, newProps, this.handlers, {\n ref: innerRef || this.attachRef\n }));\n };\n\n return UncontrolledComponent;\n }(React.Component);\n\n polyfill(UncontrolledComponent);\n UncontrolledComponent.displayName = \"Uncontrolled(\" + displayName + \")\";\n UncontrolledComponent.propTypes = _extends({\n innerRef: function innerRef() {}\n }, Utils.uncontrolledPropTypes(controlledValues, displayName));\n methods.forEach(function (method) {\n UncontrolledComponent.prototype[method] = function $proxiedMethod() {\n var _this$inner;\n\n return (_this$inner = this.inner)[method].apply(_this$inner, arguments);\n };\n });\n var WrappedComponent = UncontrolledComponent;\n\n if (React.forwardRef) {\n WrappedComponent = React.forwardRef(function (props, ref) {\n return React.createElement(UncontrolledComponent, _extends({}, props, {\n innerRef: ref,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128\n },\n __self: this\n }));\n });\n WrappedComponent.propTypes = UncontrolledComponent.propTypes;\n }\n\n WrappedComponent.ControlledComponent = Component;\n /**\n * useful when wrapping a Component and you want to control\n * everything\n */\n\n WrappedComponent.deferControlTo = function (newComponent, additions, nextMethods) {\n if (additions === void 0) {\n additions = {};\n }\n\n return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);\n };\n\n return WrappedComponent;\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__5427__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2797__;","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 _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\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}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable global-require */\n\nimport Calendar from './Calendar'\nimport Combobox from './Combobox'\nimport DatePicker from './DatePicker'\nimport DropdownList from './DropdownList'\nimport Listbox from './Listbox'\nimport Localization from './Localization'\nimport type {\n DateFormats,\n DateLocalizer,\n FormatterOverrides,\n Localizer,\n NumberLocalizer,\n RequiredDateMethods,\n} from './Localization'\nimport Multiselect from './Multiselect'\nimport NumberPicker from './NumberPicker'\nimport SlideDownTransition from './SlideDownTransition'\nimport SlideTransitionGroup from './SlideTransitionGroup'\nimport TimeInput from './TimeInput'\n\nexport type {\n DataItem,\n Value,\n RenderProp,\n WidgetHandle,\n SearchMetadata,\n} from './types'\n\nexport type {\n DateFormats,\n FormatterOverrides,\n DateLocalizer,\n NumberLocalizer,\n RequiredDateMethods,\n Localizer,\n}\nexport {\n DropdownList,\n Combobox,\n Calendar,\n TimeInput,\n DatePicker,\n DatePicker as DateTimePicker,\n NumberPicker,\n Multiselect,\n Listbox,\n SlideTransitionGroup,\n SlideDownTransition,\n Localization,\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__5427__","__WEBPACK_EXTERNAL_MODULE__2797__","useCallbackRef","useState","useEventCallback","fn","ref","value","useRef","useEffect","current","useCallback","apply","arguments","useEventListener","eventTarget","event","listener","capture","handler","target","addEventListener","removeEventListener","useFocusManager","opts","isMounted","lastFocused","handle","willHandle","didHandle","onChange","isDisabled","handleFocusChange","focused","persist","clearTimeout","setTimeout","onBlur","onFocus","useGlobalListener","documentTarget","document","toFnRef","mergeRefs","refA","refB","a","b","useMemo","useMounted","mounted","other","array","key","length","splice","Array","prototype","ListCache","entries","index","this","clear","entry","set","__data__","size","data","pop","call","get","undefined","has","push","global","Object","freeSelf","Function","objectProto","hasOwnProperty","nativeObjectToString","toString","symToStringTag","isOwn","tag","unmasked","e","result","type","uid","maskSrcKey","exec","funcToString","func","reIsHostCtor","reIsNative","RegExp","replace","test","object","Hash","map","MapCache","Stack","pairs","LARGE_ARRAY_SIZE","SetCache","values","add","predicate","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","forEach","symbolProto","symbolValueOf","valueOf","isArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","resIndex","symbol","freeExports","nodeType","freeModule","Buffer","isBuffer","reIsUint","typedArrayTags","freeProcess","nodeUtil","types","binding","nodeIsTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","n","iteratee","String","transform","arg","keys","Ctor","constructor","keysFunc","symbolsFunc","offset","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","buffer","name","message","convert","stacked","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","baseIsEqual","effect","deps","firstRef","tearDown","useWillUnmount","isValid","valueRef","i","cache","useStableMemo","isDepsEqual","_ref","_ref2","nextElement","nextConfig","prevElement","prevConfig","element","config","callback","dependencies","isEqualOrOptions","isEqual","_ref$effectHook","effectHook","dependenciesRef","cleanupRef","cleanup","useDebugValue","observer","MutationObserver","observe","disconnect","MAX_DELAY_MS","Math","pow","setChainedTimeout","handleRef","timeoutAtMs","delayMs","Date","now","useTimeout","onUnmount","setActiveDescendant","activeId","removeAttribute","setAttribute","id","visible","dataValue","dataItem","field","dataText","textField","valueMatcher","dataKey","dataIndexOf","valueDataKey","idx","datum","text","item","indexOf","matches","findOrSelf","includes","CREATE_OPTION","propTypes","searchTerm","PropTypes","string","bool","onSelect","isRequired","AddToListOption","children","props","className","selected","disabled","label","icon","busy","spinner","Spinner","tabIndex","title","MIN","MAX","VIEW_OPTIONS","VIEW_UNIT","month","year","decade","century","VIEW","Month","Year","Decade","Century","ARROWS_TO_DIRECTION","ArrowDown","ArrowUp","ArrowRight","ArrowLeft","OPPOSITE_DIRECTION","LEFT","RIGHT","MULTIPLIER","inRangeValue","_value","min","max","dateOrNull","dates","readOnly","instanceOf","currentDate","onCurrentDateChange","navigatePrevIcon","node","navigateNextIcon","view","args","oneOf","views","arrayOf","onViewChange","onNavigate","culture","autoFocus","footer","renderDay","formats","shape","header","any","day","date","messages","moveBack","moveForward","onKeyDown","Calendar","bordered","defaultValue","pCurrentDate","defaultCurrentDate","defaultView","elementProps","currentValue","handleChange","useUncontrolledProp","handleCurrentDateChange","currentView","handleViewChange","localizer","useLocalizer","viewId","useInstanceId","labelId","slideDirection","lastView","lastDate","gt","useViewState","lastValue","inValue","last","eq","maybeSetCurrentDate","handleDateChange","notify","focus","navigate","direction","nextView","slideDir","nextDate","inRange","querySelector","inRangeDate","method","unit","multi","View","todayNotInRange","prevDisabled","nextDisabled","role","formatDate","startOf","getHeaderLabel","upDisabled","todayDisabled","onMoveLeft","onMoveRight","onMoveToday","firstView","Transition","onTransitionEnd","hadFocus","activeElement","contains","focusedItem","ctrl","ctrlKey","metaKey","preventDefault","getComputedStyle","currentTarget","getPropertyValue","move","lt","dt","isNaN","getTime","displayName","SlideTransitionGroup","newDate","isMonth","isUpOrDown","rangeUnit","addUnit","amount","chevronLeft","chevronRight","onClick","caretDown","moveToday","CalendarView","labelledby","focusEvents","Body","Row","Cell","viewUnit","isEmpty","isFocused","isSelected","isOffView","Boolean","clamp","chunks","chunk","_date","getCenturyDecades","row","rowIdx","colIdx","open","onToggle","renderListItem","listComponent","elementType","renderListGroup","groupBy","CustomPropTypes","accessor","hideEmptyPopup","hideCaret","acceptsArray","selectIcon","busySpinner","dropUp","popupTransition","placeholder","containerClassName","inputProps","listProps","openCombobox","emptyList","emptyFilter","ComboboxImpl","React","forwardRef","outerRef","autoSelectMatches","focusFirstItem","defaultOpen","filter","optionComponent","ListComponent","List","popupComponent","Popup","BasePopup","rawData","userMessages","currentOpen","handleOpen","inputRef","listRef","suggestion","setSuggestion","shouldFilter","inputId","listId","accessors","useAccessors","useMessagesWithDefaults","toggle","isReadOnly","useFilteredData","selectedItem","list","useFocusList","scope","anchorItem","preventScroll","close","useActiveDescendant","getFocused","handleSelect","originalEvent","change","nextValue","source","useImperativeHandle","shouldRenderPopup","useFirstFocusedRender","valueItem","inputValue","completeType","popupOpen","inputReadOnly","inputAddon","altKey","shiftKey","defaultPrevented","setFocused","el","toDataItem","first","next","prev","trim","toLowerCase","FocusListContext","Provider","context","transition","onEntering","scrollIntoView","renderItem","renderGroup","d","meta","valueFormat","valueDisplayFormat","valueEditFormat","includeTime","timePrecision","timeInputProps","parse","oneOfType","onKeyPress","calendarProps","dateButton","defaultProps","calendar","DatePicker","uncontrolledProps","useUncontrolled","ariaLabelledby","ariaDescribedby","calRef","tabTrap","dateId","currentFormat","stop","dateParser","str","parseDate","constrain","handleKeyDown","handleKeyPress","handleDateSelect","dateTime","merge","dateStr","handleTimeChange","handleCalendarClick","shouldRenderList","formatter","displayFormat","editFormat","editing","start","requestAnimationFrame","onExited","precision","datePart","DatePickerInput","needsFlush","nextTextValue","prevValue","setPrevValue","textValue","setTextValue","isNullOrInvalid","padStart","len","padding","valueText","pad","emptyChar","autoComplete","getDecadeYears","allowCreate","renderValue","renderPopup","onCreate","onSearch","createOption","DropdownListImpl","defaultSearchTerm","delay","currentSearch","handleSearch","filterRef","clearSearch","autofilling","setAutofilling","nextSearchChar","timeout","wordRef","character","cb","word","useSearchWordBuilder","showCreateOption","handleCreate","search","nextSearchTerm","action","lastSearchTerm","widgetProps","closeWithFocus","hasFocused","fromCharCode","which","presets","startsWith","items","startIdx","pointer","dataKeyAccessor","textAccessor","allowSearch","onAutofill","onAutofillChange","filledValue","onEntered","DropdownListInput","searchRef","strValue","style","display","onAnimationStart","animationName","filterer","filterPreset","normalizeFilter","lastIndexOf","ctx","useContext","useLayoutEffect","delete","createContext","defaultOpts","behavior","scopeSelector","WeakMap","setFocusedItem","itemSelector","find","dataset","rwFocused","nextIdx","focusedElement","hasItem","caretUp","height","fill","viewBox","xmlns","clock","times","xmlSpace","attributeType","attributeName","from","to","dur","repeatCount","Input","component","Component","number","supportStyles","Intl","DateTimeFormat","dateShort","timeShort","hour","minute","getFormatter","options","format","firstOfWeek","dateStyle","time","timeStyle","datetime","weekday","dayOfMonth","endOf","toLocaleString","normalizeFormat","toFormattedParts","formatToParts","p","decimal","NumberFormat","match","decimalCharacter","num","parseFloat","whitelist","whitelistRegex","onMove","onHoverOption","useScrollFocusedIntoView","observeChanges","block","inline","subtree","attributes","attributeFilter","useHandleSelect","multiple","dataItems","checked","elementRef","Option","ListOption","renderList","makeArray","groupedData","groupBySortedKeys","disabledItems","toItemArray","divRef","some","r","pickElementProps","renderOption","itemIsDisabled","itemIsSelected","group","rootProps","Children","count","useListOption","classes","ListOptionGroup","Tag","Listbox","_outerRef","propsValue","propsOnChange","lastItemRef","useWidgetProps","mergeWithDefaults","formatOverrides","Error","getMessages","userFormat","formatNumber","bind","parseNumber","LocalizerContext","IntlLocalizers","DateLocalizer","NumberLocalizer","Localization","JSON","stringify","weekStart","days","lte","visibleDays","rows","formattedDate","INSERT","REMOVE","renderTagValue","clearTagIcon","showPlaceholderWithValues","showSelectedItemsInList","tagsLabel","selectedItems","noneSelected","removeLabel","EMPTY_ARRAY","Multiselect","tagOptionComponent","tagsId","createId","activeTagId","activeOptionId","tagList","lengthWithoutValues","v","useMultiselectData","focusedTag","handleDelete","deletingRef","handleClick","nextDataItems","concat","inputOwns","keyCode","onTouchEnd","onDoubleClick","select","onDelete","onKeyUp","maxLength","MultiselectInput","spellCheck","autoCapitalize","onRemove","handleRemove","TagOption","MultiselectTag","itemDisabled","NumberPickerInput","state","handleBlur","stringValue","isIntermediateValue","numberValue","isIntermediate","setStringValue","getSnapshotBeforeUpdate","reselectText","isSelectingAllText","nextProps","prevState","lastValueFromProps","componentDidUpdate","_","__","findDOMNode","setState","val","localeChar","lastIndex","char","isAtDelimiter","decimals","split","isPaddedZeros","canUseDOM","selectionStart","selectionEnd","strVal","userParse","render","innerRef","inputMode","isFinite","Infinity","parseInt","step","incrementIcon","decrementIcon","increment","decrement","NumberPicker","pStep","repeaterRef","handleMouseDown","handleMouseUp","window","createInterval","rawValue","getPrecision","toFixed","clampedValue","onMouseUp","onMouseDown","onMouseLeave","round","StaticContainer","memo","shouldUpdate","SlideDownTransition","in","assign","transitionClasses","ENTERING","EXITING","EXITED","setContainerHeight","elem","getHeight","clearContainerHeight","handleEntered","handleEntering","handleExit","onExit","handleExited","handleTransitionEnd","done","firstChild","container","content","margin","old","appear","onEnter","addEndListener","status","innerProps","cloneElement","innerClassName","DirectionPropType","clone","cls","super","isTransitioning","lastChild","createRef","prevClasses","currentClasses","flush","previous","clientHeight","isEmptyValue","hours","minutes","seconds","milliseconds","getValueParts","use12HourClock","meridiem","getHours","getMinutes","getSeconds","getMilliseconds","TEST_VALID","hours12","TEST_COMPLETE","testPart","part","tests","padValues","emptyCharacter","noClearButton","hoursAddon","minutesAddon","secondsAddon","millisecondsAddon","TimeInput","minsAddon","secsAddon","hourRef","focusable","timeParts","setTimeParts","s","useTimePartState","getMin","getMax","Promise","resolve","then","HTMLInputElement","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","selectTextRange","numValue","notifyChange","isComplete","focusNext","input","end","isRTL","isMeridiem","isNext","isPrev","inc","nextPart","updates","nextTimeParts","isPartialValue","setHours","setMinutes","setSeconds","setMilliseconds","delta","nodes","showClear","isNavigatingViaKeyboard","setIsNavigatingViaKeyboard","useKeyboardNavigationCheck","Widget","idCount","otherId","suffix","months","monthsInYear","chunkSize","slice","_keys","iter","groups","Map","obj","excludeNull","o","dte","dateMath","defaultDate","labels","join","DEFAULTS","defaults","processed","isOpen","setFocus","isWidgetDefaultPrevented","selector","defaultSelector","startedRef","getDocument","tabbables","querySelectorAll","hasOwn","classNames","argType","inner","default","MILI","SECONDS","MINUTES","HOURS","DAY","WEEK","MONTH","YEAR","DECADE","CENTURY","multiplierMilli","multiplierMonth","daysInFeb","currentOffset","getTimezoneOffset","nextOffset","solveDST","addMillis","getFullYear","getMonth","getDate","totalMonths","nextYear","trunc","nextMonth","nextDay","daysOf","setFullYear","setDate","setMonth","addMonths","TypeError","subtract","createComparer","neq","gte","createAccessor","firstDay","w","diff","date1","date2","asFloat","dividend","divisor","hourLength","dateOut","floor","operator","doc","active","nodeName","body","createElement","closest","stopAt","nextNode","parentElement","ELEMENT_NODE","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","property","css","transforms","psuedoElement","ownerDocument","ownerWindow","isTransform","removeProperty","cssText","isWindow","DOCUMENT_NODE","getscrollAccessor","prop","win","scrollTo","client","innerHeight","box","top","left","width","docElem","documentElement","compareDocumentPosition","getBoundingClientRect","scrollTop","clientTop","scrollLeft","clientLeft","matchesImpl","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","toArray","qsa","optionsSupported","onceSupported","eventName","once","wrappedHandler","__once","onceHandler","transitionEnd","duration","mult","removeEmulate","called","evt","createEvent","initEvent","dispatchEvent","triggerTransitionEnd","remove","emulateTransitionEnd","condition","c","f","error","argIndex","framesToPop","propIsEnumerable","toObject","test1","getOwnPropertyNames","test2","test3","letter","err","shouldUseNative","symbols","printWarning","ReactPropTypesSecret","loggedTypeFailures","checkPropTypes","typeSpecs","location","componentName","getStack","typeSpecName","ex","console","x","resetWarningCache","emptyFunction","emptyFunctionWithReset","shim","propName","propFullName","secret","getShim","ReactPropTypes","objectOf","exact","ReactIs","emptyFunctionThatReturnsNull","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","Symbol","iterator","ANONYMOUS","createPrimitiveTypeChecker","createChainableTypeChecker","typeChecker","PropTypeError","propValue","getPropType","isValidElementType","expectedClass","expectedClassName","isNode","propType","expectedValues","validate","is","valuesString","getPreciseType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","shapeTypes","allKeys","y","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","cacheKey","chainedCheckType","expectedType","every","iteratorFn","maybeIterable","getIteratorFn","isSymbol","isElement","hasSymbol","for","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","g","h","k","l","m","q","t","z","u","A","timeoutsShape","enter","exit","enterDone","enterActive","exitDone","exitActive","UNMOUNTED","ENTERED","_React$Component","_this","initialStatus","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getDerivedStateFromProps","_proto","componentDidMount","updateStatus","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","_this2","appearing","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","_this3","onExiting","cancel","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","_ref3","maybeNextCallback","_this$props","childProps","TransitionGroupContext","noop","contextType","pt","_len","_key","warn","_extends","isProp","defaultKey","charAt","toUpperCase","substr","_toPropertyKey","hint","prim","toPrimitive","res","_toPrimitive","wasPropRef","_useState","stateValue","wasProp","reduce","fieldName","_extends2","rest","handlerName","_useUncontrolledProp","componentWillMount","componentWillReceiveProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","uncontrollable","controlledValues","methods","canAcceptRef","isReactComponent","controlledProps","PROPS_TO_OMIT","UncontrolledComponent","handlers","create","_notifying","_len2","_key2","unmounted","attachRef","shouldComponentUpdate","_this$props2","newProps","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","polyfill","readOnlyPropType","_this$inner","WrappedComponent","__source","fileName","lineNumber","__self","ControlledComponent","deferControlTo","newComponent","additions","nextMethods","__suppressDeprecationWarning","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","_objectWithoutPropertiesLoose","excluded","sourceKeys","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","defineProperty","enumerable","toStringTag"],"sourceRoot":""}
\No newline at end of file