diff --git "a/web-build/static/js/968.ccf00a78.js.map" "b/web-build/static/js/968.ccf00a78.js.map" new file mode 100644--- /dev/null +++ "b/web-build/static/js/968.ccf00a78.js.map" @@ -0,0 +1 @@ +{"version":3,"file":"static/js/968.ccf00a78.js","mappings":"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","sources":["node_modules/@react-native-community/slider/dist/RNCSliderNativeComponent.web.js","node_modules/@react-native-community/slider/dist/Slider.js","node_modules/@react-native-community/slider/dist/components/StepNumber.js","node_modules/@react-native-community/slider/dist/components/StepsIndicator.js","node_modules/@react-native-community/slider/dist/components/TrackMark.js","node_modules/@react-native-community/slider/dist/index.js","node_modules/@react-native-community/slider/dist/utils/constants.js","node_modules/@react-native-community/slider/dist/utils/styles.js","node_modules/@react-native/assets-registry/registry.js","node_modules/expo-asset/src/AssetSourceResolver.ts","node_modules/expo-asset/src/PlatformUtils.web.ts","node_modules/expo-asset/src/AssetSources.ts","node_modules/expo-asset/src/AssetUris.ts","node_modules/expo-asset/src/resolveAssetSource.ts","node_modules/expo-asset/src/Asset.ts","node_modules/expo-asset/src/LocalAssets.web.ts","node_modules/expo-asset/src/ImageAssets.ts","node_modules/expo-asset/src/ExpoAsset.web.ts","node_modules/expo-modules-core/src/EventEmitter.ts","node_modules/expo-av/src/Audio/RecordingConstants.ts","node_modules/expo-av/src/ExponentAV.web.ts","node_modules/expo-av/src/Audio/AudioAvailability.ts","node_modules/expo-av/src/AV.types.ts","node_modules/expo-av/src/AV.ts","node_modules/expo-av/src/Audio/Sound.ts","node_modules/expo-font/src/Font.types.ts","node_modules/expo-font/src/ExpoFontLoader.web.ts","node_modules/expo-font/src/FontLoader.web.ts","node_modules/expo-font/src/memory.ts","node_modules/expo-font/src/Font.ts","node_modules/expo-font/src/FontHooks.ts","node_modules/expo-modules-core/src/PermissionsHook.ts","node_modules/expo-image-picker/src/ExponentImagePicker.web.ts","node_modules/expo-image-picker/src/ImagePicker.ts","node_modules/expo-image-picker/src/ImagePicker.types.ts","node_modules/expo-modules-core/src/PermissionsInterface.ts","node_modules/expo-modules-core/src/environment/browser.web.ts","node_modules/expo-modules-core/src/Platform.ts","node_modules/expo-modules-core/src/errors/CodedError.ts","node_modules/expo-modules-core/src/errors/UnavailabilityError.ts","node_modules/expo-status-bar/src/ExpoStatusBar.tsx","node_modules/react-native-element-dropdown/src/toolkits/index.ts","node_modules/react-native-element-dropdown/src/useDeviceOrientation.ts","node_modules/react-native-element-dropdown/src/components/TextInput/styles.ts","node_modules/react-native-element-dropdown/src/components/TextInput/index.tsx","node_modules/react-native-element-dropdown/src/components/Dropdown/styles.ts","node_modules/react-native-element-dropdown/src/components/Dropdown/index.tsx","node_modules/react-native-element-dropdown/src/components/MultiSelect/styles.ts","node_modules/react-native-element-dropdown/src/components/MultiSelect/index.tsx","node_modules/react-native-element-dropdown/src/components/SelectCountry/styles.ts","node_modules/react-native-element-dropdown/src/components/SelectCountry/index.tsx","node_modules/react-native-web/dist/exports/ActivityIndicator/index.js","node_modules/react-native-web/dist/vendor/react-native/Animated/NativeAnimatedHelper.js","node_modules/react-native-web/dist/vendor/react-native/TurboModule/TurboModuleRegistry.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedNode.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedWithChildren.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedInterpolation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedValue.js","node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedEvent.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedTransform.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedStyle.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedProps.js","node_modules/react-native-web/dist/vendor/react-native/Utilities/setAndForwardRef.js","node_modules/react-native-web/dist/vendor/react-native/Animated/createAnimatedComponent.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedFlatList.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedImage.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedScrollView.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedSectionList.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedText.js","node_modules/react-native-web/dist/vendor/react-native/Animated/components/AnimatedView.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedAddition.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedDiffClamp.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedDivision.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedModulo.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedMultiplication.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedSubtraction.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedTracking.js","node_modules/react-native-web/dist/vendor/react-native/Animated/nodes/AnimatedValueXY.js","node_modules/react-native-web/dist/vendor/react-native/Animated/animations/Animation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/animations/DecayAnimation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/SpringConfig.js","node_modules/react-native-web/dist/vendor/react-native/Animated/animations/SpringAnimation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/animations/TimingAnimation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedImplementation.js","node_modules/react-native-web/dist/vendor/react-native/Animated/AnimatedMock.js","node_modules/react-native-web/dist/vendor/react-native/Animated/Animated.js","node_modules/react-native-web/dist/exports/Animated/index.js","node_modules/react-native-web/dist/exports/DeviceEventEmitter/index.js","node_modules/react-native-web/dist/exports/Dimensions/index.js","node_modules/react-native-web/dist/vendor/react-native/Animated/bezier.js","node_modules/react-native-web/dist/vendor/react-native/Animated/Easing.js","node_modules/react-native-web/dist/exports/Easing/index.js","node_modules/react-native-web/dist/vendor/react-native/deepDiffer/index.js","node_modules/react-native-web/dist/vendor/react-native/FlatList/index.js","node_modules/react-native-web/dist/exports/FlatList/index.js","node_modules/react-native-web/dist/exports/I18nManager/index.js","node_modules/react-native-web/dist/modules/AssetRegistry/index.js","node_modules/react-native-web/dist/modules/ImageLoader/index.js","node_modules/react-native-web/dist/exports/Image/index.js","node_modules/react-native-web/dist/modules/requestIdleCallback/index.js","node_modules/react-native-web/dist/exports/InteractionManager/index.js","node_modules/react-native-web/dist/exports/Keyboard/index.js","node_modules/react-native-web/dist/exports/Modal/ModalPortal.js","node_modules/react-native-web/dist/exports/Modal/ModalAnimation.js","node_modules/react-native-web/dist/exports/Modal/ModalContent.js","node_modules/react-native-web/dist/exports/Modal/ModalFocusTrap.js","node_modules/react-native-web/dist/exports/Modal/index.js","node_modules/react-native-web/dist/exports/NativeEventEmitter/index.js","node_modules/react-native-web/dist/exports/NativeModules/index.js","node_modules/react-native-web/dist/exports/PixelRatio/index.js","node_modules/react-native-web/dist/exports/Platform/index.js","node_modules/react-native-web/dist/modules/createEventHandle/index.js","node_modules/react-native-web/dist/modules/modality/index.js","node_modules/react-native-web/dist/modules/useEvent/index.js","node_modules/react-native-web/dist/modules/useHover/index.js","node_modules/react-native-web/dist/exports/Pressable/index.js","node_modules/react-native-web/dist/exports/RefreshControl/index.js","node_modules/react-native-web/dist/modules/ScrollResponder/index.js","node_modules/react-native-web/dist/exports/ScrollView/ScrollViewBase.js","node_modules/react-native-web/dist/exports/ScrollView/index.js","node_modules/react-native-web/dist/vendor/react-native/VirtualizedSectionList/index.js","node_modules/react-native-web/dist/vendor/react-native/SectionList/index.js","node_modules/react-native-web/dist/exports/SectionList/index.js","node_modules/react-native-web/dist/exports/StatusBar/index.js","node_modules/react-native-web/dist/modules/isWebColor/index.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/normalizeColor.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/unitlessNumbers.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/normalizeValueWithProperty.js","node_modules/react-native-web/dist/exports/StyleSheet/dom/createCSSStyleSheet.js","node_modules/react-native-web/dist/exports/StyleSheet/dom/createOrderedCSSStyleSheet.js","node_modules/react-native-web/dist/exports/StyleSheet/dom/index.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/hash.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/hyphenateStyleName.js","node_modules/react-native-web/dist/modules/prefixStyles/static.js","node_modules/react-native-web/dist/modules/prefixStyles/index.js","node_modules/react-native-web/dist/exports/StyleSheet/compiler/index.js","node_modules/react-native-web/dist/exports/StyleSheet/index.js","node_modules/react-native-web/dist/exports/StyleSheet/preprocess.js","node_modules/react-native-web/dist/modules/multiplyStyleLengthValue/index.js","node_modules/react-native-web/dist/exports/Switch/index.js","node_modules/react-native-web/dist/exports/Text/TextAncestorContext.js","node_modules/react-native-web/dist/exports/Text/index.js","node_modules/react-native-web/dist/exports/TextInput/index.js","node_modules/react-native-web/dist/exports/TouchableHighlight/index.js","node_modules/react-native-web/dist/exports/TouchableOpacity/index.js","node_modules/react-native-web/dist/exports/TouchableWithoutFeedback/index.js","node_modules/react-native-web/dist/modules/unitlessNumbers/index.js","node_modules/react-native-web/dist/modules/setValueForStyles/dangerousStyleValue.js","node_modules/react-native-web/dist/modules/setValueForStyles/index.js","node_modules/react-native-web/dist/exports/UIManager/index.js","node_modules/react-native-web/dist/exports/View/index.js","node_modules/react-native-web/dist/exports/createElement/index.js","node_modules/react-native-web/dist/exports/findNodeHandle/index.js","node_modules/react-native-web/dist/exports/processColor/index.js","node_modules/react-native-web/dist/exports/useWindowDimensions/index.js","node_modules/react-native-web/dist/exports/render/index.js","node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js","node_modules/react-native-web/dist/exports/AccessibilityInfo/index.js","node_modules/react-native-web/dist/exports/Alert/index.js","node_modules/react-native-web/dist/exports/Appearance/index.js","node_modules/react-native-web/dist/exports/AppRegistry/AppContainer.js","node_modules/react-native-web/dist/exports/AppRegistry/index.js","node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js","node_modules/react-native-web/dist/exports/AppState/index.js","node_modules/react-native-web/dist/exports/BackHandler/index.js","node_modules/react-native-web/dist/exports/Clipboard/index.js","node_modules/react-native-web/dist/exports/DeviceInfo/index.js","node_modules/react-native-web/dist/vendor/react-native/LayoutAnimation/index.js","node_modules/react-native-web/dist/exports/LayoutAnimation/index.js","node_modules/react-native-web/dist/exports/Linking/index.js","node_modules/react-native-web/dist/vendor/react-native/TouchHistoryMath/index.js","node_modules/react-native-web/dist/vendor/react-native/PanResponder/index.js","node_modules/react-native-web/dist/exports/PanResponder/index.js","node_modules/react-native-web/dist/exports/Share/index.js","node_modules/react-native-web/dist/exports/Vibration/index.js","node_modules/react-native-web/dist/exports/Button/index.js","node_modules/react-native-web/dist/exports/CheckBox/index.js","node_modules/react-native-web/dist/exports/ImageBackground/index.js","node_modules/react-native-web/dist/exports/KeyboardAvoidingView/index.js","node_modules/react-native-web/dist/exports/Picker/index.js","node_modules/react-native-web/dist/exports/Picker/PickerItem.js","node_modules/react-native-web/dist/exports/ProgressBar/index.js","node_modules/react-native-web/dist/exports/SafeAreaView/index.js","node_modules/react-native-web/dist/vendor/react-native/PooledClass/index.js","node_modules/react-native-web/dist/exports/Touchable/BoundingDimensions.js","node_modules/react-native-web/dist/exports/Touchable/Position.js","node_modules/react-native-web/dist/exports/Touchable/index.js","node_modules/react-native-web/dist/modules/UnimplementedView/index.js","node_modules/react-native-web/dist/exports/TouchableNativeFeedback/index.js","node_modules/react-native-web/dist/exports/VirtualizedList/index.js","node_modules/react-native-web/dist/exports/YellowBox/index.js","node_modules/react-native-web/dist/exports/LogBox/index.js","node_modules/react-native-web/dist/exports/DrawerLayoutAndroid/index.js","node_modules/react-native-web/dist/exports/InputAccessoryView/index.js","node_modules/react-native-web/dist/exports/ToastAndroid/index.js","node_modules/react-native-web/dist/exports/PermissionsAndroid/index.js","node_modules/react-native-web/dist/exports/Settings/index.js","node_modules/react-native-web/dist/exports/Systrace/index.js","node_modules/react-native-web/dist/exports/TVEventHandler/index.js","node_modules/react-native-web/dist/exports/useColorScheme/index.js","node_modules/react-native-web/dist/exports/useLocaleContext/index.js","node_modules/react-native-web/dist/modules/AccessibilityUtil/propsToAriaRole.js","node_modules/react-native-web/dist/modules/AccessibilityUtil/propsToAccessibilityComponent.js","node_modules/react-native-web/dist/modules/AccessibilityUtil/index.js","node_modules/react-native-web/dist/modules/AccessibilityUtil/isDisabled.js","node_modules/react-native-web/dist/modules/TextInputState/index.js","node_modules/react-native-web/dist/modules/canUseDom/index.js","node_modules/react-native-web/dist/modules/createDOMProps/index.js","node_modules/react-native-web/dist/modules/dismissKeyboard/index.js","node_modules/react-native-web/dist/modules/forwardedProps/index.js","node_modules/react-native-web/dist/modules/getBoundingClientRect/index.js","node_modules/react-native-web/dist/modules/mergeRefs/index.js","node_modules/react-native-web/dist/modules/pick/index.js","node_modules/react-native-web/dist/modules/useElementLayout/index.js","node_modules/react-native-web/dist/modules/useLayoutEffect/index.js","node_modules/react-native-web/dist/modules/useLocale/isLocaleRTL.js","node_modules/react-native-web/dist/modules/useLocale/index.js","node_modules/react-native-web/dist/modules/useMergeRefs/index.js","node_modules/react-native-web/dist/modules/usePlatformMethods/index.js","node_modules/react-native-web/dist/modules/usePressEvents/PressResponder.js","node_modules/react-native-web/dist/modules/usePressEvents/index.js","node_modules/react-native-web/dist/modules/useResponderEvents/createResponderEvent.js","node_modules/react-native-web/dist/modules/useResponderEvents/ResponderEventTypes.js","node_modules/react-native-web/dist/modules/useResponderEvents/utils.js","node_modules/react-native-web/dist/modules/isSelectionValid/index.js","node_modules/react-native-web/dist/modules/useResponderEvents/ResponderTouchHistoryStore.js","node_modules/react-native-web/dist/modules/useResponderEvents/ResponderSystem.js","node_modules/react-native-web/dist/modules/useResponderEvents/index.js","node_modules/react-native-web/dist/modules/useStable/index.js","node_modules/react-native-web/dist/vendor/react-native/emitter/EventEmitter.js","node_modules/react-native-web/dist/vendor/react-native/NativeEventEmitter/RCTDeviceEventEmitter.js","node_modules/react-native-web/dist/vendor/react-native/NativeEventEmitter/index.js","node_modules/react-native-web/dist/vendor/react-native/VirtualizeUtils/index.js","node_modules/react-native-web/dist/vendor/react-native/Batchinator/index.js","node_modules/react-native-web/dist/vendor/react-native/FillRateHelper/index.js","node_modules/react-native-web/dist/vendor/react-native/ViewabilityHelper/index.js","node_modules/react-native-web/dist/vendor/react-native/infoLog/index.js","node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/VirtualizedListContext.js","node_modules/react-native-web/dist/vendor/react-native/VirtualizedList/index.js","node_modules/react-native-web/dist/vendor/react-native/emitter/_EventSubscription.js","node_modules/react-native-web/dist/vendor/react-native/emitter/_EmitterSubscription.js","node_modules/react-native-web/dist/vendor/react-native/emitter/_EventSubscriptionVendor.js","node_modules/react-native-web/dist/vendor/react-native/emitter/_EventEmitter.js","node_modules/create-react-class/factory.js","node_modules/create-react-class/index.js","node_modules/css-in-js-utils/es/assignStyle.js","node_modules/css-in-js-utils/es/camelCaseProperty.js","node_modules/css-in-js-utils/es/hyphenateProperty.js","node_modules/css-in-js-utils/es/cssifyDeclaration.js","node_modules/css-in-js-utils/es/cssifyObject.js","node_modules/css-in-js-utils/es/isPrefixedProperty.js","node_modules/css-in-js-utils/es/isPrefixedValue.js","node_modules/css-in-js-utils/es/isUnitlessProperty.js","node_modules/css-in-js-utils/es/unprefixProperty.js","node_modules/css-in-js-utils/es/normalizeProperty.js","node_modules/css-in-js-utils/es/resolveArrayValue.js","node_modules/css-in-js-utils/es/unprefixValue.js","node_modules/css-in-js-utils/lib/hyphenateProperty.js","node_modules/css-in-js-utils/lib/isPrefixedValue.js","node_modules/fbjs/lib/emptyFunction.js","node_modules/fbjs/lib/invariant.js","node_modules/fbjs/lib/warning.js","node_modules/fontfaceobserver/fontfaceobserver.standalone.js","node_modules/hyphenate-style-name/index.js","node_modules/inline-style-prefixer/lib/createPrefixer.js","node_modules/inline-style-prefixer/lib/plugins/backgroundClip.js","node_modules/inline-style-prefixer/lib/plugins/crossFade.js","node_modules/inline-style-prefixer/lib/plugins/cursor.js","node_modules/inline-style-prefixer/lib/plugins/filter.js","node_modules/inline-style-prefixer/lib/plugins/imageSet.js","node_modules/inline-style-prefixer/lib/plugins/logical.js","node_modules/inline-style-prefixer/lib/plugins/position.js","node_modules/inline-style-prefixer/lib/plugins/sizing.js","node_modules/inline-style-prefixer/lib/plugins/transition.js","node_modules/inline-style-prefixer/lib/utils/addNewValuesOnly.js","node_modules/inline-style-prefixer/lib/utils/capitalizeString.js","node_modules/inline-style-prefixer/lib/utils/isObject.js","node_modules/inline-style-prefixer/lib/utils/prefixProperty.js","node_modules/inline-style-prefixer/lib/utils/prefixValue.js","node_modules/invariant/browser.js","node_modules/lodash/lodash.js","node_modules/normalize-css-color/index.js","node_modules/object-assign/index.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/react-dom/client.js","node_modules/react-dom/index.js","node_modules/react/cjs/react-jsx-runtime.production.min.js","node_modules/react/cjs/react.production.min.js","node_modules/react/index.js","node_modules/react/jsx-runtime.js","node_modules/scheduler/cjs/scheduler.production.min.js","node_modules/scheduler/index.js","node_modules/styleq/dist/styleq.js","node_modules/styleq/dist/transform-localize-style.js","node_modules/@babel/runtime/helpers/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/arrayWithHoles.js","node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/@babel/runtime/helpers/iterableToArray.js","node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","node_modules/@babel/runtime/helpers/nonIterableRest.js","node_modules/@babel/runtime/helpers/nonIterableSpread.js","node_modules/@babel/runtime/helpers/objectWithoutProperties.js","node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","node_modules/@babel/runtime/helpers/slicedToArray.js","node_modules/@babel/runtime/helpers/toConsumableArray.js","node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js","node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","node_modules/@babel/runtime/helpers/esm/toPrimitive.js","node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/@babel/runtime/helpers/esm/objectSpread2.js","node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.default=void 0;var _toConsumableArray2=_interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));var _slicedToArray2=_interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));var _objectWithoutProperties2=_interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));var _reactDom=_interopRequireDefault(require(\"react-dom\"));var _react=_interopRequireWildcard(require(\"react\"));var _reactNative=require(\"react-native\");var _jsxRuntime=require(\"react/jsx-runtime\");var _excluded=[\"value\",\"minimumValue\",\"maximumValue\",\"lowerLimit\",\"upperLimit\",\"step\",\"minimumTrackTintColor\",\"maximumTrackTintColor\",\"thumbTintColor\",\"thumbStyle\",\"style\",\"inverted\",\"disabled\",\"trackHeight\",\"thumbSize\",\"thumbImage\",\"onRNCSliderSlidingStart\",\"onRNCSliderSlidingComplete\",\"onRNCSliderValueChange\"];var _this=this,_jsxFileName=\"/Users/bartoszklonowski/Desktop/Projects/react-native-slider/package/src/RNCSliderNativeComponent.web.tsx\";function _getRequireWildcardCache(e){if(\"function\"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||\"object\"!=typeof e&&\"function\"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if(\"default\"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var valueToEvent=function valueToEvent(value){return{nativeEvent:{value:value}};};var RCTSliderWebComponent=_react.default.forwardRef(function(_ref,forwardedRef){var initialValue=_ref.value,_ref$minimumValue=_ref.minimumValue,minimumValue=_ref$minimumValue===void 0?0:_ref$minimumValue,_ref$maximumValue=_ref.maximumValue,maximumValue=_ref$maximumValue===void 0?0:_ref$maximumValue,_ref$lowerLimit=_ref.lowerLimit,lowerLimit=_ref$lowerLimit===void 0?0:_ref$lowerLimit,_ref$upperLimit=_ref.upperLimit,upperLimit=_ref$upperLimit===void 0?0:_ref$upperLimit,_ref$step=_ref.step,step=_ref$step===void 0?1:_ref$step,_ref$minimumTrackTint=_ref.minimumTrackTintColor,minimumTrackTintColor=_ref$minimumTrackTint===void 0?'#009688':_ref$minimumTrackTint,_ref$maximumTrackTint=_ref.maximumTrackTintColor,maximumTrackTintColor=_ref$maximumTrackTint===void 0?'#939393':_ref$maximumTrackTint,_ref$thumbTintColor=_ref.thumbTintColor,thumbTintColor=_ref$thumbTintColor===void 0?'#009688':_ref$thumbTintColor,_ref$thumbStyle=_ref.thumbStyle,thumbStyle=_ref$thumbStyle===void 0?{}:_ref$thumbStyle,_ref$style=_ref.style,style=_ref$style===void 0?{}:_ref$style,_ref$inverted=_ref.inverted,inverted=_ref$inverted===void 0?false:_ref$inverted,_ref$disabled=_ref.disabled,disabled=_ref$disabled===void 0?false:_ref$disabled,_ref$trackHeight=_ref.trackHeight,trackHeight=_ref$trackHeight===void 0?4:_ref$trackHeight,_ref$thumbSize=_ref.thumbSize,thumbSize=_ref$thumbSize===void 0?20:_ref$thumbSize,thumbImage=_ref.thumbImage,_ref$onRNCSliderSlidi=_ref.onRNCSliderSlidingStart,onRNCSliderSlidingStart=_ref$onRNCSliderSlidi===void 0?function(_){}:_ref$onRNCSliderSlidi,_ref$onRNCSliderSlidi2=_ref.onRNCSliderSlidingComplete,onRNCSliderSlidingComplete=_ref$onRNCSliderSlidi2===void 0?function(_){}:_ref$onRNCSliderSlidi2,_ref$onRNCSliderValue=_ref.onRNCSliderValueChange,onRNCSliderValueChange=_ref$onRNCSliderValue===void 0?function(_){}:_ref$onRNCSliderValue,others=(0,_objectWithoutProperties2.default)(_ref,_excluded);var containerSize=_react.default.useRef({width:0,height:0});var containerPositionX=_react.default.useRef(0);var containerRef=forwardedRef||_react.default.createRef();var containerPositionInvalidated=_react.default.useRef(false);var _React$useState=_react.default.useState(initialValue||minimumValue),_React$useState2=(0,_slicedToArray2.default)(_React$useState,2),value=_React$useState2[0],setValue=_React$useState2[1];var lastInitialValue=_react.default.useRef();var animationValues=_react.default.useRef({val:new _reactNative.Animated.Value(value),min:new _reactNative.Animated.Value(minimumValue),max:new _reactNative.Animated.Value(maximumValue),diff:new _reactNative.Animated.Value(maximumValue-minimumValue||1)}).current;_react.default.useEffect(function(){animationValues.min.setValue(minimumValue);animationValues.max.setValue(maximumValue);animationValues.diff.setValue(maximumValue-minimumValue||1);},[animationValues,minimumValue,maximumValue]);var minPercent=_react.default.useRef(_reactNative.Animated.multiply(new _reactNative.Animated.Value(100),_reactNative.Animated.divide(_reactNative.Animated.subtract(animationValues.val,animationValues.min),animationValues.diff))).current;var maxPercent=_react.default.useRef(_reactNative.Animated.subtract(new _reactNative.Animated.Value(100),minPercent)).current;var onValueChange=(0,_react.useCallback)(function(value){onRNCSliderValueChange&&onRNCSliderValueChange(valueToEvent(value));},[onRNCSliderValueChange]);var onSlidingStart=(0,_react.useCallback)(function(value){isUserInteracting.current=true;onRNCSliderSlidingStart&&onRNCSliderSlidingStart(valueToEvent(value));},[onRNCSliderSlidingStart]);var onSlidingComplete=(0,_react.useCallback)(function(value){isUserInteracting.current=false;onRNCSliderSlidingComplete&&onRNCSliderSlidingComplete(valueToEvent(value));},[onRNCSliderSlidingComplete]);var isUserInteracting=_react.default.useRef(false);var _updateValue=(0,_react.useCallback)(function(newValue){var hardRounded=decimalPrecision.current<20?Number.parseFloat(newValue.toFixed(decimalPrecision.current)):newValue;var withinBounds=Math.max(minimumValue,Math.min(hardRounded,maximumValue));if(value!==withinBounds){setValue(withinBounds);if(isUserInteracting.current){onValueChange(withinBounds);}return withinBounds;}return hardRounded;},[minimumValue,maximumValue,value,onValueChange]);_react.default.useLayoutEffect(function(){if(initialValue!==lastInitialValue.current){lastInitialValue.current=initialValue;var newValue=_updateValue(initialValue);animationValues.val.setValue(newValue);}},[initialValue,_updateValue,animationValues]);_react.default.useEffect(function(){var invalidateContainerPosition=function invalidateContainerPosition(){containerPositionInvalidated.current=true;};var onDocumentScroll=function onDocumentScroll(e){var isAlreadyInvalidated=!containerPositionInvalidated.current;if(isAlreadyInvalidated&&containerRef.current&&e.target.contains(containerRef.current)){invalidateContainerPosition();}};window.addEventListener('resize',invalidateContainerPosition);document.addEventListener('scroll',onDocumentScroll,{capture:true});return function(){window.removeEventListener('resize',invalidateContainerPosition);document.removeEventListener('scroll',onDocumentScroll,{capture:true});};},[containerRef]);var containerStyle=[{flexGrow:1,flexShrink:1,flexBasis:'auto',flexDirection:'row',alignItems:'center'},style];var trackStyle={height:trackHeight,borderRadius:trackHeight/2,userSelect:'none'};var minimumTrackStyle=Object.assign({},trackStyle,{backgroundColor:minimumTrackTintColor,flexGrow:minPercent});var maximumTrackStyle=Object.assign({},trackStyle,{backgroundColor:maximumTrackTintColor,flexGrow:maxPercent});var thumbViewStyle=[{width:thumbSize,height:thumbSize,backgroundColor:thumbTintColor,zIndex:1,borderRadius:thumbSize/2,overflow:'hidden'},thumbStyle];var decimalPrecision=_react.default.useRef(calculatePrecision(minimumValue,maximumValue,step));_react.default.useEffect(function(){decimalPrecision.current=calculatePrecision(minimumValue,maximumValue,step);},[maximumValue,minimumValue,step]);var updateContainerPositionX=function updateContainerPositionX(){var _ReactDOM$findDOMNode;var positionX=(_ReactDOM$findDOMNode=_reactDom.default.findDOMNode(containerRef.current).getBoundingClientRect())==null?void 0:_ReactDOM$findDOMNode.x;containerPositionX.current=positionX!=null?positionX:0;};var getValueFromNativeEvent=function getValueFromNativeEvent(pageX){var adjustForThumbSize=(containerSize.current.width||1)>thumbSize;var width=(containerSize.current.width||1)-(adjustForThumbSize?thumbSize:0);if(containerPositionInvalidated.current){containerPositionInvalidated.current=false;updateContainerPositionX();}var containerX=containerPositionX.current+(adjustForThumbSize?thumbSize/2:0);var lowerValue=minimumValueupperLimit?upperLimit:maximumValue;if(pageXcontainerX+width){return inverted?lowerValue:upperValue;}else{var x=pageX-containerX;var newValue=inverted?maximumValue-(maximumValue-minimumValue)*x/width:minimumValue+(maximumValue-minimumValue)*x/width;var valueAfterStep=step?Math.round(newValue/step)*step:newValue;var valueAfterLowerLimit=valueAfterStepupperLimit?upperLimit:valueAfterLowerLimit;return valueInLimitRange;}};var onTouchEnd=function onTouchEnd(_ref2){var nativeEvent=_ref2.nativeEvent;var newValue=_updateValue(getValueFromNativeEvent(nativeEvent.pageX));animationValues.val.setValue(newValue);onSlidingComplete(newValue);};var onMove=function onMove(_ref3){var nativeEvent=_ref3.nativeEvent;var newValue=getValueFromNativeEvent(nativeEvent.pageX);animationValues.val.setValue(newValue);_updateValue(newValue);};var accessibilityActions=function accessibilityActions(event){var tenth=(maximumValue-minimumValue)/10;switch(event.nativeEvent.actionName){case'increment':_updateValue(value+(step||tenth));break;case'decrement':_updateValue(value-(step||tenth));break;}};_react.default.useImperativeHandle(forwardedRef,function(){return{updateValue:function updateValue(val){_updateValue(val);}};},[_updateValue]);return(0,_jsxRuntime.jsxs)(_reactNative.View,Object.assign({ref:containerRef,onLayout:function onLayout(_ref4){var layout=_ref4.nativeEvent.layout;containerSize.current.height=layout.height;containerSize.current.width=layout.width;if(containerRef.current){updateContainerPositionX();}},accessibilityActions:[{name:'increment',label:'increment'},{name:'decrement',label:'decrement'}],onAccessibilityAction:accessibilityActions,accessible:true,accessibilityRole:'adjustable',style:containerStyle},others,{onStartShouldSetResponder:function onStartShouldSetResponder(){return!disabled;},onMoveShouldSetResponder:function onMoveShouldSetResponder(){return!disabled;},onResponderGrant:function onResponderGrant(){return onSlidingStart(value);},onResponderRelease:onTouchEnd,onResponderMove:onMove,children:[(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:\"none\",style:minimumTrackStyle}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:\"none\",style:thumbViewStyle,children:thumbImage!==undefined?(0,_jsxRuntime.jsx)(_reactNative.Image,{source:thumbImage,style:{width:'100%',height:'100%'}}):null}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:\"none\",style:maximumTrackStyle})]}));});function calculatePrecision(minimumValue,maximumValue,step){if(!step){return Infinity;}else{var decimals=[minimumValue,maximumValue,step].map(function(value){return((value+'').split('.').pop()||'').length;});return Math.max.apply(Math,(0,_toConsumableArray2.default)(decimals));}}RCTSliderWebComponent.displayName='RTCSliderWebComponent';var _default=exports.default=RCTSliderWebComponent;","var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.default=void 0;var _slicedToArray2=_interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));var _objectWithoutProperties2=_interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));var _react=_interopRequireWildcard(require(\"react\"));var _reactNative=require(\"react-native\");var _index=_interopRequireDefault(require(\"./index\"));var _StepsIndicator=require(\"./components/StepsIndicator\");var _styles=require(\"./utils/styles\");var _constants=require(\"./utils/constants\");var _jsxRuntime=require(\"react/jsx-runtime\");var _excluded=[\"onValueChange\",\"onSlidingStart\",\"onSlidingComplete\",\"onAccessibilityAction\"];var _this=this,_jsxFileName=\"/Users/bartoszklonowski/Desktop/Projects/react-native-slider/package/src/Slider.tsx\";function _getRequireWildcardCache(e){if(\"function\"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||\"object\"!=typeof e&&\"function\"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if(\"default\"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var SliderComponent=function SliderComponent(props,forwardedRef){var _props$value,_props$accessibilityS;var onValueChange=props.onValueChange,onSlidingStart=props.onSlidingStart,onSlidingComplete=props.onSlidingComplete,onAccessibilityAction=props.onAccessibilityAction,localProps=(0,_objectWithoutProperties2.default)(props,_excluded);var _useState=(0,_react.useState)((_props$value=props.value)!=null?_props$value:props.minimumValue),_useState2=(0,_slicedToArray2.default)(_useState,2),currentValue=_useState2[0],setCurrentValue=_useState2[1];var _useState3=(0,_react.useState)(0),_useState4=(0,_slicedToArray2.default)(_useState3,2),width=_useState4[0],setWidth=_useState4[1];var options=Array.from({length:(localProps.maximumValue-localProps.minimumValue)/(localProps.step?localProps.step:_constants.constants.DEFAULT_STEP_RESOLUTION)+1},function(_,index){return index;});var defaultStyle=_reactNative.Platform.OS==='ios'?_styles.styles.defaultSlideriOS:_styles.styles.defaultSlider;var sliderStyle={zIndex:1,width:width};var style=_reactNative.StyleSheet.compose(props.style,defaultStyle);var onValueChangeEvent=function onValueChangeEvent(event){onValueChange&&onValueChange(event.nativeEvent.value);setCurrentValue(event.nativeEvent.value);};var _disabled=typeof props.disabled==='boolean'?props.disabled:((_props$accessibilityS=props.accessibilityState)==null?void 0:_props$accessibilityS.disabled)===true;var _accessibilityState=typeof props.disabled==='boolean'?Object.assign({},props.accessibilityState,{disabled:props.disabled}):props.accessibilityState;var onSlidingStartEvent=onSlidingStart?function(event){onSlidingStart(event.nativeEvent.value);}:null;var onSlidingCompleteEvent=onSlidingComplete?function(event){onSlidingComplete(event.nativeEvent.value);}:null;var onAccessibilityActionEvent=onAccessibilityAction?function(event){onAccessibilityAction(event);}:null;var value=Number.isNaN(props.value)||!props.value?undefined:props.value;var lowerLimit=!!localProps.lowerLimit||localProps.lowerLimit===0?localProps.lowerLimit:_reactNative.Platform.select({web:localProps.minimumValue,default:_constants.constants.LIMIT_MIN_VALUE});var upperLimit=!!localProps.upperLimit||localProps.upperLimit===0?localProps.upperLimit:_reactNative.Platform.select({web:localProps.maximumValue,default:_constants.constants.LIMIT_MAX_VALUE});return(0,_jsxRuntime.jsxs)(_reactNative.View,{onLayout:function onLayout(event){setWidth(event.nativeEvent.layout.width);},style:[_styles.styles,style,{justifyContent:'center'}],children:[props.StepMarker||!!props.renderStepNumber?(0,_jsxRuntime.jsx)(_StepsIndicator.StepsIndicator,{options:options,sliderWidth:width,currentValue:currentValue,renderStepNumber:localProps.renderStepNumber,thumbImage:localProps.thumbImage,StepMarker:localProps.StepMarker,isLTR:localProps.inverted}):null,(0,_jsxRuntime.jsx)(_index.default,Object.assign({},localProps,{value:value,lowerLimit:lowerLimit,upperLimit:upperLimit,accessibilityState:_accessibilityState,thumbImage:_reactNative.Platform.OS==='web'?props.thumbImage:props.StepMarker?undefined:_reactNative.Image.resolveAssetSource(props.thumbImage),ref:forwardedRef,style:[sliderStyle,defaultStyle,{alignContent:'center',alignItems:'center'}],onChange:onValueChangeEvent,onRNCSliderSlidingStart:onSlidingStartEvent,onRNCSliderSlidingComplete:onSlidingCompleteEvent,onRNCSliderValueChange:onValueChangeEvent,disabled:_disabled,onStartShouldSetResponder:function onStartShouldSetResponder(){return true;},onResponderTerminationRequest:function onResponderTerminationRequest(){return false;},onRNCSliderAccessibilityAction:onAccessibilityActionEvent,thumbTintColor:props.thumbImage&&!!props.StepMarker?'transparent':props.thumbTintColor}))]});};var SliderWithRef=_react.default.forwardRef(SliderComponent);SliderWithRef.defaultProps={value:0,minimumValue:0,maximumValue:1,step:0,inverted:false,tapToSeek:false,lowerLimit:_reactNative.Platform.select({web:undefined,default:_constants.constants.LIMIT_MIN_VALUE}),upperLimit:_reactNative.Platform.select({web:undefined,default:_constants.constants.LIMIT_MAX_VALUE})};var _default=exports.default=SliderWithRef;","var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.StepNumber=void 0;var _react=_interopRequireDefault(require(\"react\"));var _reactNative=require(\"react-native\");var _styles=require(\"../utils/styles\");var _jsxRuntime=require(\"react/jsx-runtime\");var _this=this,_jsxFileName=\"/Users/bartoszklonowski/Desktop/Projects/react-native-slider/package/src/components/StepNumber.tsx\";var StepNumber=exports.StepNumber=function StepNumber(_ref){var i=_ref.i,style=_ref.style;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:_styles.styles.stepNumber,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:style,children:i})});};","Object.defineProperty(exports,\"__esModule\",{value:true});exports.StepsIndicator=void 0;var _react=_interopRequireWildcard(require(\"react\"));var _reactNative=require(\"react-native\");var _StepNumber=require(\"./StepNumber\");var _TrackMark=require(\"./TrackMark\");var _styles=require(\"../utils/styles\");var _constants=require(\"../utils/constants\");var _jsxRuntime=require(\"react/jsx-runtime\");var _this=this,_jsxFileName=\"/Users/bartoszklonowski/Desktop/Projects/react-native-slider/package/src/components/StepsIndicator.tsx\";function _getRequireWildcardCache(e){if(\"function\"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||\"object\"!=typeof e&&\"function\"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if(\"default\"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var StepsIndicator=exports.StepsIndicator=function StepsIndicator(_ref){var options=_ref.options,sliderWidth=_ref.sliderWidth,currentValue=_ref.currentValue,StepMarker=_ref.StepMarker,renderStepNumber=_ref.renderStepNumber,thumbImage=_ref.thumbImage,isLTR=_ref.isLTR;var stepNumberFontStyle={fontSize:options.length>9?_constants.constants.STEP_NUMBER_TEXT_FONT_SMALL:_constants.constants.STEP_NUMBER_TEXT_FONT_BIG};var values=isLTR?options.reverse():options;return(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:\"none\",style:[_styles.styles.stepsIndicator,{marginHorizontal:sliderWidth*_constants.constants.MARGIN_HORIZONTAL_PADDING}],children:values.map(function(i,index){return(0,_jsxRuntime.jsx)(_react.Fragment,{children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_styles.styles.stepIndicatorElement,children:[(0,_jsxRuntime.jsx)(_TrackMark.SliderTrackMark,{isTrue:currentValue===i,thumbImage:thumbImage,StepMarker:StepMarker},`${index}-SliderTrackMark`),renderStepNumber?(0,_jsxRuntime.jsx)(_StepNumber.StepNumber,{i:i,style:stepNumberFontStyle},`${index}th-step`):null]})},index);})});};","var _interopRequireDefault=require(\"@babel/runtime/helpers/interopRequireDefault\");Object.defineProperty(exports,\"__esModule\",{value:true});exports.SliderTrackMark=void 0;var _react=_interopRequireDefault(require(\"react\"));var _reactNative=require(\"react-native\");var _styles=require(\"../utils/styles\");var _jsxRuntime=require(\"react/jsx-runtime\");var _this=this,_jsxFileName=\"/Users/bartoszklonowski/Desktop/Projects/react-native-slider/package/src/components/TrackMark.tsx\";var SliderTrackMark=exports.SliderTrackMark=function SliderTrackMark(_ref){var isTrue=_ref.isTrue,thumbImage=_ref.thumbImage,StepMarker=_ref.StepMarker;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_styles.styles.trackMarkContainer,children:[StepMarker?(0,_jsxRuntime.jsx)(StepMarker,{stepMarked:isTrue}):null,thumbImage&&isTrue?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_styles.styles.thumbImageContainer,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:thumbImage,style:_styles.styles.thumbImage})}):null]});};","Object.defineProperty(exports,\"__esModule\",{value:true});exports.default=void 0;var RNCSlider=require('./RNCSliderNativeComponent').default;var _default=exports.default=RNCSlider;","Object.defineProperty(exports,\"__esModule\",{value:true});exports.constants=void 0;var constants=exports.constants={MARGIN_HORIZONTAL_PADDING:0.05,STEP_NUMBER_TEXT_FONT_SMALL:8,STEP_NUMBER_TEXT_FONT_BIG:12,LIMIT_MIN_VALUE:Number.MIN_SAFE_INTEGER,LIMIT_MAX_VALUE:Number.MAX_SAFE_INTEGER,DEFAULT_STEP_RESOLUTION:100};","Object.defineProperty(exports,\"__esModule\",{value:true});exports.styles=void 0;var _reactNative=require(\"react-native\");var styles=exports.styles=_reactNative.StyleSheet.create({stepNumber:{marginTop:20,alignItems:'center',position:'absolute'},sliderMainContainer:{zIndex:1,width:'100%'},defaultSlideriOS:{height:40},defaultSlider:{},stepsIndicator:{flex:1,flexDirection:'row',justifyContent:'space-between',top:_reactNative.Platform.OS==='ios'?10:0,zIndex:2},trackMarkContainer:{alignItems:'center',alignContent:'center',alignSelf:'center',justifyContent:'center',position:'absolute',zIndex:3},thumbImageContainer:{position:'absolute',zIndex:3,justifyContent:'center',alignItems:'center',alignContent:'center'},thumbImage:{alignContent:'center',alignItems:'center',position:'absolute'},stepIndicatorElement:{alignItems:'center',alignContent:'center'},defaultIndicatorMarked:{height:20,width:5,backgroundColor:'#CCCCCC'},defaultIndicatorIdle:{height:10,width:2,backgroundColor:'#C0C0C0'}});","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow strict\n * @format\n */\n\n'use strict';\n\nexport type PackagerAsset = {\n +__packager_asset: boolean,\n +fileSystemLocation: string,\n +httpServerLocation: string,\n +width: ?number,\n +height: ?number,\n +scales: Array,\n +hash: string,\n +name: string,\n +type: string,\n ...\n};\n\nconst assets: Array = [];\n\nfunction registerAsset(asset: PackagerAsset): number {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\n\nfunction getAssetByID(assetId: number): PackagerAsset {\n return assets[assetId - 1];\n}\n\nmodule.exports = {registerAsset, getAssetByID};\n","import type { PackagerAsset } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\nimport { PixelRatio } from 'react-native';\n\nexport type ResolvedAssetSource = {\n __packager_asset: boolean;\n width?: number;\n height?: number;\n uri: string;\n scale: number;\n};\n\n// Returns the Metro dev server-specific asset location.\nfunction getScaledAssetPath(asset): string {\n const scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get());\n const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n const type = !asset.type ? '' : `.${asset.type}`;\n if (__DEV__) {\n return asset.httpServerLocation + '/' + asset.name + scaleSuffix + type;\n } else {\n return asset.httpServerLocation.replace(/\\.\\.\\//g, '_') + '/' + asset.name + scaleSuffix + type;\n }\n}\n\nexport default class AssetSourceResolver {\n private readonly serverUrl: string;\n // where the jsbundle is being run from\n // NOTE(EvanBacon): Never defined on web.\n private readonly jsbundleUrl: string | undefined | null;\n // the asset to resolve\n public readonly asset: PackagerAsset;\n\n constructor(\n serverUrl: string | undefined | null,\n jsbundleUrl: string | undefined | null,\n asset: PackagerAsset\n ) {\n this.serverUrl = serverUrl || 'https://expo.dev';\n this.jsbundleUrl = null;\n this.asset = asset;\n }\n\n // Always true for web runtimes\n isLoadedFromServer(): boolean {\n return true;\n }\n\n // Always false for web runtimes\n isLoadedFromFileSystem(): boolean {\n return false;\n }\n\n defaultAsset(): ResolvedAssetSource {\n return this.assetServerURL();\n }\n\n /**\n * @returns absolute remote URL for the hosted asset.\n */\n assetServerURL(): ResolvedAssetSource {\n const fromUrl = new URL(getScaledAssetPath(this.asset), this.serverUrl);\n fromUrl.searchParams.set('platform', Platform.OS);\n fromUrl.searchParams.set('hash', this.asset.hash);\n return this.fromSource(\n // Relative on web\n fromUrl.toString().replace(fromUrl.origin, '')\n );\n }\n\n fromSource(source: string): ResolvedAssetSource {\n return {\n __packager_asset: true,\n width: this.asset.width ?? undefined,\n height: this.asset.height ?? undefined,\n uri: source,\n scale: AssetSourceResolver.pickScale(this.asset.scales, PixelRatio.get()),\n };\n }\n\n static pickScale(scales: number[], deviceScale: number): number {\n for (let i = 0; i < scales.length; i++) {\n if (scales[i] >= deviceScale) {\n return scales[i];\n }\n }\n return scales[scales.length - 1] || 1;\n }\n}\n","export const IS_ENV_WITH_UPDATES_ENABLED = false;\n\n// Compute manifest base URL if available\nexport const manifestBaseUrl = null;\n\nexport function getManifest() {\n return {};\n}\n\nexport function getManifest2() {\n return {};\n}\n","import type { PackagerAsset } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\nimport { PixelRatio, NativeModules } from 'react-native';\n\nimport AssetSourceResolver from './AssetSourceResolver';\nimport { getManifest2, manifestBaseUrl } from './PlatformUtils';\n\n// @docsMissing\nexport type AssetMetadata = Pick<\n PackagerAsset,\n 'httpServerLocation' | 'name' | 'hash' | 'type' | 'scales' | 'width' | 'height'\n> & {\n uri?: string;\n fileHashes?: string[];\n fileUris?: string[];\n};\n\nexport type AssetSource = {\n uri: string;\n hash: string;\n};\n\n/**\n * Selects the best file for the given asset (ex: choosing the best scale for images) and returns\n * a { uri, hash } pair for the specific asset file.\n *\n * If the asset isn't an image with multiple scales, the first file is selected.\n */\nexport function selectAssetSource(meta: AssetMetadata): AssetSource {\n // This logic is based on that of AssetSourceResolver, with additional support for file hashes and\n // explicitly provided URIs\n const scale = AssetSourceResolver.pickScale(meta.scales, PixelRatio.get());\n const index = meta.scales.findIndex((s) => s === scale);\n const hash = meta.fileHashes ? meta.fileHashes[index] ?? meta.fileHashes[0] : meta.hash;\n\n // Allow asset processors to directly provide the URL to load\n const uri = meta.fileUris ? meta.fileUris[index] ?? meta.fileUris[0] : meta.uri;\n if (uri) {\n return { uri: resolveUri(uri), hash };\n }\n\n const fileScale = scale === 1 ? '' : `@${scale}x`;\n const fileExtension = meta.type ? `.${encodeURIComponent(meta.type)}` : '';\n const suffix = `/${encodeURIComponent(meta.name)}${fileScale}${fileExtension}`;\n const params = new URLSearchParams({\n platform: Platform.OS,\n hash: meta.hash,\n });\n\n // For assets with a specified absolute URL, we use the existing origin instead of prepending the\n // development server or production CDN URL origin\n if (/^https?:\\/\\//.test(meta.httpServerLocation)) {\n const uri = meta.httpServerLocation + suffix + '?' + params;\n return { uri, hash };\n }\n\n // For assets during development using manifest2, we use the development server's URL origin\n const manifest2 = getManifest2();\n\n const devServerUrl = manifest2?.extra?.expoGo?.developer\n ? 'http://' + manifest2.extra.expoGo.debuggerHost\n : null;\n if (devServerUrl) {\n const baseUrl = new URL(meta.httpServerLocation + suffix, devServerUrl);\n\n baseUrl.searchParams.set('platform', Platform.OS);\n baseUrl.searchParams.set('hash', meta.hash);\n return {\n uri: baseUrl.href,\n hash,\n };\n }\n\n // Temporary fallback for loading assets in Expo Go home\n if (NativeModules.ExponentKernel) {\n return { uri: `https://classic-assets.eascdn.net/~assets/${encodeURIComponent(hash)}`, hash };\n }\n\n // In correctly configured apps, we arrive here if the asset is locally available on disk due to\n // being managed by expo-updates, and `getLocalAssetUri(hash)` must return a local URI for this\n // hash. Since the asset is local, we don't have a remote URL and specify an invalid URL (an empty\n // string) as a placeholder.\n return { uri: '', hash };\n}\n\n/**\n * Resolves the given URI to an absolute URI. If the given URI is already an absolute URI, it is\n * simply returned. Otherwise, if it is a relative URI, it is resolved relative to the manifest's\n * base URI.\n */\nexport function resolveUri(uri: string): string {\n // `manifestBaseUrl` is always an absolute URL or `null`.\n return manifestBaseUrl ? new URL(uri, manifestBaseUrl).href : uri;\n}\n\n// A very cheap path canonicalization like path.join but without depending on a `path` polyfill.\nexport function pathJoin(...paths: string[]): string {\n // Start by simply combining paths, without worrying about \"..\" or \".\"\n const combined = paths\n .map((part, index) => {\n if (index === 0) {\n return part.trim().replace(/\\/*$/, '');\n }\n return part.trim().replace(/(^\\/*|\\/*$)/g, '');\n })\n .filter((part) => part.length > 0)\n .join('/')\n .split('/');\n\n // Handle \"..\" and \".\" in paths\n const resolved: string[] = [];\n for (const part of combined) {\n if (part === '..') {\n resolved.pop(); // Remove the last element from the result\n } else if (part !== '.') {\n resolved.push(part);\n }\n }\n\n return resolved.join('/');\n}\n","export function getFilename(url: string): string {\n const { pathname, searchParams } = new URL(url, 'https://e');\n\n // When attached to a dev server, we use `unstable_path` to represent the file path. This ensures\n // the file name is not canonicalized by the browser.\n // NOTE(EvanBacon): This is technically not tied to `__DEV__` as it's possible to use this while bundling in production\n // mode.\n if (__DEV__) {\n if (searchParams.has('unstable_path')) {\n const encodedFilePath = decodeURIComponent(searchParams.get('unstable_path')!);\n return getBasename(encodedFilePath);\n }\n }\n\n return getBasename(pathname);\n}\n\nfunction getBasename(pathname: string): string {\n return pathname.substring(pathname.lastIndexOf('/') + 1);\n}\n\nexport function getFileExtension(url: string): string {\n const filename = getFilename(url);\n const dotIndex = filename.lastIndexOf('.');\n // Ignore leading dots for hidden files\n return dotIndex > 0 ? filename.substring(dotIndex) : '';\n}\n\n/**\n * Returns the base URL from a manifest's URL. For example, given a manifest hosted at\n * https://example.com/app/manifest.json, the base URL would be https://example.com/app/. Query\n * parameters and fragments also are removed.\n *\n * For an Expo-hosted project with a manifest hosted at https://exp.host/@user/project/index.exp, the\n * base URL would be https://exp.host/@user/project.\n *\n * We also normalize the \"exp\" protocol to \"http\" to handle internal URLs with the Expo schemes used\n * to tell the OS to open the URLs in the the Expo client.\n */\nexport function getManifestBaseUrl(manifestUrl: string): string {\n const urlObject = new URL(manifestUrl);\n\n let nextProtocol = urlObject.protocol;\n // Change the scheme to http(s) if it is exp(s)\n if (nextProtocol === 'exp:') {\n nextProtocol = 'http:';\n } else if (nextProtocol === 'exps:') {\n nextProtocol = 'https:';\n }\n urlObject.protocol = nextProtocol;\n\n // Trim filename, query parameters, and fragment, if any\n const directory = urlObject.pathname.substring(0, urlObject.pathname.lastIndexOf('/') + 1);\n urlObject.pathname = directory;\n urlObject.search = '';\n urlObject.hash = '';\n\n // The URL spec doesn't allow for changing the protocol to `http` or `https`\n // without a port set so instead, we'll just swap the protocol manually.\n return urlObject.protocol !== nextProtocol\n ? urlObject.href.replace(urlObject.protocol, nextProtocol)\n : urlObject.href;\n}\n","import { getAssetByID } from '@react-native/assets-registry/registry';\n\nimport AssetSourceResolver, { ResolvedAssetSource } from './AssetSourceResolver';\n\nlet _customSourceTransformer: (resolver: AssetSourceResolver) => ResolvedAssetSource;\n\nexport function setCustomSourceTransformer(\n transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource\n): void {\n _customSourceTransformer = transformer;\n}\n\n/**\n * `source` is either a number (opaque type returned by require('./foo.png'))\n * or an `ImageSource` like { uri: '' }\n */\nexport default function resolveAssetSource(source: any): ResolvedAssetSource | null {\n if (typeof source === 'object') {\n return source;\n }\n\n const asset = getAssetByID(source);\n if (!asset) {\n return null;\n }\n\n const resolver = new AssetSourceResolver(\n // Doesn't matter since this is removed on web\n 'https://expo.dev',\n null,\n asset\n );\n if (_customSourceTransformer) {\n return _customSourceTransformer(resolver);\n }\n return resolver.defaultAsset();\n}\n\nObject.defineProperty(resolveAssetSource, 'setCustomSourceTransformer', {\n get() {\n return setCustomSourceTransformer;\n },\n});\n\nexport const { pickScale } = AssetSourceResolver;\n","import { getAssetByID } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\n\nimport { AssetMetadata, selectAssetSource } from './AssetSources';\nimport * as AssetUris from './AssetUris';\nimport { downloadAsync } from './ExpoAsset';\nimport * as ImageAssets from './ImageAssets';\nimport { getLocalAssetUri } from './LocalAssets';\nimport { IS_ENV_WITH_LOCAL_ASSETS } from './PlatformUtils';\nimport resolveAssetSource from './resolveAssetSource';\n\n// @docsMissing\nexport type AssetDescriptor = {\n name: string;\n type: string;\n hash?: string | null;\n uri: string;\n width?: number | null;\n height?: number | null;\n};\n\ntype DownloadPromiseCallbacks = {\n resolve: () => void;\n reject: (error: Error) => void;\n};\n\nexport { AssetMetadata };\n\n/**\n * The `Asset` class represents an asset in your app. It gives metadata about the asset (such as its\n * name and type) and provides facilities to load the asset data.\n */\nexport class Asset {\n private static byHash = {};\n private static byUri = {};\n\n /**\n * The name of the asset file without the extension. Also without the part from `@` onward in the\n * filename (used to specify scale factor for images).\n */\n public name: string;\n /**\n * The extension of the asset filename.\n */\n public readonly type: string;\n /**\n * The MD5 hash of the asset's data.\n */\n public readonly hash: string | null = null;\n /**\n * A URI that points to the asset's data on the remote server. When running the published version\n * of your app, this refers to the location on Expo's asset server where Expo has stored your\n * asset. When running the app from Expo CLI during development, this URI points to Expo CLI's\n * server running on your computer and the asset is served directly from your computer. If you\n * are not using Classic Updates (legacy), this field should be ignored as we ensure your assets\n * are on device before before running your application logic.\n */\n public readonly uri: string;\n /**\n * If the asset has been downloaded (by calling [`downloadAsync()`](#downloadasync)), the\n * `file://` URI pointing to the local file on the device that contains the asset data.\n */\n public localUri: string | null = null;\n /**\n * If the asset is an image, the width of the image data divided by the scale factor. The scale\n * factor is the number after `@` in the filename, or `1` if not present.\n */\n public width: number | null = null;\n /**\n * If the asset is an image, the height of the image data divided by the scale factor. The scale factor is the number after `@` in the filename, or `1` if not present.\n */\n public height: number | null = null;\n\n private downloading: boolean = false;\n\n /**\n * Whether the asset has finished downloading from a call to [`downloadAsync()`](#downloadasync).\n */\n public downloaded: boolean = false;\n\n private _downloadCallbacks: DownloadPromiseCallbacks[] = [];\n\n constructor({ name, type, hash = null, uri, width, height }: AssetDescriptor) {\n this.name = name;\n this.type = type;\n this.hash = hash;\n this.uri = uri;\n\n if (typeof width === 'number') {\n this.width = width;\n }\n if (typeof height === 'number') {\n this.height = height;\n }\n\n if (hash) {\n this.localUri = getLocalAssetUri(hash, type);\n if (this.localUri) {\n this.downloaded = true;\n }\n }\n\n if (Platform.OS === 'web') {\n if (!name) {\n this.name = AssetUris.getFilename(uri);\n }\n if (!type) {\n this.type = AssetUris.getFileExtension(uri);\n }\n }\n }\n\n // @needsAudit\n /**\n * A helper that wraps `Asset.fromModule(module).downloadAsync` for convenience.\n * @param moduleId An array of `require('path/to/file')` or external network URLs. Can also be\n * just one module or URL without an Array.\n * @return Returns a Promise that fulfills with an array of `Asset`s when the asset(s) has been\n * saved to disk.\n * @example\n * ```ts\n * const [{ localUri }] = await Asset.loadAsync(require('./assets/snack-icon.png'));\n * ```\n */\n static loadAsync(moduleId: number | number[] | string | string[]): Promise {\n const moduleIds = Array.isArray(moduleId) ? moduleId : [moduleId];\n return Promise.all(moduleIds.map((moduleId) => Asset.fromModule(moduleId).downloadAsync()));\n }\n\n // @needsAudit\n /**\n * Returns the [`Asset`](#asset) instance representing an asset given its module or URL.\n * @param virtualAssetModule The value of `require('path/to/file')` for the asset or external\n * network URL\n * @return The [`Asset`](#asset) instance for the asset.\n */\n static fromModule(virtualAssetModule: number | string): Asset {\n if (typeof virtualAssetModule === 'string') {\n return Asset.fromURI(virtualAssetModule);\n }\n\n const meta = getAssetByID(virtualAssetModule);\n if (!meta) {\n throw new Error(`Module \"${virtualAssetModule}\" is missing from the asset registry`);\n }\n\n // Outside of the managed env we need the moduleId to initialize the asset\n // because resolveAssetSource depends on it\n if (!IS_ENV_WITH_LOCAL_ASSETS) {\n // null-check is performed above with `getAssetByID`.\n const { uri } = resolveAssetSource(virtualAssetModule)!;\n\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash: meta.hash,\n uri,\n width: meta.width,\n height: meta.height,\n });\n\n // For images backward compatibility,\n // keeps localUri the same as uri for React Native's Image that\n // works fine with drawable resource names.\n if (Platform.OS === 'android' && !uri.includes(':') && (meta.width || meta.height)) {\n asset.localUri = asset.uri;\n asset.downloaded = true;\n }\n\n Asset.byHash[meta.hash] = asset;\n return asset;\n }\n\n return Asset.fromMetadata(meta);\n }\n\n // @docsMissing\n static fromMetadata(meta: AssetMetadata): Asset {\n // The hash of the whole asset, not to be confused with the hash of a specific file returned\n // from `selectAssetSource`\n const metaHash = meta.hash;\n if (Asset.byHash[metaHash]) {\n return Asset.byHash[metaHash];\n }\n\n const { uri, hash } = selectAssetSource(meta);\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash,\n uri,\n width: meta.width,\n height: meta.height,\n });\n Asset.byHash[metaHash] = asset;\n return asset;\n }\n\n // @docsMissing\n static fromURI(uri: string): Asset {\n if (Asset.byUri[uri]) {\n return Asset.byUri[uri];\n }\n\n // Possibly a Base64-encoded URI\n let type = '';\n if (uri.indexOf(';base64') > -1) {\n type = uri.split(';')[0].split('/')[1];\n } else {\n const extension = AssetUris.getFileExtension(uri);\n type = extension.startsWith('.') ? extension.substring(1) : extension;\n }\n\n const asset = new Asset({\n name: '',\n type,\n hash: null,\n uri,\n });\n\n Asset.byUri[uri] = asset;\n\n return asset;\n }\n\n // @needsAudit\n /**\n * Downloads the asset data to a local file in the device's cache directory. Once the returned\n * promise is fulfilled without error, the [`localUri`](#localuri) field of this asset points\n * to a local file containing the asset data. The asset is only downloaded if an up-to-date local\n * file for the asset isn't already present due to an earlier download. The downloaded `Asset`\n * will be returned when the promise is resolved.\n * @return Returns a Promise which fulfills with an `Asset` instance.\n */\n async downloadAsync(): Promise {\n if (this.downloaded) {\n return this;\n }\n if (this.downloading) {\n await new Promise((resolve, reject) => {\n this._downloadCallbacks.push({ resolve, reject });\n });\n return this;\n }\n this.downloading = true;\n\n try {\n if (Platform.OS === 'web') {\n if (ImageAssets.isImageType(this.type)) {\n const { width, height, name } = await ImageAssets.getImageInfoAsync(this.uri);\n this.width = width;\n this.height = height;\n this.name = name;\n } else {\n this.name = AssetUris.getFilename(this.uri);\n }\n }\n this.localUri = await downloadAsync(this.uri, this.hash, this.type);\n\n this.downloaded = true;\n this._downloadCallbacks.forEach(({ resolve }) => resolve());\n } catch (e) {\n this._downloadCallbacks.forEach(({ reject }) => reject(e));\n throw e;\n } finally {\n this.downloading = false;\n this._downloadCallbacks = [];\n }\n return this;\n }\n}\n","export function getLocalAssetUri(hash: string, type: string | null): string | null {\n // noop on web\n return null;\n}\n","/* eslint-env browser */\nimport { Platform } from 'expo-modules-core';\n\nimport { getFilename } from './AssetUris';\n\ntype ImageInfo = {\n name: string;\n width: number;\n height: number;\n};\n\nexport function isImageType(type: string): boolean {\n return /^(jpeg|jpg|gif|png|bmp|webp|heic)$/i.test(type);\n}\n\nexport function getImageInfoAsync(url: string): Promise {\n if (!Platform.isDOMAvailable) {\n return Promise.resolve({ name: getFilename(url), width: 0, height: 0 });\n }\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onerror = reject;\n img.onload = () => {\n resolve({\n name: getFilename(url),\n width: img.naturalWidth,\n height: img.naturalHeight,\n });\n };\n img.src = url;\n });\n}\n","export async function downloadAsync(\n url: string,\n _hash: string | null,\n _type: string\n): Promise {\n return url;\n}\n","import invariant from 'invariant';\nimport { NativeEventEmitter, Platform } from 'react-native';\n\nconst nativeEmitterSubscriptionKey = '@@nativeEmitterSubscription@@';\n\ntype NativeModule = {\n __expo_module_name__?: string;\n startObserving?: () => void;\n stopObserving?: () => void;\n\n // Erase these types as they would conflict with the new NativeModule type.\n // This EventEmitter is deprecated anyway.\n addListener?: any;\n removeListeners?: any;\n};\n\n// @needsAudit\nexport type Subscription = {\n /**\n * A method to unsubscribe the listener.\n */\n remove: () => void;\n};\n\nexport class EventEmitter {\n _listenerCount = 0;\n\n // @ts-expect-error\n _nativeModule: NativeModule;\n\n // @ts-expect-error\n _eventEmitter: NativeEventEmitter;\n\n constructor(nativeModule: NativeModule) {\n // If the native module is a new module, just return it back as it's already an event emitter.\n // This is for backwards compatibility until we stop using this legacy class in other packages.\n if (nativeModule.__expo_module_name__) {\n // @ts-expect-error\n return nativeModule;\n }\n this._nativeModule = nativeModule;\n this._eventEmitter = new NativeEventEmitter(nativeModule as any);\n }\n\n addListener(eventName: string, listener: (event: T) => void): Subscription {\n if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.startObserving) {\n this._nativeModule.startObserving();\n }\n\n this._listenerCount++;\n const nativeEmitterSubscription = this._eventEmitter.addListener(eventName, listener);\n const subscription = {\n [nativeEmitterSubscriptionKey]: nativeEmitterSubscription,\n remove: () => {\n this.removeSubscription(subscription);\n },\n };\n return subscription;\n }\n\n removeAllListeners(eventName: string): void {\n // @ts-ignore: the EventEmitter interface has been changed in react-native@0.64.0\n const removedListenerCount = this._eventEmitter.listenerCount\n ? // @ts-ignore: this is available since 0.64\n this._eventEmitter.listenerCount(eventName)\n : // @ts-ignore: this is available in older versions\n this._eventEmitter.listeners(eventName).length;\n this._eventEmitter.removeAllListeners(eventName);\n this._listenerCount -= removedListenerCount;\n invariant(\n this._listenerCount >= 0,\n `EventEmitter must have a non-negative number of listeners`\n );\n\n if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.stopObserving) {\n this._nativeModule.stopObserving();\n }\n }\n\n removeSubscription(subscription: Subscription): void {\n const nativeEmitterSubscription = subscription[nativeEmitterSubscriptionKey];\n if (!nativeEmitterSubscription) {\n return;\n }\n\n if ('remove' in nativeEmitterSubscription) {\n nativeEmitterSubscription.remove();\n }\n this._listenerCount--;\n\n // Ensure that the emitter's internal state remains correct even if `removeSubscription` is\n // called again with the same subscription\n delete subscription[nativeEmitterSubscriptionKey];\n\n // Release closed-over references to the emitter\n subscription.remove = () => {};\n\n if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.stopObserving) {\n this._nativeModule.stopObserving();\n }\n }\n\n emit(eventName: string, ...params: any[]): void {\n this._eventEmitter.emit(eventName, ...params);\n }\n}\n","import type { RecordingOptions } from './Recording.types';\n\n// @docsMissing\nexport enum AndroidOutputFormat {\n DEFAULT = 0,\n THREE_GPP = 1,\n MPEG_4 = 2,\n AMR_NB = 3,\n AMR_WB = 4,\n AAC_ADIF = 5,\n AAC_ADTS = 6,\n RTP_AVP = 7,\n MPEG2TS = 8,\n WEBM = 9,\n}\n\n// @docsMissing\nexport enum AndroidAudioEncoder {\n DEFAULT = 0,\n AMR_NB = 1,\n AMR_WB = 2,\n AAC = 3,\n HE_AAC = 4,\n AAC_ELD = 5,\n}\n\n// @docsMissing\n/**\n * > **Note** Not all of the iOS formats included in this list of constants are currently supported by iOS,\n * > in spite of appearing in the Apple source code. For an accurate list of formats supported by iOS, see\n * > [Core Audio Codecs](https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioEssentials/CoreAudioEssentials.html)\n * > and [iPhone Audio File Formats](https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioEssentials/CoreAudioEssentials.html).\n */\nexport enum IOSOutputFormat {\n LINEARPCM = 'lpcm',\n AC3 = 'ac-3',\n '60958AC3' = 'cac3',\n APPLEIMA4 = 'ima4',\n MPEG4AAC = 'aac ',\n MPEG4CELP = 'celp',\n MPEG4HVXC = 'hvxc',\n MPEG4TWINVQ = 'twvq',\n MACE3 = 'MAC3',\n MACE6 = 'MAC6',\n ULAW = 'ulaw',\n ALAW = 'alaw',\n QDESIGN = 'QDMC',\n QDESIGN2 = 'QDM2',\n QUALCOMM = 'Qclp',\n MPEGLAYER1 = '.mp1',\n MPEGLAYER2 = '.mp2',\n MPEGLAYER3 = '.mp3',\n APPLELOSSLESS = 'alac',\n MPEG4AAC_HE = 'aach',\n MPEG4AAC_LD = 'aacl',\n MPEG4AAC_ELD = 'aace',\n MPEG4AAC_ELD_SBR = 'aacf',\n MPEG4AAC_ELD_V2 = 'aacg',\n MPEG4AAC_HE_V2 = 'aacp',\n MPEG4AAC_SPATIAL = 'aacs',\n AMR = 'samr',\n AMR_WB = 'sawb',\n AUDIBLE = 'AUDB',\n ILBC = 'ilbc',\n DVIINTELIMA = 0x6d730011,\n MICROSOFTGSM = 0x6d730031,\n AES3 = 'aes3',\n ENHANCEDAC3 = 'ec-3',\n}\n\n// @docsMissing\nexport enum IOSAudioQuality {\n MIN = 0,\n LOW = 0x20,\n MEDIUM = 0x40,\n HIGH = 0x60,\n MAX = 0x7f,\n}\n\n// @docsMissing\nexport enum IOSBitRateStrategy {\n CONSTANT = 0,\n LONG_TERM_AVERAGE = 1,\n VARIABLE_CONSTRAINED = 2,\n VARIABLE = 3,\n}\n\n// TODO : maybe make presets for music and speech, or lossy / lossless.\n\nconst HIGH_QUALITY: RecordingOptions = {\n isMeteringEnabled: true,\n android: {\n extension: '.m4a',\n outputFormat: AndroidOutputFormat.MPEG_4,\n audioEncoder: AndroidAudioEncoder.AAC,\n sampleRate: 44100,\n numberOfChannels: 2,\n bitRate: 128000,\n },\n ios: {\n extension: '.m4a',\n outputFormat: IOSOutputFormat.MPEG4AAC,\n audioQuality: IOSAudioQuality.MAX,\n sampleRate: 44100,\n numberOfChannels: 2,\n bitRate: 128000,\n linearPCMBitDepth: 16,\n linearPCMIsBigEndian: false,\n linearPCMIsFloat: false,\n },\n web: {\n mimeType: 'audio/webm',\n bitsPerSecond: 128000,\n },\n};\n\nconst LOW_QUALITY: RecordingOptions = {\n isMeteringEnabled: true,\n android: {\n extension: '.3gp',\n outputFormat: AndroidOutputFormat.THREE_GPP,\n audioEncoder: AndroidAudioEncoder.AMR_NB,\n sampleRate: 44100,\n numberOfChannels: 2,\n bitRate: 128000,\n },\n ios: {\n extension: '.m4a',\n audioQuality: IOSAudioQuality.MIN,\n outputFormat: IOSOutputFormat.MPEG4AAC,\n sampleRate: 44100,\n numberOfChannels: 2,\n bitRate: 64000,\n linearPCMBitDepth: 16,\n linearPCMIsBigEndian: false,\n linearPCMIsFloat: false,\n },\n web: {\n mimeType: 'audio/webm',\n bitsPerSecond: 128000,\n },\n};\n\n/**\n * Constant which contains definitions of the two preset examples of `RecordingOptions`, as implemented in the Audio SDK.\n *\n * # `HIGH_QUALITY`\n * ```ts\n * RecordingOptionsPresets.HIGH_QUALITY = {\n * isMeteringEnabled: true,\n * android: {\n * extension: '.m4a',\n * outputFormat: AndroidOutputFormat.MPEG_4,\n * audioEncoder: AndroidAudioEncoder.AAC,\n * sampleRate: 44100,\n * numberOfChannels: 2,\n * bitRate: 128000,\n * },\n * ios: {\n * extension: '.m4a',\n * outputFormat: IOSOutputFormat.MPEG4AAC,\n * audioQuality: IOSAudioQuality.MAX,\n * sampleRate: 44100,\n * numberOfChannels: 2,\n * bitRate: 128000,\n * linearPCMBitDepth: 16,\n * linearPCMIsBigEndian: false,\n * linearPCMIsFloat: false,\n * },\n * web: {\n * mimeType: 'audio/webm',\n * bitsPerSecond: 128000,\n * },\n * };\n * ```\n *\n * # `LOW_QUALITY`\n * ```ts\n * RecordingOptionsPresets.LOW_QUALITY = {\n * isMeteringEnabled: true,\n * android: {\n * extension: '.3gp',\n * outputFormat: AndroidOutputFormat.THREE_GPP,\n * audioEncoder: AndroidAudioEncoder.AMR_NB,\n * sampleRate: 44100,\n * numberOfChannels: 2,\n * bitRate: 128000,\n * },\n * ios: {\n * extension: '.caf',\n * audioQuality: IOSAudioQuality.MIN,\n * sampleRate: 44100,\n * numberOfChannels: 2,\n * bitRate: 128000,\n * linearPCMBitDepth: 16,\n * linearPCMIsBigEndian: false,\n * linearPCMIsFloat: false,\n * },\n * web: {\n * mimeType: 'audio/webm',\n * bitsPerSecond: 128000,\n * },\n * };\n * ```\n */\nexport const RecordingOptionsPresets: Record = {\n HIGH_QUALITY,\n LOW_QUALITY,\n};\n","import { DeviceEventEmitter, PermissionResponse, PermissionStatus } from 'expo-modules-core';\n\nimport type { AVPlaybackNativeSource, AVPlaybackStatus, AVPlaybackStatusToSet } from './AV.types';\nimport type { RecordingStatus } from './Audio/Recording.types';\nimport { RecordingOptionsPresets } from './Audio/RecordingConstants';\n\nasync function getPermissionWithQueryAsync(\n name: PermissionNameWithAdditionalValues\n): Promise {\n if (!navigator || !navigator.permissions || !navigator.permissions.query) return null;\n\n try {\n const { state } = await navigator.permissions.query({ name });\n switch (state) {\n case 'granted':\n return PermissionStatus.GRANTED;\n case 'denied':\n return PermissionStatus.DENIED;\n default:\n return PermissionStatus.UNDETERMINED;\n }\n } catch {\n // Firefox - TypeError: 'microphone' (value of 'name' member of PermissionDescriptor) is not a valid value for enumeration PermissionName.\n return PermissionStatus.UNDETERMINED;\n }\n}\n\nfunction getUserMedia(constraints: MediaStreamConstraints): Promise {\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n return navigator.mediaDevices.getUserMedia(constraints);\n }\n\n // Some browsers partially implement mediaDevices. We can't just assign an object\n // with getUserMedia as it would overwrite existing properties.\n // Here, we will just add the getUserMedia property if it's missing.\n\n // First get ahold of the legacy getUserMedia, if present\n const getUserMedia =\n // TODO: this method is deprecated, migrate to https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n function () {\n const error: any = new Error('Permission unimplemented');\n error.code = 0;\n error.name = 'NotAllowedError';\n throw error;\n };\n\n return new Promise((resolve, reject) => {\n getUserMedia.call(navigator, constraints, resolve, reject);\n });\n}\n\nfunction getStatusFromMedia(media?: HTMLMediaElement): AVPlaybackStatus {\n if (!media) {\n return {\n isLoaded: false,\n error: undefined,\n };\n }\n\n const isPlaying = !!(\n media.currentTime > 0 &&\n !media.paused &&\n !media.ended &&\n media.readyState > 2\n );\n\n const status: AVPlaybackStatus = {\n isLoaded: true,\n uri: media.src,\n progressUpdateIntervalMillis: 100, //TODO: Bacon: Add interval between calls\n durationMillis: media.duration * 1000,\n positionMillis: media.currentTime * 1000,\n // playableDurationMillis: media.buffered * 1000,\n // seekMillisToleranceBefore?: number\n // seekMillisToleranceAfter?: number\n shouldPlay: media.autoplay,\n isPlaying,\n isBuffering: false, //media.waiting,\n rate: media.playbackRate,\n // TODO: Bacon: This seems too complicated right now: https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-frequency\n shouldCorrectPitch: false,\n volume: media.volume,\n audioPan: 0,\n isMuted: media.muted,\n isLooping: media.loop,\n didJustFinish: media.ended,\n };\n\n return status;\n}\n\nasync function setStatusForMedia(\n media: HTMLMediaElement,\n status: AVPlaybackStatusToSet\n): Promise {\n if (status.positionMillis !== undefined) {\n media.currentTime = status.positionMillis / 1000;\n }\n // if (status.progressUpdateIntervalMillis !== undefined) {\n // media.progressUpdateIntervalMillis = status.progressUpdateIntervalMillis;\n // }\n // if (status.seekMillisToleranceBefore !== undefined) {\n // media.seekMillisToleranceBefore = status.seekMillisToleranceBefore;\n // }\n // if (status.seekMillisToleranceAfter !== undefined) {\n // media.seekMillisToleranceAfter = status.seekMillisToleranceAfter;\n // }\n // if (status.shouldCorrectPitch !== undefined) {\n // media.shouldCorrectPitch = status.shouldCorrectPitch;\n // }\n if (status.shouldPlay !== undefined) {\n if (status.shouldPlay) {\n await media.play();\n } else {\n await media.pause();\n }\n }\n if (status.rate !== undefined) {\n media.playbackRate = status.rate;\n }\n if (status.shouldCorrectPitch !== undefined) {\n media.preservesPitch = status.shouldCorrectPitch;\n }\n if (status.volume !== undefined) {\n media.volume = status.volume;\n }\n if (status.isMuted !== undefined) {\n media.muted = status.isMuted;\n }\n if (status.isLooping !== undefined) {\n media.loop = status.isLooping;\n }\n\n return getStatusFromMedia(media);\n}\n\nlet mediaRecorder: null | any /*MediaRecorder*/ = null;\nlet mediaRecorderUptimeOfLastStartResume: number = 0;\nlet mediaRecorderDurationAlreadyRecorded: number = 0;\nlet mediaRecorderIsRecording: boolean = false;\n\nfunction getAudioRecorderDurationMillis() {\n let duration = mediaRecorderDurationAlreadyRecorded;\n if (mediaRecorderIsRecording && mediaRecorderUptimeOfLastStartResume > 0) {\n duration += Date.now() - mediaRecorderUptimeOfLastStartResume;\n }\n return duration;\n}\n\nexport default {\n async getStatusForVideo(element: HTMLMediaElement): Promise {\n return getStatusFromMedia(element);\n },\n async loadForVideo(\n element: HTMLMediaElement,\n nativeSource: AVPlaybackNativeSource,\n fullInitialStatus: AVPlaybackStatusToSet\n ): Promise {\n return getStatusFromMedia(element);\n },\n async unloadForVideo(element: HTMLMediaElement): Promise {\n return getStatusFromMedia(element);\n },\n async setStatusForVideo(\n element: HTMLMediaElement,\n status: AVPlaybackStatusToSet\n ): Promise {\n return setStatusForMedia(element, status);\n },\n async replayVideo(\n element: HTMLMediaElement,\n status: AVPlaybackStatusToSet\n ): Promise {\n return setStatusForMedia(element, status);\n },\n /* Audio */\n async setAudioMode() {},\n async setAudioIsEnabled() {},\n async getStatusForSound(element: HTMLMediaElement) {\n return getStatusFromMedia(element);\n },\n async loadForSound(\n nativeSource: string | { uri: string; [key: string]: any },\n fullInitialStatus: AVPlaybackStatusToSet\n ): Promise<[HTMLMediaElement, AVPlaybackStatus]> {\n const source = typeof nativeSource === 'string' ? nativeSource : nativeSource.uri;\n const media = new Audio(source);\n\n media.ontimeupdate = () => {\n DeviceEventEmitter.emit('didUpdatePlaybackStatus', {\n key: media,\n status: getStatusFromMedia(media),\n });\n };\n\n media.onerror = () => {\n DeviceEventEmitter.emit('ExponentAV.onError', {\n key: media,\n error: media.error!.message,\n });\n };\n\n const status = await setStatusForMedia(media, fullInitialStatus);\n\n return [media, status];\n },\n async unloadForSound(element: HTMLMediaElement) {\n element.pause();\n element.removeAttribute('src');\n element.load();\n return getStatusFromMedia(element);\n },\n async setStatusForSound(\n element: HTMLMediaElement,\n status: AVPlaybackStatusToSet\n ): Promise {\n return setStatusForMedia(element, status);\n },\n async replaySound(\n element: HTMLMediaElement,\n status: AVPlaybackStatusToSet\n ): Promise {\n return setStatusForMedia(element, status);\n },\n\n /* Recording */\n // async setUnloadedCallbackForAndroidRecording() {},\n async getAudioRecordingStatus(): Promise {\n return {\n canRecord: mediaRecorder?.state === 'recording' || mediaRecorder?.state === 'inactive',\n isRecording: mediaRecorder?.state === 'recording',\n isDoneRecording: false,\n durationMillis: getAudioRecorderDurationMillis(),\n uri: null,\n };\n },\n async prepareAudioRecorder(options): Promise<{\n uri: string | null;\n // status is of type RecordingStatus, but without the canRecord field populated\n status: Pick>;\n }> {\n if (typeof navigator !== 'undefined' && !navigator.mediaDevices) {\n throw new Error('No media devices available');\n }\n\n mediaRecorderUptimeOfLastStartResume = 0;\n mediaRecorderDurationAlreadyRecorded = 0;\n\n const stream = await getUserMedia({ audio: true });\n\n mediaRecorder = new (window as any).MediaRecorder(\n stream,\n options?.web || RecordingOptionsPresets.HIGH_QUALITY.web\n );\n\n mediaRecorder.addEventListener('pause', () => {\n mediaRecorderDurationAlreadyRecorded = getAudioRecorderDurationMillis();\n mediaRecorderIsRecording = false;\n });\n\n mediaRecorder.addEventListener('resume', () => {\n mediaRecorderUptimeOfLastStartResume = Date.now();\n mediaRecorderIsRecording = true;\n });\n\n mediaRecorder.addEventListener('start', () => {\n mediaRecorderUptimeOfLastStartResume = Date.now();\n mediaRecorderDurationAlreadyRecorded = 0;\n mediaRecorderIsRecording = true;\n });\n\n mediaRecorder.addEventListener('stop', () => {\n mediaRecorderDurationAlreadyRecorded = getAudioRecorderDurationMillis();\n mediaRecorderIsRecording = false;\n\n // Clears recording icon in Chrome tab\n stream.getTracks().forEach((track) => track.stop());\n });\n\n const { uri, ...status } = await this.getAudioRecordingStatus();\n\n return { uri: null, status };\n },\n async startAudioRecording(): Promise {\n if (mediaRecorder === null) {\n throw new Error(\n 'Cannot start an audio recording without initializing a MediaRecorder. Run prepareToRecordAsync() before attempting to start an audio recording.'\n );\n }\n\n if (mediaRecorder.state === 'paused') {\n mediaRecorder.resume();\n } else {\n mediaRecorder.start();\n }\n\n return this.getAudioRecordingStatus();\n },\n async pauseAudioRecording(): Promise {\n if (mediaRecorder === null) {\n throw new Error(\n 'Cannot start an audio recording without initializing a MediaRecorder. Run prepareToRecordAsync() before attempting to start an audio recording.'\n );\n }\n\n // Set status to paused\n mediaRecorder.pause();\n\n return this.getAudioRecordingStatus();\n },\n async stopAudioRecording(): Promise {\n if (mediaRecorder === null) {\n throw new Error(\n 'Cannot start an audio recording without initializing a MediaRecorder. Run prepareToRecordAsync() before attempting to start an audio recording.'\n );\n }\n\n if (mediaRecorder.state === 'inactive') {\n return this.getAudioRecordingStatus();\n }\n\n const dataPromise = new Promise((resolve) =>\n mediaRecorder.addEventListener('dataavailable', (e) => resolve(e.data))\n );\n\n mediaRecorder.stop();\n\n const data = await dataPromise;\n const url = URL.createObjectURL(data);\n\n return {\n ...(await this.getAudioRecordingStatus()),\n uri: url,\n };\n },\n async unloadAudioRecorder(): Promise {\n mediaRecorder = null;\n },\n\n async getPermissionsAsync(): Promise {\n const maybeStatus = await getPermissionWithQueryAsync('microphone');\n switch (maybeStatus) {\n case PermissionStatus.GRANTED:\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n canAskAgain: true,\n granted: true,\n };\n case PermissionStatus.DENIED:\n return {\n status: PermissionStatus.DENIED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n default:\n return await this.requestPermissionsAsync();\n }\n },\n async requestPermissionsAsync(): Promise {\n try {\n const stream = await getUserMedia({ audio: true });\n stream.getTracks().forEach((track) => track.stop());\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n canAskAgain: true,\n granted: true,\n };\n } catch {\n return {\n status: PermissionStatus.DENIED,\n expires: 'never',\n canAskAgain: true,\n granted: false,\n };\n }\n },\n};\n","import ExponentAV from '../ExponentAV';\n\nlet _enabled = true;\n\nexport function isAudioEnabled(): boolean {\n return _enabled;\n}\n\nexport function throwIfAudioIsDisabled(): void {\n if (!_enabled) {\n throw new Error('Cannot complete operation because audio is not enabled.');\n }\n}\n\n// @needsAudit\n/**\n * Audio is enabled by default, but if you want to write your own Audio API in a bare workflow app, you might want to disable the Audio API.\n * @param value `true` enables Audio, and `false` disables it.\n * @return A `Promise` that will reject if audio playback could not be enabled for the device.\n */\nexport async function setIsEnabledAsync(value: boolean): Promise {\n _enabled = value;\n await ExponentAV.setAudioIsEnabled(value);\n // TODO : We immediately pause all players when disabled, but we do not resume all shouldPlay\n // players when enabled. Perhaps for completeness we should allow this; the design of the\n // enabling API is for people to enable / disable this audio library, but I think that it should\n // intuitively also double as a global pause/resume.\n}\n","import { Asset } from 'expo-asset';\n\nimport ExponentAV from './ExponentAV';\n\n// @needsAudit\n/**\n * Check [official Apple documentation](https://developer.apple.com/documentation/avfoundation/audio_settings/time_pitch_algorithm_settings) for more information.\n */\nexport enum PitchCorrectionQuality {\n /**\n * Equivalent to `AVAudioTimePitchAlgorithmLowQualityZeroLatency`.\n */\n Low = ExponentAV && ExponentAV.Qualities && ExponentAV.Qualities.Low,\n /**\n * Equivalent to `AVAudioTimePitchAlgorithmTimeDomain`.\n */\n Medium = ExponentAV && ExponentAV.Qualities && ExponentAV.Qualities.Medium,\n /**\n * Equivalent to `AVAudioTimePitchAlgorithmSpectral`.\n */\n High = ExponentAV && ExponentAV.Qualities && ExponentAV.Qualities.High,\n}\n\n// @needsAudit\n/**\n * The following forms of source are supported:\n * - A dictionary of the form `AVPlaybackSourceObject`.\n * The `overrideFileExtensionAndroid` property may come in handy if the player receives an URL like `example.com/play` which redirects to `example.com/player.m3u8`.\n * Setting this property to `m3u8` would allow the Android player to properly infer the content type of the media and use proper media file reader.\n * - `require('path/to/file')` for a media file asset in the source code directory.\n * - An [`Asset`](./asset) object for a media file asset.\n *\n * The [iOS developer documentation](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/OSX_Technology_Overview/MediaLayer/MediaLayer.html)\n * lists the audio and video formats supported on iOS.\n *\n * There are two sets of audio and video formats supported on Android: [formats supported by ExoPlayer](https://exoplayer.dev/supported-formats.html)\n * and [formats supported by Android's MediaPlayer](https://developer.android.com/guide/topics/media/platform/supported-formats#formats-table).\n * Expo uses ExoPlayer implementation by default. To use `MediaPlayer`, add `androidImplementation: 'MediaPlayer'` to the initial status of the AV object.\n */\nexport type AVPlaybackSource = number | AVPlaybackSourceObject | Asset;\n\n// @needsAudit\n/**\n * One of the possible forms of the `AVPlaybackSource`.\n */\nexport type AVPlaybackSourceObject = {\n /**\n * A network URL pointing to a media file.\n */\n uri: string;\n /**\n * An optional string overriding extension inferred from the URL.\n * @platform android\n */\n overrideFileExtensionAndroid?: string;\n /**\n * An optional headers object passed in a network request.\n */\n headers?: Record;\n};\n\n/**\n * @hidden\n */\nexport type AVPlaybackNativeSource = {\n uri: string;\n overridingExtension?: string | null;\n headers?: Record;\n};\n\n// @needsAudit\n/**\n * Object passed to the `onMetadataUpdate` function.\n */\nexport type AVMetadata = {\n /**\n * A string with the title of the sound object.\n */\n title?: string;\n};\n\n// @needsAudit\n/**\n * This is the structure returned from all playback API calls and describes the state of the `playbackObject` at that point in time.\n * It can take a form of `AVPlaybackStatusSuccess` or `AVPlaybackStatusError` based on the `playbackObject` load status.\n */\nexport type AVPlaybackStatus = AVPlaybackStatusError | AVPlaybackStatusSuccess;\n\n// @needsAudit\nexport type AVPlaybackStatusError = {\n /**\n * A boolean set to `false`.\n */\n isLoaded: false;\n /**\n * Underlying implementation to use (when set to `MediaPlayer` it uses [Android's MediaPlayer](https://developer.android.com/reference/android/media/MediaPlayer.html),\n * uses [ExoPlayer](https://exoplayer.dev/) otherwise). You may need to use this property if you're trying to play an item unsupported by ExoPlayer\n * ([formats supported by ExoPlayer](https://exoplayer.dev/supported-formats.html), [formats supported by Android's MediaPlayer](https://developer.android.com/guide/topics/media/platform/supported-formats#formats-table)).\n *\n * Note that setting this property takes effect only when the AV object is just being created (toggling its value later will do nothing).\n *\n * @platform android\n */\n androidImplementation?: string;\n /**\n * A string only present if the `playbackObject` just encountered a fatal error and forced unload.\n * Populated exactly once when an error forces the object to unload.\n */\n error?: string;\n};\n\n// @needsAudit\nexport type AVPlaybackStatusSuccess = {\n /**\n * A boolean set to `true`.\n */\n isLoaded: true;\n /**\n * Underlying implementation to use (when set to `MediaPlayer` it uses [Android's MediaPlayer](https://developer.android.com/reference/android/media/MediaPlayer.html),\n * uses [ExoPlayer](https://exoplayer.dev/) otherwise). You may need to use this property if you're trying to play an item unsupported by ExoPlayer\n * ([formats supported by ExoPlayer](https://exoplayer.dev/supported-formats.html), [formats supported by Android's MediaPlayer](https://developer.android.com/guide/topics/media/platform/supported-formats#formats-table)).\n *\n * Note that setting this property takes effect only when the AV object is just being created (toggling its value later will do nothing).\n *\n * @platform android\n */\n androidImplementation?: string;\n /**\n * The location of the media source.\n */\n uri: string;\n /**\n * The minimum interval in milliseconds between calls of `onPlaybackStatusUpdate`. See `setOnPlaybackStatusUpdate()` for details.\n */\n progressUpdateIntervalMillis: number;\n /**\n * The duration of the media in milliseconds. This is only present if the media has a duration.\n * > Note that in some cases, a media file's duration is readable on Android, but not on iOS.\n */\n durationMillis?: number;\n /**\n * The current position of playback in milliseconds.\n */\n positionMillis: number;\n /**\n * The position until which the media has been buffered into memory. Like `durationMillis`, this is only present in some cases.\n */\n playableDurationMillis?: number;\n // @docsMissing\n seekMillisToleranceBefore?: number;\n // @docsMissing\n seekMillisToleranceAfter?: number;\n /**\n * A boolean describing if the media is supposed to play.\n */\n shouldPlay: boolean;\n /**\n * A boolean describing if the media is currently playing.\n */\n isPlaying: boolean;\n /**\n * A boolean describing if the media is currently buffering.\n */\n isBuffering: boolean;\n /**\n * The current rate of the media.\n */\n rate: number;\n /**\n * A boolean describing if we are correcting the pitch for a changed rate.\n */\n shouldCorrectPitch: boolean;\n /**\n * iOS time pitch algorithm setting. See `setRateAsync` for details.\n */\n pitchCorrectionQuality?: PitchCorrectionQuality;\n /**\n * The current volume of the audio for this media.\n */\n volume: number;\n /**\n * A boolean describing if the audio of this media is currently muted.\n */\n isMuted: boolean;\n /**\n * The current audio panning value of the audio for this media.\n */\n audioPan: number;\n /**\n * A boolean describing if the media is currently looping.\n */\n isLooping: boolean;\n /**\n * A boolean describing if the media just played to completion at the time that this status was received.\n * When the media plays to completion, the function passed in `setOnPlaybackStatusUpdate()` is called exactly once\n * with `didJustFinish` set to `true`. `didJustFinish` is never `true` in any other case.\n */\n didJustFinish: boolean;\n};\n\n// @needsAudit\n/**\n * This is the structure passed to `setStatusAsync()` to modify the state of the `playbackObject`.\n */\nexport type AVPlaybackStatusToSet = {\n /**\n * Underlying implementation to use (when set to `MediaPlayer` it uses [Android's MediaPlayer](https://developer.android.com/reference/android/media/MediaPlayer.html),\n * uses [ExoPlayer](https://exoplayer.dev/) otherwise). You may need to use this property if you're trying to play an item unsupported by ExoPlayer\n * ([formats supported by ExoPlayer](https://exoplayer.dev/supported-formats.html), [formats supported by Android's MediaPlayer](https://developer.android.com/guide/topics/media/platform/supported-formats#formats-table)).\n *\n * Note that setting this property takes effect only when the AV object is just being created (toggling its value later will do nothing).\n *\n * @platform android\n */\n androidImplementation?: string;\n /**\n * The minimum interval in milliseconds between calls of `onPlaybackStatusUpdate`. See `setOnPlaybackStatusUpdate()` for details.\n */\n progressUpdateIntervalMillis?: number;\n /**\n * The current position of playback in milliseconds.\n */\n positionMillis?: number;\n // @docsMissing\n seekMillisToleranceBefore?: number;\n // @docsMissing\n seekMillisToleranceAfter?: number;\n /**\n * A boolean describing if the media is supposed to play.\n */\n shouldPlay?: boolean;\n /**\n * The current rate of the media.\n * @platform android API 23+\n * @platform ios\n */\n rate?: number;\n /**\n * A boolean describing if we are correcting the pitch for a changed rate.\n */\n shouldCorrectPitch?: boolean;\n /**\n * The current volume of the audio for this media.\n * > Note that this only affect the audio of this `playbackObject` and do NOT affect the system volume.\n */\n volume?: number;\n /**\n * A boolean describing if the audio of this media is currently muted.\n * > Note that this only affect the audio of this `playbackObject` and do NOT affect the system volume.\n */\n isMuted?: boolean;\n /**\n * The current audio panning value of the audio for this media.\n * > Note that this only affect the audio of this `playbackObject` and do NOT affect the system volume.\n * > Also note that this is only available when the video was loaded using `androidImplementation: 'MediaPlayer'`\n * @platform android\n */\n audioPan?: number;\n /**\n * A boolean describing if the media is currently looping.\n */\n isLooping?: boolean;\n /**\n * iOS time pitch algorithm setting. See `setRateAsync` for details.\n */\n pitchCorrectionQuality?: PitchCorrectionQuality;\n};\n\n// @docsMissing\nexport type AVPlaybackTolerance = { toleranceMillisBefore?: number; toleranceMillisAfter?: number };\n","import { Asset } from 'expo-asset';\nimport { Platform } from 'expo-modules-core';\n\nimport {\n AVPlaybackSource,\n AVPlaybackNativeSource,\n AVPlaybackStatus,\n AVPlaybackStatusToSet,\n PitchCorrectionQuality,\n AVPlaybackTolerance,\n} from './AV.types';\n\n// TODO add:\n// disableFocusOnAndroid\n// audio routes (at least did become noisy on android)\n// pan\n// pitch\n// API to explicitly request audio focus / session\n// API to select stream type on Android\n// subtitles API\n\n/**\n * @hidden\n */\nexport const _DEFAULT_PROGRESS_UPDATE_INTERVAL_MILLIS: number = 500;\n\n// @needsAudit\n/**\n * The default initial `AVPlaybackStatusToSet` of all `Audio.Sound` objects and `Video` components is as follows:\n *\n * ```javascript\n * {\n * progressUpdateIntervalMillis: 500,\n * positionMillis: 0,\n * shouldPlay: false,\n * rate: 1.0,\n * shouldCorrectPitch: false,\n * volume: 1.0,\n * isMuted: false,\n * isLooping: false,\n * }\n * ```\n *\n * This default initial status can be overwritten by setting the optional `initialStatus` in `loadAsync()` or `Audio.Sound.createAsync()`.\n */\nexport const _DEFAULT_INITIAL_PLAYBACK_STATUS: AVPlaybackStatusToSet = {\n positionMillis: 0,\n progressUpdateIntervalMillis: _DEFAULT_PROGRESS_UPDATE_INTERVAL_MILLIS,\n shouldPlay: false,\n rate: 1.0,\n shouldCorrectPitch: false,\n volume: 1.0,\n audioPan: 0,\n isMuted: false,\n isLooping: false,\n};\n\n// @needsAudit\n/**\n * @hidden\n */\nexport function getNativeSourceFromSource(\n source?: AVPlaybackSource | null\n): AVPlaybackNativeSource | null {\n let uri: string | null = null;\n let overridingExtension: string | null = null;\n let headers: AVPlaybackNativeSource['headers'];\n\n if (typeof source === 'string' && Platform.OS === 'web') {\n return {\n uri: source,\n overridingExtension,\n headers,\n };\n }\n\n const asset: Asset | null = _getAssetFromPlaybackSource(source);\n if (asset != null) {\n uri = asset.localUri || asset.uri;\n } else if (\n source != null &&\n typeof source !== 'number' &&\n 'uri' in source &&\n typeof source.uri === 'string'\n ) {\n uri = source.uri;\n }\n\n if (uri == null) {\n return null;\n }\n\n if (\n source != null &&\n typeof source !== 'number' &&\n 'overrideFileExtensionAndroid' in source &&\n typeof source.overrideFileExtensionAndroid === 'string'\n ) {\n overridingExtension = source.overrideFileExtensionAndroid;\n }\n\n if (\n source != null &&\n typeof source !== 'number' &&\n 'headers' in source &&\n typeof source.headers === 'object'\n ) {\n headers = source.headers;\n }\n return { uri, overridingExtension, headers };\n}\n\nfunction _getAssetFromPlaybackSource(source?: AVPlaybackSource | null): Asset | null {\n if (source == null) {\n return null;\n }\n\n let asset: Asset | null = null;\n if (typeof source === 'number') {\n asset = Asset.fromModule(source);\n } else if (source instanceof Asset) {\n asset = source;\n }\n return asset;\n}\n\n// @needsAudit\n/**\n * @hidden\n */\nexport function assertStatusValuesInBounds(status: AVPlaybackStatusToSet): void {\n if (typeof status.rate === 'number' && (status.rate < 0 || status.rate > 32)) {\n throw new RangeError('Rate value must be between 0.0 and 32.0');\n }\n if (typeof status.volume === 'number' && (status.volume < 0 || status.volume > 1)) {\n throw new RangeError('Volume value must be between 0.0 and 1.0');\n }\n if (typeof status.audioPan === 'number' && (status.audioPan < -1 || status.audioPan > 1)) {\n throw new RangeError('Pan value must be between -1.0 and 1.0');\n }\n}\n\n// @needsAudit\n/**\n * @hidden\n */\nexport async function getNativeSourceAndFullInitialStatusForLoadAsync(\n source: AVPlaybackSource | null,\n initialStatus: AVPlaybackStatusToSet | null,\n downloadFirst: boolean\n): Promise<{\n nativeSource: AVPlaybackNativeSource;\n fullInitialStatus: AVPlaybackStatusToSet;\n}> {\n // Get the full initial status\n const fullInitialStatus: AVPlaybackStatusToSet =\n initialStatus == null\n ? _DEFAULT_INITIAL_PLAYBACK_STATUS\n : {\n ..._DEFAULT_INITIAL_PLAYBACK_STATUS,\n ...initialStatus,\n };\n assertStatusValuesInBounds(fullInitialStatus);\n\n if (typeof source === 'string' && Platform.OS === 'web') {\n return {\n nativeSource: {\n uri: source,\n overridingExtension: null,\n },\n fullInitialStatus,\n };\n }\n\n // Download first if necessary.\n const asset = _getAssetFromPlaybackSource(source);\n if (downloadFirst && asset) {\n // TODO we can download remote uri too once @nikki93 has integrated this into Asset\n await asset.downloadAsync();\n }\n\n // Get the native source\n const nativeSource: AVPlaybackNativeSource | null = getNativeSourceFromSource(source);\n\n if (nativeSource === null) {\n throw new Error(`Cannot load an AV asset from a null playback source`);\n }\n\n // If asset has been downloaded use the localUri\n if (asset && asset.localUri) {\n nativeSource.uri = asset.localUri;\n }\n\n return { nativeSource, fullInitialStatus };\n}\n\n// @needsAudit\n/**\n * @hidden\n */\nexport function getUnloadedStatus(error: string | null = null): AVPlaybackStatus {\n return {\n isLoaded: false,\n ...(error ? { error } : null),\n };\n}\n\n// @needsAudit\nexport interface AV {\n /**\n * Sets a new `AVPlaybackStatusToSet` on the `playbackObject`. This method can only be called if the media has been loaded.\n * @param status The new `AVPlaybackStatusToSet` of the `playbackObject`, whose values will override the current playback status.\n * @return A `Promise` that is fulfilled with the `AVPlaybackStatus` of the `playbackObject` once the new status has been set successfully,\n * or rejects if setting the new status failed. See below for details on `AVPlaybackStatus`.\n */\n setStatusAsync(status: AVPlaybackStatusToSet): Promise;\n\n /**\n * Gets the `AVPlaybackStatus` of the `playbackObject`.\n * @return A `Promise` that is fulfilled with the `AVPlaybackStatus` of the `playbackObject`.\n */\n getStatusAsync(): Promise;\n}\n\n// @needsAudit\n/**\n * On the `playbackObject` reference, the following API is provided.\n */\nexport interface Playback extends AV {\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ shouldPlay: true })`.\n *\n * Playback may not start immediately after calling this function for reasons such as buffering. Make sure to update your UI based\n * on the `isPlaying` and `isBuffering` properties of the `AVPlaybackStatus`.\n */\n playAsync(): Promise;\n\n /**\n * Loads the media from `source` into memory and prepares it for playing. This must be called before calling `setStatusAsync()`\n * or any of the convenience set status methods. This method can only be called if the `playbackObject` is in an unloaded state.\n * @param source The source of the media.\n * @param initialStatus The initial intended `AVPlaybackStatusToSet` of the `playbackObject`, whose values will override the default initial playback status.\n * This value defaults to `{}` if no parameter is passed. For more information see the details on `AVPlaybackStatusToSet` type\n * and the default initial playback status.\n * @param downloadAsync If set to `true`, the system will attempt to download the resource to the device before loading.\n * This value defaults to `true`. Note that at the moment, this will only work for `source`s of the form `require('path/to/file')` or `Asset` objects.\n * @return A `Promise` that is fulfilled with the `AVPlaybackStatus` of the `playbackObject` once it is loaded, or rejects if loading failed.\n * The `Promise` will also reject if the `playbackObject` was already loaded. See below for details on `AVPlaybackStatus`.\n */\n loadAsync(\n source: AVPlaybackSource,\n initialStatus?: AVPlaybackStatusToSet,\n downloadAsync?: boolean\n ): Promise;\n\n /**\n * Unloads the media from memory. `loadAsync()` must be called again in order to be able to play the media.\n * > This cleanup function will be automatically called in the `Video` component's `componentWillUnmount`.\n * @return A `Promise` that is fulfilled with the `AVPlaybackStatus` of the `playbackObject` once it is unloaded, or rejects if unloading failed.\n */\n unloadAsync(): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ shouldPlay: true, positionMillis, seekMillisToleranceAfter: tolerances.seekMillisToleranceAfter, seekMillisToleranceBefore: tolerances.seekMillisToleranceBefore })`.\n *\n * Playback may not start immediately after calling this function for reasons such as buffering. Make sure to update your UI based\n * on the `isPlaying` and `isBuffering` properties of the `AVPlaybackStatus`.\n * @param positionMillis The desired position of playback in milliseconds.\n * @param tolerances The tolerances are used only on iOS ([more details](#what-is-seek-tolerance-and-why-would)).\n */\n playFromPositionAsync(\n positionMillis: number,\n tolerances?: AVPlaybackTolerance\n ): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ shouldPlay: false })`.\n */\n pauseAsync(): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ shouldPlay: false, positionMillis: 0 })`.\n */\n stopAsync(): Promise;\n\n /**\n * Replays the playback item. When using `playFromPositionAsync(0)` the item is seeked to the position at `0 ms`.\n * On iOS this method uses internal implementation of the player and is able to play the item from the beginning immediately.\n * @param status The new `AVPlaybackStatusToSet` of the `playbackObject`, whose values will override the current playback status.\n * `positionMillis` and `shouldPlay` properties will be overridden with respectively `0` and `true`.\n * @return A `Promise` that is fulfilled with the `AVPlaybackStatus` of the `playbackObject` once the new status has been set successfully,\n * or rejects if setting the new status failed.\n */\n replayAsync(status: AVPlaybackStatusToSet): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ positionMillis })`.\n * @param positionMillis The desired position of playback in milliseconds.\n * @param tolerances The tolerances are used only on iOS ([more details](#what-is-seek-tolerance-and-why-would)).\n */\n setPositionAsync(\n positionMillis: number,\n tolerances?: AVPlaybackTolerance\n ): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ rate, shouldCorrectPitch, pitchCorrectionQuality })`.\n * @param rate The desired playback rate of the media. This value must be between `0.0` and `32.0`. Only available on Android API version 23 and later and iOS.\n * @param shouldCorrectPitch A boolean describing if we should correct the pitch for a changed rate. If set to `true`, the pitch of the audio will be corrected\n * (so a rate different than `1.0` will timestretch the audio).\n * @param pitchCorrectionQuality iOS time pitch algorithm setting, defaults to `Audio.PitchCorrectionQuality.Medium`.\n * Using `Audio.PitchCorrectionQuality.Low` may cause automatic playback rate changes on iOS >= 17, as AVAudioTimePitchAlgorithmLowQualityZeroLatency is deprecated.\n */\n setRateAsync(\n rate: number,\n shouldCorrectPitch: boolean,\n pitchCorrectionQuality?: PitchCorrectionQuality\n ): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ volume, audioPan })`.\n * Note: `audioPan` is currently only supported on Android using `androidImplementation: 'MediaPlayer'`\n * @param volume A number between `0.0` (silence) and `1.0` (maximum volume).\n * @param audioPan A number between `-1.0` (full left) and `1.0` (full right).\n */\n setVolumeAsync(volume: number, audioPan?: number): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ isMuted })`.\n * @param isMuted A boolean describing if the audio of this media should be muted.\n */\n setIsMutedAsync(isMuted: boolean): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ isLooping })`.\n * @param isLooping A boolean describing if the media should play once (`false`) or loop indefinitely (`true`).\n */\n setIsLoopingAsync(isLooping: boolean): Promise;\n\n /**\n * This is equivalent to `playbackObject.setStatusAsync({ progressUpdateIntervalMillis })`.\n * @param progressUpdateIntervalMillis The new minimum interval in milliseconds between calls of `onPlaybackStatusUpdate`.\n * See `setOnPlaybackStatusUpdate()` for details.\n */\n setProgressUpdateIntervalAsync(progressUpdateIntervalMillis: number): Promise;\n}\n\n/**\n * @hidden\n * A mixin that defines common playback methods for A/V classes, so they implement the `Playback`\n * interface.\n */\nexport const PlaybackMixin = {\n async playAsync(): Promise {\n return (this as any as Playback).setStatusAsync({ shouldPlay: true });\n },\n\n async playFromPositionAsync(\n positionMillis: number,\n tolerances: AVPlaybackTolerance = {}\n ): Promise {\n return (this as any as Playback).setStatusAsync({\n positionMillis,\n shouldPlay: true,\n seekMillisToleranceAfter: tolerances.toleranceMillisAfter,\n seekMillisToleranceBefore: tolerances.toleranceMillisBefore,\n });\n },\n\n async pauseAsync(): Promise {\n return (this as any as Playback).setStatusAsync({ shouldPlay: false });\n },\n\n async stopAsync(): Promise {\n return (this as any as Playback).setStatusAsync({ positionMillis: 0, shouldPlay: false });\n },\n\n async setPositionAsync(\n positionMillis: number,\n tolerances: AVPlaybackTolerance = {}\n ): Promise {\n return (this as any as Playback).setStatusAsync({\n positionMillis,\n seekMillisToleranceAfter: tolerances.toleranceMillisAfter,\n seekMillisToleranceBefore: tolerances.toleranceMillisBefore,\n });\n },\n\n async setRateAsync(\n rate: number,\n shouldCorrectPitch: boolean = false,\n pitchCorrectionQuality: PitchCorrectionQuality = PitchCorrectionQuality.Medium\n ): Promise {\n return (this as any as Playback).setStatusAsync({\n rate,\n shouldCorrectPitch,\n pitchCorrectionQuality,\n });\n },\n\n async setVolumeAsync(volume: number, audioPan?: number): Promise {\n return (this as any as Playback).setStatusAsync({ volume, audioPan });\n },\n\n async setIsMutedAsync(isMuted: boolean): Promise {\n return (this as any as Playback).setStatusAsync({ isMuted });\n },\n\n async setIsLoopingAsync(isLooping: boolean): Promise {\n return (this as any as Playback).setStatusAsync({ isLooping });\n },\n\n async setProgressUpdateIntervalAsync(\n progressUpdateIntervalMillis: number\n ): Promise {\n return (this as any as Playback).setStatusAsync({ progressUpdateIntervalMillis });\n },\n};\n\nexport * from './AV.types';\n","import { EventEmitter, Platform, UnavailabilityError } from 'expo-modules-core';\n\nimport { throwIfAudioIsDisabled } from './AudioAvailability';\nimport {\n Playback,\n PlaybackMixin,\n AVPlaybackSource,\n AVMetadata,\n AVPlaybackStatus,\n AVPlaybackStatusToSet,\n assertStatusValuesInBounds,\n getNativeSourceAndFullInitialStatusForLoadAsync,\n getUnloadedStatus,\n AVPlaybackTolerance,\n} from '../AV';\nimport { PitchCorrectionQuality } from '../Audio';\nimport ExponentAV from '../ExponentAV';\n\n// @needsAudit\nexport type AudioChannel = {\n /**\n * All samples for this specific Audio Channel in PCM Buffer format (-1 to 1).\n */\n frames: number[];\n};\n\n// @needsAudit\n/**\n * Object passed to the `onAudioSampleReceived` function. Represents a single sample from an audio source.\n * The sample contains all frames (PCM Buffer values) for each channel of the audio, so if the audio is _stereo_ (interleaved),\n * there will be two channels, one for left and one for right audio.\n */\nexport type AudioSample = {\n /**\n * An array representing the data from each channel in PCM Buffer format. Array elements are objects in the following format: `{ frames: number[] }`,\n * where each frame is a number in PCM Buffer format (`-1` to `1` range).\n */\n channels: AudioChannel[];\n /**\n * A number representing the timestamp of the current sample in seconds, relative to the audio track's timeline.\n * > **Known issue:** When using the `ExoPlayer` Android implementation, the timestamp is always `-1`.\n */\n timestamp: number;\n};\n\n// @needsAudit\nexport type SoundObject = {\n /**\n * The newly created and loaded `Sound` object.\n */\n sound: Sound;\n /**\n * The `PlaybackStatus` of the `Sound` object. See the [AV documentation](/versions/latest/sdk/av) for further information.\n */\n status: AVPlaybackStatus;\n};\n\ntype AudioInstance = number | HTMLMediaElement | null;\ntype AudioSampleCallback = ((sample: AudioSample) => void) | null;\n\ndeclare global {\n interface Global {\n __EXAV_setOnAudioSampleReceivedCallback:\n | ((key: number, callback: AudioSampleCallback) => void)\n | undefined;\n }\n}\n\n// @needsAudit\n/**\n * This class represents a sound corresponding to an Asset or URL.\n * @return A newly constructed instance of `Audio.Sound`.\n *\n * @example\n * ```ts\n * const sound = new Audio.Sound();\n * try {\n * await sound.loadAsync(require('./assets/sounds/hello.mp3'));\n * await sound.playAsync();\n * // Your sound is playing!\n *\n * // Don't forget to unload the sound from memory\n * // when you are done using the Sound object\n * await sound.unloadAsync();\n * } catch (error) {\n * // An error occurred!\n * }\n * ```\n *\n * > Method not described below and the rest of the API for `Audio.Sound` is the same as the imperative playback API for `Video`.\n * > See the [AV documentation](/versions/latest/sdk/av) for further information.\n */\nexport class Sound implements Playback {\n _loaded: boolean = false;\n _loading: boolean = false;\n _key: AudioInstance = null;\n _lastStatusUpdate: string | null = null;\n _lastStatusUpdateTime: Date | null = null;\n _subscriptions: { remove: () => void }[] = [];\n _eventEmitter: EventEmitter = new EventEmitter(ExponentAV);\n _coalesceStatusUpdatesInMillis: number = 100;\n _onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null = null;\n _onMetadataUpdate: ((metadata: AVMetadata) => void) | null = null;\n _onAudioSampleReceived: AudioSampleCallback = null;\n\n /** @deprecated Use `Sound.createAsync()` instead */\n static create = async (\n source: AVPlaybackSource,\n initialStatus: AVPlaybackStatusToSet = {},\n onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null = null,\n downloadFirst: boolean = true\n ): Promise => {\n console.warn(\n `Sound.create is deprecated in favor of Sound.createAsync with the same API except for the new method name`\n );\n return Sound.createAsync(source, initialStatus, onPlaybackStatusUpdate, downloadFirst);\n };\n\n /**\n * Creates and loads a sound from source.\n *\n * ```ts\n * const { sound } = await Audio.Sound.createAsync(\n * source,\n * initialStatus,\n * onPlaybackStatusUpdate,\n * downloadFirst\n * );\n *\n * // Which is equivalent to the following:\n * const sound = new Audio.Sound();\n * sound.setOnPlaybackStatusUpdate(onPlaybackStatusUpdate);\n * await sound.loadAsync(source, initialStatus, downloadFirst);\n * ```\n *\n * @param source The source of the sound. See the [AV documentation](/versions/latest/sdk/av/#playback-api) for details on the possible `source` values.\n *\n * @param initialStatus The initial intended `PlaybackStatusToSet` of the sound, whose values will override the default initial playback status.\n * This value defaults to `{}` if no parameter is passed. See the [AV documentation](/versions/latest/sdk/av) for details on `PlaybackStatusToSet` and the default\n * initial playback status.\n *\n * @param onPlaybackStatusUpdate A function taking a single parameter `PlaybackStatus`. This value defaults to `null` if no parameter is passed.\n * See the [AV documentation](/versions/latest/sdk/av) for details on the functionality provided by `onPlaybackStatusUpdate`\n *\n * @param downloadFirst If set to true, the system will attempt to download the resource to the device before loading. This value defaults to `true`.\n * Note that at the moment, this will only work for `source`s of the form `require('path/to/file')` or `Asset` objects.\n *\n * @example\n * ```ts\n * try {\n * const { sound: soundObject, status } = await Audio.Sound.createAsync(\n * require('./assets/sounds/hello.mp3'),\n * { shouldPlay: true }\n * );\n * // Your sound is playing!\n * } catch (error) {\n * // An error occurred!\n * }\n * ```\n *\n * @return A `Promise` that is rejected if creation failed, or fulfilled with the `SoundObject` if creation succeeded.\n */\n static createAsync = async (\n source: AVPlaybackSource,\n initialStatus: AVPlaybackStatusToSet = {},\n onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null = null,\n downloadFirst: boolean = true\n ): Promise => {\n const sound: Sound = new Sound();\n sound.setOnPlaybackStatusUpdate(onPlaybackStatusUpdate);\n const status: AVPlaybackStatus = await sound.loadAsync(source, initialStatus, downloadFirst);\n return { sound, status };\n };\n\n // Internal methods\n\n _callOnPlaybackStatusUpdateForNewStatus(status: AVPlaybackStatus) {\n const shouldDismissBasedOnCoalescing =\n this._lastStatusUpdateTime &&\n JSON.stringify(status) === this._lastStatusUpdate &&\n Date.now() - this._lastStatusUpdateTime.getTime() < this._coalesceStatusUpdatesInMillis;\n\n if (this._onPlaybackStatusUpdate != null && !shouldDismissBasedOnCoalescing) {\n this._onPlaybackStatusUpdate(status);\n this._lastStatusUpdateTime = new Date();\n this._lastStatusUpdate = JSON.stringify(status);\n }\n }\n\n async _performOperationAndHandleStatusAsync(\n operation: () => Promise\n ): Promise {\n throwIfAudioIsDisabled();\n if (this._loaded) {\n const status = await operation();\n this._callOnPlaybackStatusUpdateForNewStatus(status);\n return status;\n } else {\n throw new Error('Cannot complete operation because sound is not loaded.');\n }\n }\n\n private _updateAudioSampleReceivedCallback() {\n if (globalThis.__EXAV_setOnAudioSampleReceivedCallback == null) {\n if (Platform.OS === 'ios' || Platform.OS === 'android') {\n console.warn(\n 'expo-av: Failed to set up Audio Sample Buffer callback. ' +\n \"Do you have 'Remote Debugging' enabled in your app's Developer Menu (https://docs.expo.dev/workflow/debugging)? \" +\n 'Audio Sample Buffer callbacks are not supported while using Remote Debugging, you will need to disable it to use them.'\n );\n return;\n } else {\n throw new UnavailabilityError('expo-av', 'setOnAudioSampleReceived');\n }\n }\n if (this._key == null) {\n throw new Error(\n 'Cannot set Audio Sample Buffer callback when the Sound instance has not been successfully loaded/initialized!'\n );\n }\n if (typeof this._key !== 'number') {\n throw new Error(\n `Cannot set Audio Sample Buffer callback when Sound instance key is of type ${typeof this\n ._key}! (expected: number)`\n );\n }\n\n globalThis.__EXAV_setOnAudioSampleReceivedCallback(this._key, this._onAudioSampleReceived);\n }\n\n _internalStatusUpdateCallback = ({\n key,\n status,\n }: {\n key: AudioInstance;\n status: AVPlaybackStatus;\n }) => {\n if (this._key === key) {\n this._callOnPlaybackStatusUpdateForNewStatus(status);\n }\n };\n\n _internalMetadataUpdateCallback = ({\n key,\n metadata,\n }: {\n key: AudioInstance;\n metadata: AVMetadata;\n }) => {\n if (this._key === key) {\n this._onMetadataUpdate?.(metadata);\n }\n };\n\n _internalErrorCallback = ({ key, error }: { key: AudioInstance; error: string }) => {\n if (this._key === key) {\n this._errorCallback(error);\n }\n };\n\n // TODO: We can optimize by only using time observer on native if (this._onPlaybackStatusUpdate).\n _subscribeToNativeEvents() {\n if (this._loaded) {\n this._subscriptions.push(\n this._eventEmitter.addListener(\n 'didUpdatePlaybackStatus',\n this._internalStatusUpdateCallback\n ),\n this._eventEmitter.addListener('didUpdateMetadata', this._internalMetadataUpdateCallback)\n );\n\n this._subscriptions.push(\n this._eventEmitter.addListener('ExponentAV.onError', this._internalErrorCallback)\n );\n }\n }\n\n _clearSubscriptions() {\n this._subscriptions.forEach((e) => e.remove());\n this._subscriptions = [];\n }\n\n _errorCallback = (error: string) => {\n this._clearSubscriptions();\n this._loaded = false;\n this._key = null;\n this._callOnPlaybackStatusUpdateForNewStatus(getUnloadedStatus(error));\n };\n\n // ### Unified playback API ### (consistent with Video.js)\n // All calls automatically call onPlaybackStatusUpdate as a side effect.\n\n // Get status API\n\n getStatusAsync = async (): Promise => {\n if (this._loaded) {\n return this._performOperationAndHandleStatusAsync(() =>\n ExponentAV.getStatusForSound(this._key)\n );\n }\n const status: AVPlaybackStatus = getUnloadedStatus();\n this._callOnPlaybackStatusUpdateForNewStatus(status);\n return status;\n };\n\n /**\n * Sets a function to be called regularly with the `AVPlaybackStatus` of the playback object.\n *\n * `onPlaybackStatusUpdate` will be called whenever a call to the API for this playback object completes\n * (such as `setStatusAsync()`, `getStatusAsync()`, or `unloadAsync()`), nd will also be called at regular intervals\n * while the media is in the loaded state.\n *\n * Set `progressUpdateIntervalMillis` via `setStatusAsync()` or `setProgressUpdateIntervalAsync()` to modify\n * the interval with which `onPlaybackStatusUpdate` is called while loaded.\n *\n * @param onPlaybackStatusUpdate A function taking a single parameter `AVPlaybackStatus`.\n */\n setOnPlaybackStatusUpdate(onPlaybackStatusUpdate: ((status: AVPlaybackStatus) => void) | null) {\n this._onPlaybackStatusUpdate = onPlaybackStatusUpdate;\n this.getStatusAsync();\n }\n\n /**\n * Sets a function to be called whenever the metadata of the sound object changes, if one is set.\n * @param onMetadataUpdate A function taking a single object of type `AVMetadata` as a parameter.\n * @platform ios\n */\n setOnMetadataUpdate(onMetadataUpdate: (metadata: AVMetadata) => void) {\n this._onMetadataUpdate = onMetadataUpdate;\n }\n\n /**\n * Sets a function to be called during playback, receiving the audio sample as parameter.\n * @param callback A function taking the `AudioSampleCallback` as parameter.\n */\n setOnAudioSampleReceived(callback: AudioSampleCallback) {\n this._onAudioSampleReceived = callback;\n if (this._key != null) {\n this._updateAudioSampleReceivedCallback();\n }\n }\n\n // Loading / unloading API\n\n async loadAsync(\n source: AVPlaybackSource,\n initialStatus: AVPlaybackStatusToSet = {},\n downloadFirst: boolean = true\n ): Promise {\n throwIfAudioIsDisabled();\n if (this._loading) {\n throw new Error('The Sound is already loading.');\n }\n if (!this._loaded) {\n this._loading = true;\n\n const { nativeSource, fullInitialStatus } =\n await getNativeSourceAndFullInitialStatusForLoadAsync(source, initialStatus, downloadFirst);\n\n // This is a workaround, since using load with resolve / reject seems to not work.\n return new Promise((resolve, reject) => {\n const loadSuccess = (result: [AudioInstance, AVPlaybackStatus]) => {\n const [key, status] = result;\n this._key = key;\n this._loaded = true;\n this._loading = false;\n this._subscribeToNativeEvents();\n this._callOnPlaybackStatusUpdateForNewStatus(status);\n resolve(status);\n };\n\n const loadError = (error: Error) => {\n this._loading = false;\n reject(error);\n };\n\n ExponentAV.loadForSound(nativeSource, fullInitialStatus).then(loadSuccess).catch(loadError);\n });\n } else {\n throw new Error('The Sound is already loaded.');\n }\n }\n\n async unloadAsync(): Promise {\n if (this._loaded) {\n this._loaded = false;\n const key = this._key;\n this._key = null;\n const status = await ExponentAV.unloadForSound(key);\n this._callOnPlaybackStatusUpdateForNewStatus(status);\n this._clearSubscriptions();\n return status;\n } else {\n return this.getStatusAsync(); // Automatically calls onPlaybackStatusUpdate.\n }\n }\n\n // Set status API (only available while isLoaded = true)\n\n async setStatusAsync(status: AVPlaybackStatusToSet): Promise {\n assertStatusValuesInBounds(status);\n return this._performOperationAndHandleStatusAsync(() =>\n ExponentAV.setStatusForSound(this._key, status)\n );\n }\n\n async replayAsync(status: AVPlaybackStatusToSet = {}): Promise {\n if (status.positionMillis && status.positionMillis !== 0) {\n throw new Error('Requested position after replay has to be 0.');\n }\n\n return this._performOperationAndHandleStatusAsync(() =>\n ExponentAV.replaySound(this._key, {\n ...status,\n positionMillis: 0,\n shouldPlay: true,\n })\n );\n }\n\n // Methods of the Playback interface that are set via PlaybackMixin\n playAsync!: () => Promise;\n playFromPositionAsync!: (\n positionMillis: number,\n tolerances?: AVPlaybackTolerance\n ) => Promise;\n pauseAsync!: () => Promise;\n stopAsync!: () => Promise;\n setPositionAsync!: (\n positionMillis: number,\n tolerances?: AVPlaybackTolerance\n ) => Promise;\n setRateAsync!: (\n rate: number,\n shouldCorrectPitch: boolean,\n pitchCorrectionQuality?: PitchCorrectionQuality\n ) => Promise;\n setVolumeAsync!: (volume: number, audioPan?: number) => Promise;\n setIsMutedAsync!: (isMuted: boolean) => Promise;\n setIsLoopingAsync!: (isLooping: boolean) => Promise;\n setProgressUpdateIntervalAsync!: (\n progressUpdateIntervalMillis: number\n ) => Promise;\n}\n\nObject.assign(Sound.prototype, PlaybackMixin);\n","import { Asset } from 'expo-asset';\n\n// @needsAudit\n/**\n * The different types of assets you can provide to the [`loadAsync()`](#loadasyncfontfamilyorfontmap-source) function.\n * A font source can be a URI, a module ID, or an Expo Asset.\n */\nexport type FontSource = string | number | Asset | FontResource;\n\n// @needsAudit\n/**\n * An object used to dictate the resource that is loaded into the provided font namespace when used\n * with [`loadAsync`](#loadasyncfontfamilyorfontmap-source).\n */\nexport type FontResource = {\n uri?: string | number;\n /**\n * Sets the [`font-display`](#fontdisplay) property for a given typeface in the browser.\n * @platform web\n */\n display?: FontDisplay;\n default?: string;\n};\n\n// @needsAudit\n/**\n * Sets the [font-display](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display)\n * for a given typeface. The default font value on web is `FontDisplay.AUTO`.\n * Even though setting the `fontDisplay` does nothing on native platforms, the default behavior\n * emulates `FontDisplay.SWAP` on flagship devices like iOS, Samsung, Pixel, etc. Default\n * functionality varies on One Plus devices. In the browser this value is set in the generated\n * `@font-face` CSS block and not as a style property meaning you cannot dynamically change this\n * value based on the element it's used in.\n * @platform web\n */\nexport enum FontDisplay {\n /**\n * __(Default)__ The font display strategy is defined by the user agent or platform.\n * This generally defaults to the text being invisible until the font is loaded.\n * Good for buttons or banners that require a specific treatment.\n */\n AUTO = 'auto',\n /**\n * Fallback text is rendered immediately with a default font while the desired font is loaded.\n * This is good for making the content appear to load instantly and is usually preferred.\n */\n SWAP = 'swap',\n /**\n * The text will be invisible until the font has loaded. If the font fails to load then nothing\n * will appear - it's best to turn this off when debugging missing text.\n */\n BLOCK = 'block',\n /**\n * Splits the behavior between `SWAP` and `BLOCK`.\n * There will be a [100ms timeout](https://developers.google.com/web/updates/2016/02/font-display?hl=en)\n * where the text with a custom font is invisible, after that the text will either swap to the\n * styled text or it'll show the unstyled text and continue to load the custom font. This is good\n * for buttons that need a custom font but should also be quickly available to screen-readers.\n */\n FALLBACK = 'fallback',\n /**\n * This works almost identically to `FALLBACK`, the only difference is that the browser will\n * decide to load the font based on slow connection speed or critical resource demand.\n */\n OPTIONAL = 'optional',\n}\n\n// @needsAudit\n/**\n * Object used to query fonts for unloading.\n */\nexport type UnloadFontOptions = Pick;\n","import { CodedError, Platform } from 'expo-modules-core';\nimport FontObserver from 'fontfaceobserver';\n\nimport { UnloadFontOptions } from './Font';\nimport { FontDisplay, FontResource } from './Font.types';\n\nfunction getFontFaceStyleSheet(): CSSStyleSheet | null {\n if (!Platform.isDOMAvailable) {\n return null;\n }\n const styleSheet = getStyleElement();\n return styleSheet.sheet ? (styleSheet.sheet as CSSStyleSheet) : null;\n}\n\ntype RuleItem = { rule: CSSFontFaceRule; index: number };\n\nfunction getFontFaceRules(): RuleItem[] {\n const sheet = getFontFaceStyleSheet();\n if (sheet) {\n // @ts-ignore: rule iterator\n const rules = [...sheet.cssRules];\n\n const items: RuleItem[] = [];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule instanceof CSSFontFaceRule) {\n items.push({ rule, index: i });\n }\n }\n return items;\n }\n return [];\n}\n\nfunction getFontFaceRulesMatchingResource(\n fontFamilyName: string,\n options?: UnloadFontOptions\n): RuleItem[] {\n const rules = getFontFaceRules();\n return rules.filter(({ rule }) => {\n return (\n rule.style.fontFamily === fontFamilyName &&\n (options && options.display ? options.display === (rule.style as any).fontDisplay : true)\n );\n });\n}\n\nconst serverContext: Set<{ name: string; css: string; resourceId: string }> = new Set();\n\nfunction getHeadElements(): {\n $$type: string;\n rel?: string;\n href?: string;\n as?: string;\n crossorigin?: string;\n children?: string;\n id?: string;\n type?: string;\n}[] {\n const entries = [...serverContext.entries()];\n if (!entries.length) {\n return [];\n }\n const css = entries.map(([{ css }]) => css).join('\\n');\n const links = entries.map(([{ resourceId }]) => resourceId);\n // TODO: Maybe return nothing if no fonts were loaded.\n return [\n {\n $$type: 'style',\n children: css,\n id: ID,\n type: 'text/css',\n },\n ...links.map((resourceId) => ({\n $$type: 'link',\n rel: 'preload',\n href: resourceId,\n as: 'font',\n crossorigin: '',\n })),\n ];\n}\n\nexport default {\n async unloadAllAsync(): Promise {\n if (!Platform.isDOMAvailable) return;\n\n const element = document.getElementById(ID);\n if (element && element instanceof HTMLStyleElement) {\n document.removeChild(element);\n }\n },\n\n async unloadAsync(fontFamilyName: string, options?: UnloadFontOptions): Promise {\n const sheet = getFontFaceStyleSheet();\n if (!sheet) return;\n const items = getFontFaceRulesMatchingResource(fontFamilyName, options);\n for (const item of items) {\n sheet.deleteRule(item.index);\n }\n },\n\n getServerResources(): string[] {\n const elements = getHeadElements();\n\n return elements\n .map((element) => {\n switch (element.$$type) {\n case 'style':\n return ``;\n case 'link':\n return ``;\n default:\n return '';\n }\n })\n .filter(Boolean);\n },\n\n resetServerContext() {\n serverContext.clear();\n },\n\n isLoaded(fontFamilyName: string, resource: UnloadFontOptions = {}): boolean {\n if (typeof window === 'undefined') {\n return !![...serverContext.values()].find((asset) => {\n return asset.name === fontFamilyName;\n });\n }\n return getFontFaceRulesMatchingResource(fontFamilyName, resource)?.length > 0;\n },\n\n // NOTE(EvanBacon): No async keyword! This cannot return a promise in Node environments.\n loadAsync(fontFamilyName: string, resource: FontResource): Promise {\n if (typeof window === 'undefined') {\n serverContext.add({\n name: fontFamilyName,\n css: _createWebFontTemplate(fontFamilyName, resource),\n // @ts-expect-error: typeof string\n resourceId: resource.uri!,\n });\n return Promise.resolve();\n }\n\n const canInjectStyle = document.head && typeof document.head.appendChild === 'function';\n if (!canInjectStyle) {\n throw new CodedError(\n 'ERR_WEB_ENVIRONMENT',\n `The browser's \\`document.head\\` element doesn't support injecting fonts.`\n );\n }\n\n const style = getStyleElement();\n document.head!.appendChild(style);\n\n const res = getFontFaceRulesMatchingResource(fontFamilyName, resource);\n if (!res.length) {\n _createWebStyle(fontFamilyName, resource);\n }\n\n if (!isFontLoadingListenerSupported()) {\n return Promise.resolve();\n }\n\n return new FontObserver(fontFamilyName, { display: resource.display }).load(null, 6000);\n },\n};\n\nconst ID = 'expo-generated-fonts';\n\nfunction getStyleElement(): HTMLStyleElement {\n const element = document.getElementById(ID);\n if (element && element instanceof HTMLStyleElement) {\n return element;\n }\n const styleElement = document.createElement('style');\n styleElement.id = ID;\n styleElement.type = 'text/css';\n return styleElement;\n}\n\nexport function _createWebFontTemplate(fontFamily: string, resource: FontResource): string {\n return `@font-face{font-family:${fontFamily};src:url(${resource.uri});font-display:${\n resource.display || FontDisplay.AUTO\n }}`;\n}\n\nfunction _createWebStyle(fontFamily: string, resource: FontResource): HTMLStyleElement {\n const fontStyle = _createWebFontTemplate(fontFamily, resource);\n\n const styleElement = getStyleElement();\n // @ts-ignore: TypeScript does not define HTMLStyleElement::styleSheet. This is just for IE and\n // possibly can be removed if it's unnecessary on IE 11.\n if (styleElement.styleSheet) {\n const styleElementIE = styleElement as any;\n styleElementIE.styleSheet.cssText = styleElementIE.styleSheet.cssText\n ? styleElementIE.styleSheet.cssText + fontStyle\n : fontStyle;\n } else {\n const textNode = document.createTextNode(fontStyle);\n styleElement.appendChild(textNode);\n }\n return styleElement;\n}\n\nfunction isFontLoadingListenerSupported(): boolean {\n const { userAgent } = window.navigator;\n // WebKit is broken https://github.com/bramstein/fontfaceobserver/issues/95\n const isIOS = !!userAgent.match(/iPad|iPhone/i);\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n // Edge is broken https://github.com/bramstein/fontfaceobserver/issues/109#issuecomment-333356795\n const isEdge = userAgent.includes('Edge');\n // Internet Explorer\n const isIE = userAgent.includes('Trident');\n // Firefox\n const isFirefox = userAgent.includes('Firefox');\n return !isSafari && !isIOS && !isEdge && !isIE && !isFirefox;\n}\n","import { Asset } from 'expo-asset';\nimport { CodedError } from 'expo-modules-core';\n\nimport ExpoFontLoader from './ExpoFontLoader';\nimport { FontResource, FontSource, FontDisplay } from './Font.types';\n\nfunction uriFromFontSource(asset: any): string | null {\n if (typeof asset === 'string') {\n return asset || null;\n } else if (typeof asset === 'object') {\n return asset.uri || asset.localUri || asset.default || null;\n } else if (typeof asset === 'number') {\n return uriFromFontSource(Asset.fromModule(asset));\n }\n return null;\n}\n\nfunction displayFromFontSource(asset: any): FontDisplay | undefined {\n return asset.display || FontDisplay.AUTO;\n}\n\nexport function fontFamilyNeedsScoping(name: string): boolean {\n return false;\n}\n\nexport function getAssetForSource(source: FontSource): Asset | FontResource {\n const uri = uriFromFontSource(source);\n const display = displayFromFontSource(source);\n\n if (!uri || typeof uri !== 'string') {\n throwInvalidSourceError(uri);\n }\n\n return {\n uri: uri!,\n display,\n };\n}\n\nfunction throwInvalidSourceError(source: any): never {\n let type: string = typeof source;\n if (type === 'object') type = JSON.stringify(source, null, 2);\n throw new CodedError(\n `ERR_FONT_SOURCE`,\n `Expected font asset of type \\`string | FontResource | Asset\\` instead got: ${type}`\n );\n}\n\n// NOTE(EvanBacon): No async keyword!\nexport function loadSingleFontAsync(name: string, input: Asset | FontResource): Promise {\n if (typeof input !== 'object' || typeof input.uri !== 'string' || (input as any).downloadAsync) {\n throwInvalidSourceError(input);\n }\n\n try {\n return ExpoFontLoader.loadAsync(name, input);\n } catch {\n // No-op.\n }\n\n return Promise.resolve();\n}\n\nexport function getNativeFontName(name: string): string {\n return name;\n}\n","export const loaded: { [name: string]: boolean } = {};\nexport const loadPromises: { [name: string]: Promise } = {};\n","import { CodedError, Platform, UnavailabilityError } from 'expo-modules-core';\n\nimport ExpoFontLoader from './ExpoFontLoader';\nimport { FontDisplay, FontSource, FontResource, UnloadFontOptions } from './Font.types';\nimport {\n getAssetForSource,\n loadSingleFontAsync,\n fontFamilyNeedsScoping,\n getNativeFontName,\n} from './FontLoader';\nimport { loaded, loadPromises } from './memory';\nimport { registerStaticFont } from './server';\n\n// @needsAudit\n// note(brentvatne): at some point we may want to warn if this is called outside of a managed app.\n/**\n * Used to transform font family names to the scoped name. This does not need to\n * be called in standalone or bare apps but it will return unscoped font family\n * names if it is called in those contexts.\n *\n * @param fontFamily Name of font to process.\n * @returns Returns a name processed for use with the [current workflow](https://docs.expo.dev/archive/managed-vs-bare/).\n */\nexport function processFontFamily(fontFamily: string | null): string | null {\n if (!fontFamily || !fontFamilyNeedsScoping(fontFamily)) {\n return fontFamily;\n }\n\n if (!isLoaded(fontFamily)) {\n if (__DEV__) {\n if (isLoading(fontFamily)) {\n console.warn(\n `You started loading the font \"${fontFamily}\", but used it before it finished loading. You need to wait for Font.loadAsync to complete before using the font.`\n );\n } else {\n console.warn(\n `fontFamily \"${fontFamily}\" is not a system font and has not been loaded through expo-font.`\n );\n }\n }\n }\n\n return `ExpoFont-${getNativeFontName(fontFamily)}`;\n}\n\n// @needsAudit\n/**\n * Synchronously detect if the font for `fontFamily` has finished loading.\n *\n * @param fontFamily The name used to load the `FontResource`.\n * @return Returns `true` if the font has fully loaded.\n */\nexport function isLoaded(fontFamily: string): boolean {\n if (Platform.OS === 'web') {\n return fontFamily in loaded || !!ExpoFontLoader.isLoaded(fontFamily);\n }\n return fontFamily in loaded || ExpoFontLoader.customNativeFonts?.includes(fontFamily);\n}\n\n// @needsAudit\n/**\n * Synchronously detect if the font for `fontFamily` is still being loaded.\n *\n * @param fontFamily The name used to load the `FontResource`.\n * @returns Returns `true` if the font is still loading.\n */\nexport function isLoading(fontFamily: string): boolean {\n return fontFamily in loadPromises;\n}\n\n// @needsAudit\n/**\n * Highly efficient method for loading fonts from static or remote resources which can then be used\n * with the platform's native text elements. In the browser this generates a `@font-face` block in\n * a shared style sheet for fonts. No CSS is needed to use this method.\n *\n * @param fontFamilyOrFontMap string or map of values that can be used as the [`fontFamily`](https://reactnative.dev/docs/text#style)\n * style prop with React Native Text elements.\n * @param source the font asset that should be loaded into the `fontFamily` namespace.\n *\n * @return Returns a promise that fulfils when the font has loaded. Often you may want to wrap the\n * method in a `try/catch/finally` to ensure the app continues if the font fails to load.\n */\nexport function loadAsync(\n fontFamilyOrFontMap: string | Record,\n source?: FontSource\n): Promise {\n // NOTE(EvanBacon): Static render pass on web must be synchronous to collect all fonts.\n // Because of this, `loadAsync` doesn't use the `async` keyword and deviates from the\n // standard Expo SDK style guide.\n const isServer = Platform.OS === 'web' && typeof window === 'undefined';\n\n if (typeof fontFamilyOrFontMap === 'object') {\n if (source) {\n return Promise.reject(\n new CodedError(\n `ERR_FONT_API`,\n `No fontFamily can be used for the provided source: ${source}. The second argument of \\`loadAsync()\\` can only be used with a \\`string\\` value as the first argument.`\n )\n );\n }\n const fontMap = fontFamilyOrFontMap;\n const names = Object.keys(fontMap);\n\n if (isServer) {\n names.map((name) => registerStaticFont(name, fontMap[name]));\n return Promise.resolve();\n }\n\n return Promise.all(names.map((name) => loadFontInNamespaceAsync(name, fontMap[name]))).then(\n () => {}\n );\n }\n\n if (isServer) {\n registerStaticFont(fontFamilyOrFontMap, source);\n return Promise.resolve();\n }\n\n return loadFontInNamespaceAsync(fontFamilyOrFontMap, source);\n}\n\nasync function loadFontInNamespaceAsync(\n fontFamily: string,\n source?: FontSource | null\n): Promise {\n if (!source) {\n throw new CodedError(\n `ERR_FONT_SOURCE`,\n `Cannot load null or undefined font source: { \"${fontFamily}\": ${source} }. Expected asset of type \\`FontSource\\` for fontFamily of name: \"${fontFamily}\"`\n );\n }\n\n if (loaded[fontFamily]) {\n return;\n }\n\n if (loadPromises.hasOwnProperty(fontFamily)) {\n return loadPromises[fontFamily];\n }\n\n // Important: we want all callers that concurrently try to load the same font to await the same\n // promise. If we're here, we haven't created the promise yet. To ensure we create only one\n // promise in the program, we need to create the promise synchronously without yielding the event\n // loop from this point.\n\n const asset = getAssetForSource(source);\n loadPromises[fontFamily] = (async () => {\n try {\n await loadSingleFontAsync(fontFamily, asset);\n loaded[fontFamily] = true;\n } finally {\n delete loadPromises[fontFamily];\n }\n })();\n\n await loadPromises[fontFamily];\n}\n\n// @needsAudit\n/**\n * Unloads all the custom fonts. This is used for testing.\n */\nexport async function unloadAllAsync(): Promise {\n if (!ExpoFontLoader.unloadAllAsync) {\n throw new UnavailabilityError('expo-font', 'unloadAllAsync');\n }\n\n if (Object.keys(loadPromises).length) {\n throw new CodedError(\n `ERR_UNLOAD`,\n `Cannot unload fonts while they're still loading: ${Object.keys(loadPromises).join(', ')}`\n );\n }\n\n for (const fontFamily of Object.keys(loaded)) {\n delete loaded[fontFamily];\n }\n\n await ExpoFontLoader.unloadAllAsync();\n}\n\n// @needsAudit\n/**\n * Unload custom fonts matching the `fontFamily`s and display values provided.\n * Because fonts are automatically unloaded on every platform this is mostly used for testing.\n *\n * @param fontFamilyOrFontMap The name or names of the custom fonts that will be unloaded.\n * @param options When `fontFamilyOrFontMap` is a string, this should be the font source used to load\n * the custom font originally.\n */\nexport async function unloadAsync(\n fontFamilyOrFontMap: string | Record,\n options?: UnloadFontOptions\n): Promise {\n if (!ExpoFontLoader.unloadAsync) {\n throw new UnavailabilityError('expo-font', 'unloadAsync');\n }\n if (typeof fontFamilyOrFontMap === 'object') {\n if (options) {\n throw new CodedError(\n `ERR_FONT_API`,\n `No fontFamily can be used for the provided options: ${options}. The second argument of \\`unloadAsync()\\` can only be used with a \\`string\\` value as the first argument.`\n );\n }\n const fontMap = fontFamilyOrFontMap;\n const names = Object.keys(fontMap);\n await Promise.all(names.map((name) => unloadFontInNamespaceAsync(name, fontMap[name])));\n return;\n }\n\n return await unloadFontInNamespaceAsync(fontFamilyOrFontMap, options);\n}\n\nasync function unloadFontInNamespaceAsync(\n fontFamily: string,\n options?: UnloadFontOptions | null\n): Promise {\n if (!loaded[fontFamily]) {\n return;\n } else {\n delete loaded[fontFamily];\n }\n\n // Important: we want all callers that concurrently try to load the same font to await the same\n // promise. If we're here, we haven't created the promise yet. To ensure we create only one\n // promise in the program, we need to create the promise synchronously without yielding the event\n // loop from this point.\n\n const nativeFontName = getNativeFontName(fontFamily);\n\n if (!nativeFontName) {\n throw new CodedError(`ERR_FONT_FAMILY`, `Cannot unload an empty name`);\n }\n\n await ExpoFontLoader.unloadAsync(nativeFontName, options);\n}\n\nexport { FontDisplay, FontSource, FontResource, UnloadFontOptions };\n","import { useEffect, useState } from 'react';\n\nimport { loadAsync, isLoaded } from './Font';\nimport { FontSource } from './Font.types';\n\nfunction isMapLoaded(map: string | Record) {\n if (typeof map === 'string') {\n return isLoaded(map);\n } else {\n return Object.keys(map).every((fontFamily) => isLoaded(fontFamily));\n }\n}\n\nfunction useRuntimeFonts(map: string | Record): [boolean, Error | null] {\n const [loaded, setLoaded] = useState(\n // For web rehydration, we need to check if the fonts are already loaded during the static render.\n // Native will also benefit from this optimization.\n isMapLoaded(map)\n );\n const [error, setError] = useState(null);\n\n useEffect(() => {\n loadAsync(map)\n .then(() => setLoaded(true))\n .catch(setError);\n }, []);\n\n return [loaded, error];\n}\n\nfunction useStaticFonts(map: string | Record): [boolean, Error | null] {\n loadAsync(map);\n return [true, null];\n}\n\n// @needsAudit\n/**\n * ```ts\n * const [loaded, error] = useFonts({ ... });\n * ```\n * Load a map of fonts with [`loadAsync`](#loadasyncfontfamilyorfontmap-source). This returns a `boolean` if the fonts are\n * loaded and ready to use. It also returns an error if something went wrong, to use in development.\n *\n * > Note, the fonts are not \"reloaded\" when you dynamically change the font map.\n *\n * @param map A map of `fontFamily`s to [`FontSource`](#fontsource)s. After loading the font you can\n * use the key in the `fontFamily` style prop of a `Text` element.\n *\n * @return\n * - __loaded__ (`boolean`) - A boolean to detect if the font for `fontFamily` has finished\n * loading.\n * - __error__ (`Error | null`) - An error encountered when loading the fonts.\n */\nexport const useFonts: (map: string | Record) => [boolean, Error | null] =\n typeof window === 'undefined' ? useStaticFonts : useRuntimeFonts;\n","// Copyright © 2024 650 Industries.\n\n'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { PermissionResponse } from './PermissionsInterface';\n\n// These types are identical, but improves the readability for suggestions in editors\ntype RequestPermissionMethod = () => Promise;\ntype GetPermissionMethod = () => Promise;\n\ninterface PermissionHookMethods {\n /** The permission method that requests the user to grant permission. */\n requestMethod: (options?: Options) => Promise;\n /** The permission method that only fetches the current permission status. */\n getMethod: (options?: Options) => Promise;\n}\n\ninterface PermissionHookBehavior {\n /** If the hook should automatically fetch the current permission status, without asking the user. */\n get?: boolean;\n /** If the hook should automatically request the user to grant permission. */\n request?: boolean;\n}\n\nexport type PermissionHookOptions = PermissionHookBehavior & Options;\n\n/**\n * Get or request permission for protected functionality within the app.\n * It uses separate permission requesters to interact with a single permission.\n * By default, the hook will only retrieve the permission status.\n */\nfunction usePermission(\n methods: PermissionHookMethods,\n options?: PermissionHookOptions\n): [Permission | null, RequestPermissionMethod, GetPermissionMethod] {\n const isMounted = useRef(true);\n const [status, setStatus] = useState(null);\n const { get = true, request = false, ...permissionOptions } = options || {};\n\n const getPermission = useCallback(async () => {\n const response = await methods.getMethod(\n Object.keys(permissionOptions).length > 0 ? (permissionOptions as Options) : undefined\n );\n if (isMounted.current) setStatus(response);\n return response;\n }, [methods.getMethod]);\n\n const requestPermission = useCallback(async () => {\n const response = await methods.requestMethod(\n Object.keys(permissionOptions).length > 0 ? (permissionOptions as Options) : undefined\n );\n if (isMounted.current) setStatus(response);\n return response;\n }, [methods.requestMethod]);\n\n useEffect(\n function runMethods() {\n if (request) requestPermission();\n if (!request && get) getPermission();\n },\n [get, request, requestPermission, getPermission]\n );\n\n // Workaround for unmounting components receiving state updates\n useEffect(function didMount() {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return [status, requestPermission, getPermission];\n}\n\n/**\n * Create a new permission hook with the permission methods built-in.\n * This can be used to quickly create specific permission hooks in every module.\n */\nexport function createPermissionHook(\n methods: PermissionHookMethods\n) {\n return (options?: PermissionHookOptions) =>\n usePermission(methods, options);\n}\n","import { PermissionResponse, PermissionStatus, Platform } from 'expo-modules-core';\n\nimport {\n ImagePickerAsset,\n ImagePickerResult,\n MediaTypeOptions,\n OpenFileBrowserOptions,\n} from './ImagePicker.types';\n\nconst MediaTypeInput = {\n [MediaTypeOptions.All]: 'video/mp4,video/quicktime,video/x-m4v,video/*,image/*',\n [MediaTypeOptions.Images]: 'image/*',\n [MediaTypeOptions.Videos]: 'video/mp4,video/quicktime,video/x-m4v,video/*',\n};\n\nexport default {\n async launchImageLibraryAsync({\n mediaTypes = MediaTypeOptions.Images,\n allowsMultipleSelection = false,\n base64 = false,\n }): Promise {\n // SSR guard\n if (!Platform.isDOMAvailable) {\n return { canceled: true, assets: null };\n }\n return await openFileBrowserAsync({\n mediaTypes,\n allowsMultipleSelection,\n base64,\n });\n },\n\n async launchCameraAsync({\n mediaTypes = MediaTypeOptions.Images,\n allowsMultipleSelection = false,\n base64 = false,\n }): Promise {\n // SSR guard\n if (!Platform.isDOMAvailable) {\n return { canceled: true, assets: null };\n }\n return await openFileBrowserAsync({\n mediaTypes,\n allowsMultipleSelection,\n capture: true,\n base64,\n });\n },\n\n /*\n * Delegate to expo-permissions to request camera permissions\n */\n async getCameraPermissionsAsync() {\n return permissionGrantedResponse();\n },\n async requestCameraPermissionsAsync() {\n return permissionGrantedResponse();\n },\n\n /*\n * Camera roll permissions don't need to be requested on web, so we always\n * respond with granted.\n */\n async getMediaLibraryPermissionsAsync(_writeOnly: boolean) {\n return permissionGrantedResponse();\n },\n async requestMediaLibraryPermissionsAsync(_writeOnly: boolean): Promise {\n return permissionGrantedResponse();\n },\n};\n\nfunction permissionGrantedResponse(): PermissionResponse {\n return {\n status: PermissionStatus.GRANTED,\n expires: 'never',\n granted: true,\n canAskAgain: true,\n };\n}\n\nfunction openFileBrowserAsync({\n mediaTypes,\n capture = false,\n allowsMultipleSelection = false,\n base64,\n}: OpenFileBrowserOptions): Promise {\n const mediaTypeFormat = MediaTypeInput[mediaTypes];\n\n const input = document.createElement('input');\n input.style.display = 'none';\n input.setAttribute('type', 'file');\n input.setAttribute('accept', mediaTypeFormat);\n input.setAttribute('id', String(Math.random()));\n if (allowsMultipleSelection) {\n input.setAttribute('multiple', 'multiple');\n }\n if (capture) {\n input.setAttribute('capture', 'camera');\n }\n document.body.appendChild(input);\n\n return new Promise((resolve) => {\n input.addEventListener('change', async () => {\n if (input.files) {\n const files = allowsMultipleSelection ? input.files : [input.files[0]];\n const assets: ImagePickerAsset[] = await Promise.all(\n Array.from(files).map((file) => readFile(file, { base64 }))\n );\n\n resolve({ canceled: false, assets });\n } else {\n resolve({ canceled: true, assets: null });\n }\n document.body.removeChild(input);\n });\n\n const event = new MouseEvent('click');\n input.dispatchEvent(event);\n });\n}\n\nfunction readFile(targetFile: File, options: { base64: boolean }): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => {\n reject(new Error(`Failed to read the selected media because the operation failed.`));\n };\n reader.onload = ({ target }) => {\n const uri = (target as any).result;\n const returnRaw = () => resolve({ uri, width: 0, height: 0 });\n\n if (typeof uri === 'string') {\n const image = new Image();\n image.src = uri;\n\n image.onload = () => {\n resolve({\n uri,\n width: image.naturalWidth ?? image.width,\n height: image.naturalHeight ?? image.height,\n mimeType: targetFile.type,\n fileName: targetFile.name,\n // The blob's result cannot be directly decoded as Base64 without\n // first removing the Data-URL declaration preceding the\n // Base64-encoded data. To retrieve only the Base64 encoded string,\n // first remove data:*/*;base64, from the result.\n // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\n ...(options.base64 && { base64: uri.substr(uri.indexOf(',') + 1) }),\n });\n };\n image.onerror = () => returnRaw();\n } else {\n returnRaw();\n }\n };\n\n reader.readAsDataURL(targetFile);\n });\n}\n","import {\n PermissionStatus,\n PermissionExpiration,\n PermissionHookOptions,\n PermissionResponse,\n createPermissionHook,\n UnavailabilityError,\n CodedError,\n} from 'expo-modules-core';\n\nimport ExponentImagePicker from './ExponentImagePicker';\nimport {\n CameraPermissionResponse,\n MediaLibraryPermissionResponse,\n ImagePickerResult,\n ImagePickerErrorResult,\n ImagePickerOptions,\n} from './ImagePicker.types';\n\nfunction validateOptions(options: ImagePickerOptions) {\n const { aspect, quality, videoMaxDuration } = options;\n\n if (aspect != null) {\n const [x, y] = aspect;\n\n if (x <= 0 || y <= 0) {\n throw new CodedError(\n 'ERR_INVALID_ARGUMENT',\n `Invalid aspect ratio values ${x}:${y}. Provide positive numbers.`\n );\n }\n }\n\n if (quality && (quality < 0 || quality > 1)) {\n throw new CodedError(\n 'ERR_INVALID_ARGUMENT',\n `Invalid 'quality' value ${quality}. Provide a value between 0 and 1.`\n );\n }\n\n if (videoMaxDuration && videoMaxDuration < 0) {\n throw new CodedError(\n 'ERR_INVALID_ARGUMENT',\n `Invalid 'videoMaxDuration' value ${videoMaxDuration}. Provide a non-negative number.`\n );\n }\n\n return options;\n}\n\n// @needsAudit\n/**\n * Checks user's permissions for accessing camera.\n * @return A promise that fulfills with an object of type [CameraPermissionResponse](#camerapermissionresponse).\n */\nexport async function getCameraPermissionsAsync(): Promise {\n return ExponentImagePicker.getCameraPermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Checks user's permissions for accessing photos.\n * @param writeOnly Whether to request write or read and write permissions. Defaults to `false`\n * @return A promise that fulfills with an object of type [MediaLibraryPermissionResponse](#medialibrarypermissionresponse).\n */\nexport async function getMediaLibraryPermissionsAsync(\n writeOnly: boolean = false\n): Promise {\n return ExponentImagePicker.getMediaLibraryPermissionsAsync(writeOnly);\n}\n\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing camera. This does nothing on web because the\n * browser camera is not used.\n * @return A promise that fulfills with an object of type [CameraPermissionResponse](#camerarollpermissionresponse).\n */\nexport async function requestCameraPermissionsAsync(): Promise {\n return ExponentImagePicker.requestCameraPermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing user's photo. This method does nothing on web.\n * @param writeOnly Whether to request write or read and write permissions. Defaults to `false`\n * @return A promise that fulfills with an object of type [MediaLibraryPermissionResponse](#medialibrarypermissionresponse).\n */\nexport async function requestMediaLibraryPermissionsAsync(\n writeOnly: boolean = false\n): Promise {\n const imagePickerMethod = ExponentImagePicker.requestMediaLibraryPermissionsAsync;\n return imagePickerMethod(writeOnly);\n}\n\n// @needsAudit\n/**\n * Check or request permissions to access the media library.\n * This uses both `requestMediaLibraryPermissionsAsync` and `getMediaLibraryPermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = ImagePicker.useMediaLibraryPermissions();\n * ```\n */\nexport const useMediaLibraryPermissions = createPermissionHook<\n MediaLibraryPermissionResponse,\n { writeOnly?: boolean }\n>({\n // TODO(cedric): permission requesters should have an options param or a different requester\n getMethod: (options) => getMediaLibraryPermissionsAsync(options?.writeOnly),\n requestMethod: (options) => requestMediaLibraryPermissionsAsync(options?.writeOnly),\n});\n\n// @needsAudit\n/**\n * Check or request permissions to access the camera.\n * This uses both `requestCameraPermissionsAsync` and `getCameraPermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = ImagePicker.useCameraPermissions();\n * ```\n */\nexport const useCameraPermissions = createPermissionHook({\n getMethod: getCameraPermissionsAsync,\n requestMethod: requestCameraPermissionsAsync,\n});\n\n// @needsAudit\n/**\n * Android system sometimes kills the `MainActivity` after the `ImagePicker` finishes. When this\n * happens, we lost the data selected from the `ImagePicker`. However, you can retrieve the lost\n * data by calling `getPendingResultAsync`. You can test this functionality by turning on\n * `Don't keep activities` in the developer options.\n * @return\n * - **On Android:** a promise that resolves to an array of objects of exactly same type as in\n * `ImagePicker.launchImageLibraryAsync` or `ImagePicker.launchCameraAsync` if the `ImagePicker`\n * finished successfully. Otherwise, to the array of [`ImagePickerErrorResult`](#imagepickerimagepickererrorresult).\n * - **On other platforms:** an empty array.\n */\nexport async function getPendingResultAsync(): Promise<\n (ImagePickerResult | ImagePickerErrorResult)[]\n> {\n if (ExponentImagePicker.getPendingResultAsync) {\n return ExponentImagePicker.getPendingResultAsync();\n }\n return [];\n}\n\n// @needsAudit\n/**\n * Display the system UI for taking a photo with the camera. Requires `Permissions.CAMERA`.\n * On Android and iOS 10 `Permissions.CAMERA_ROLL` is also required. On mobile web, this must be\n * called immediately in a user interaction like a button press, otherwise the browser will block\n * the request without a warning.\n * > **Note:** Make sure that you handle `MainActivity` destruction on **Android**. See [ImagePicker.getPendingResultAsync](#imagepickergetpendingresultasync).\n * > **Notes for Web:** The system UI can only be shown after user activation (e.g. a `Button` press).\n * Therefore, calling `launchCameraAsync` in `componentDidMount`, for example, will **not** work as\n * intended. The `cancelled` event will not be returned in the browser due to platform restrictions\n * and inconsistencies across browsers.\n * @param options An `ImagePickerOptions` object.\n * @return A promise that resolves to an object with `canceled` and `assets` fields.\n * When the user canceled the action the `assets` is always `null`, otherwise it's an array of\n * the selected media assets which have a form of [`ImagePickerAsset`](#imagepickerasset).\n */\nexport async function launchCameraAsync(\n options: ImagePickerOptions = {}\n): Promise {\n if (!ExponentImagePicker.launchCameraAsync) {\n throw new UnavailabilityError('ImagePicker', 'launchCameraAsync');\n }\n return await ExponentImagePicker.launchCameraAsync(validateOptions(options));\n}\n\n// @needsAudit\n/**\n * Display the system UI for choosing an image or a video from the phone's library.\n * Requires `Permissions.MEDIA_LIBRARY` on iOS 10 only. On mobile web, this must be called\n * immediately in a user interaction like a button press, otherwise the browser will block the\n * request without a warning.\n *\n * **Animated GIFs support:** On Android, if the selected image is an animated GIF, the result image will be an\n * animated GIF too if and only if `quality` is explicitly set to `1.0` and `allowsEditing` is set to `false`.\n * Otherwise compression and/or cropper will pick the first frame of the GIF and return it as the\n * result (on Android the result will be a PNG). On iOS, both quality and cropping are supported.\n *\n * > **Notes for Web:** The system UI can only be shown after user activation (e.g. a `Button` press).\n * Therefore, calling `launchImageLibraryAsync` in `componentDidMount`, for example, will **not**\n * work as intended. The `cancelled` event will not be returned in the browser due to platform\n * restrictions and inconsistencies across browsers.\n * @param options An object extended by [`ImagePickerOptions`](#imagepickeroptions).\n * @return A promise that resolves to an object with `canceled` and `assets` fields.\n * When the user canceled the action the `assets` is always `null`, otherwise it's an array of\n * the selected media assets which have a form of [`ImagePickerAsset`](#imagepickerasset).\n */\nexport async function launchImageLibraryAsync(\n options?: ImagePickerOptions\n): Promise {\n if (!ExponentImagePicker.launchImageLibraryAsync) {\n throw new UnavailabilityError('ImagePicker', 'launchImageLibraryAsync');\n }\n if (options?.allowsEditing && options.allowsMultipleSelection) {\n console.warn(\n '[expo-image-picker] `allowsEditing` is not supported when `allowsMultipleSelection` is enabled and will be ignored.' +\n \"Disable either 'allowsEditing' or 'allowsMultipleSelection' in 'launchImageLibraryAsync' \" +\n 'to fix this warning.'\n );\n }\n return await ExponentImagePicker.launchImageLibraryAsync(options ?? {});\n}\n\nexport * from './ImagePicker.types';\n\nexport type { PermissionExpiration, PermissionHookOptions, PermissionResponse };\nexport { PermissionStatus };\n","import { PermissionResponse } from 'expo-modules-core';\n\n// @needsAudit\n/**\n * Alias for `PermissionResponse` type exported by `expo-modules-core`.\n */\nexport type CameraPermissionResponse = PermissionResponse;\n\n// @needsAudit\n/**\n * Extends `PermissionResponse` type exported by `expo-modules-core`, containing additional iOS-specific field.\n */\nexport type MediaLibraryPermissionResponse = PermissionResponse & {\n /**\n * Indicates if your app has access to the whole or only part of the photo library. Possible values are:\n * - `'all'` if the user granted your app access to the whole photo library\n * - `'limited'` if the user granted your app access only to selected photos (only available on Android API 34+ and iOS 14.0+)\n * - `'none'` if user denied or hasn't yet granted the permission\n */\n accessPrivileges?: 'all' | 'limited' | 'none';\n};\n\n// @needsAudit\nexport enum MediaTypeOptions {\n /**\n * Images and videos.\n */\n All = 'All',\n /**\n * Only videos.\n */\n Videos = 'Videos',\n /**\n * Only images.\n */\n Images = 'Images',\n}\n\n// @needsAudit\nexport enum VideoExportPreset {\n /**\n * Resolution: __Unchanged__ •\n * Video compression: __None__ •\n * Audio compression: __None__\n */\n Passthrough = 0,\n /**\n * Resolution: __Depends on the device__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n LowQuality = 1,\n /**\n * Resolution: __Depends on the device__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n MediumQuality = 2,\n /**\n * Resolution: __Depends on the device__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n HighestQuality = 3,\n /**\n * Resolution: __640 × 480__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n H264_640x480 = 4,\n /**\n * Resolution: __960 × 540__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n H264_960x540 = 5,\n /**\n * Resolution: __1280 × 720__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n H264_1280x720 = 6,\n /**\n * Resolution: __1920 × 1080__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n H264_1920x1080 = 7,\n /**\n * Resolution: __3840 × 2160__ •\n * Video compression: __H.264__ •\n * Audio compression: __AAC__\n */\n H264_3840x2160 = 8,\n /**\n * Resolution: __1920 × 1080__ •\n * Video compression: __HEVC__ •\n * Audio compression: __AAC__\n */\n HEVC_1920x1080 = 9,\n /**\n * Resolution: __3840 × 2160__ •\n * Video compression: __HEVC__ •\n * Audio compression: __AAC__\n */\n HEVC_3840x2160 = 10,\n}\n\n// @needsAudit\nexport enum UIImagePickerControllerQualityType {\n /**\n * Highest available resolution.\n */\n High = 0,\n /**\n * Depends on the device.\n */\n Medium = 1,\n /**\n * Depends on the device.\n */\n Low = 2,\n /**\n * 640 × 480\n */\n VGA640x480 = 3,\n /**\n * 1280 × 720\n */\n IFrame1280x720 = 4,\n /**\n * 960 × 540\n */\n IFrame960x540 = 5,\n}\n\n/**\n * Picker presentation style. Its values are directly mapped to the [`UIModalPresentationStyle`](https://developer.apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle).\n *\n * @platform ios\n */\nexport enum UIImagePickerPresentationStyle {\n /**\n * A presentation style in which the presented picker covers the screen.\n */\n FULL_SCREEN = 'fullScreen',\n /**\n * A presentation style that partially covers the underlying content.\n */\n PAGE_SHEET = 'pageSheet',\n /**\n * A presentation style that displays the picker centered in the screen.\n */\n FORM_SHEET = 'formSheet',\n /**\n * A presentation style where the picker is displayed over the app's content.\n */\n CURRENT_CONTEXT = 'currentContext',\n /**\n * A presentation style in which the picker view covers the screen.\n */\n OVER_FULL_SCREEN = 'overFullScreen',\n /**\n * A presentation style where the picker is displayed over the app's content.\n */\n OVER_CURRENT_CONTEXT = 'overCurrentContext',\n /**\n * A presentation style where the picker is displayed in a popover view.\n */\n POPOVER = 'popover',\n /**\n * The default presentation style chosen by the system.\n * On older iOS versions, falls back to `WebBrowserPresentationStyle.FullScreen`.\n *\n * @platform ios\n */\n AUTOMATIC = 'automatic',\n}\n\n/**\n * Picker preferred asset representation mode. Its values are directly mapped to the [`PHPickerConfigurationAssetRepresentationMode`](https://developer.apple.com/documentation/photokit/phpickerconfigurationassetrepresentationmode).\n *\n * @platform ios\n */\nexport enum UIImagePickerPreferredAssetRepresentationMode {\n /**\n * A mode that indicates that the system chooses the appropriate asset representation.\n */\n Automatic = 'automatic',\n /**\n * A mode that uses the most compatible asset representation.\n */\n Compatible = 'compatible',\n /**\n * A mode that uses the current representation to avoid transcoding, if possible.\n */\n Current = 'current',\n}\n\nexport enum CameraType {\n /**\n * Back/rear camera.\n */\n back = 'back',\n /**\n * Front camera\n */\n front = 'front',\n}\n\n/**\n * @hidden\n * @deprecated Use `ImagePickerAsset` instead\n */\nexport type ImageInfo = ImagePickerAsset;\n\n/**\n * Represents an asset (image or video) returned by the image picker or camera.\n */\nexport type ImagePickerAsset = {\n /**\n * URI to the local image or video file (usable as the source of an `Image` element, in the case of\n * an image) and `width` and `height` specify the dimensions of the media.\n */\n uri: string;\n /**\n * The unique ID that represents the picked image or video, if picked from the library. It can be used\n * by [expo-media-library](./media-library) to manage the picked asset.\n *\n * > This might be `null` when the ID is unavailable or the user gave limited permission to access the media library.\n * > On Android, the ID is unavailable when the user selects a photo by directly browsing file system.\n *\n * @platform ios\n * @platform android\n */\n assetId?: string | null;\n /**\n * Width of the image or video.\n */\n width: number;\n /**\n * Height of the image or video.\n */\n height: number;\n /**\n * The type of the asset.\n */\n type?: 'image' | 'video';\n /**\n * Preferred filename to use when saving this item. This might be `null` when the name is unavailable\n * or user gave limited permission to access the media library.\n *\n */\n fileName?: string | null;\n /**\n * File size of the picked image or video, in bytes.\n *\n */\n fileSize?: number;\n /**\n * The `exif` field is included if the `exif` option is truthy, and is an object containing the\n * image's EXIF data. The names of this object's properties are EXIF tags and the values are the\n * respective EXIF values for those tags.\n */\n exif?: Record | null;\n /**\n * When the `base64` option is truthy, it is a Base64-encoded string of the selected image's JPEG data, otherwise `null`.\n * If you prepend this with `'data:image/jpeg;base64,'` to create a data URI,\n * you can use it as the source of an `Image` element; for example:\n * ```ts\n * \n * ```\n */\n base64?: string | null;\n /**\n * Length of the video in milliseconds or `null` if the asset is not a video.\n */\n duration?: number | null;\n /**\n * The MIME type of the selected asset or `null` if could not be determined.\n */\n mimeType?: string;\n};\n\n// @needsAudit\nexport type ImagePickerErrorResult = {\n /**\n * The error code.\n */\n code: string;\n /**\n * The error message.\n */\n message: string;\n /**\n * The exception which caused the error.\n */\n exception?: string;\n};\n\n// @needsAudit\n/**\n * Type representing successful and canceled pick result.\n */\nexport type ImagePickerResult = ImagePickerSuccessResult | ImagePickerCanceledResult;\n\n/**\n * Type representing successful pick result.\n */\nexport type ImagePickerSuccessResult = {\n /**\n * Boolean flag set to `false` showing that the request was successful.\n */\n canceled: false;\n /**\n * An array of picked assets.\n */\n assets: ImagePickerAsset[];\n};\n\n/**\n * Type representing canceled pick result.\n */\nexport type ImagePickerCanceledResult = {\n /**\n * Boolean flag set to `true` showing that the request was canceled.\n */\n canceled: true;\n /**\n * `null` signifying that the request was canceled.\n */\n assets: null;\n};\n\n/**\n * @hidden\n * @deprecated Use `ImagePickerResult` instead.\n */\nexport type ImagePickerCancelledResult = ImagePickerCanceledResult;\n\n/**\n * @hidden\n * @deprecated `ImagePickerMultipleResult` has been deprecated in favor of `ImagePickerResult`.\n */\nexport type ImagePickerMultipleResult = ImagePickerResult;\n\n// @needsAudit\nexport type ImagePickerOptions = {\n /**\n * Whether to show a UI to edit the image after it is picked. On Android the user can crop and\n * rotate the image and on iOS simply crop it.\n *\n * > - Cropping multiple images is not supported - this option is mutually exclusive with `allowsMultipleSelection`.\n * > - On iOS, this option is ignored if `allowsMultipleSelection` is enabled.\n * > - On iOS cropping a `.bmp` image will convert it to `.png`.\n *\n * @default false\n * @platform ios\n * @platform android\n */\n allowsEditing?: boolean;\n /**\n * An array with two entries `[x, y]` specifying the aspect ratio to maintain if the user is\n * allowed to edit the image (by passing `allowsEditing: true`). This is only applicable on\n * Android, since on iOS the crop rectangle is always a square.\n */\n aspect?: [number, number];\n /**\n * Specify the quality of compression, from `0` to `1`. `0` means compress for small size,\n * `1` means compress for maximum quality.\n * > Note: If the selected image has been compressed before, the size of the output file may be\n * > bigger than the size of the original image.\n *\n * > Note: On iOS, if a `.bmp` or `.png` image is selected from the library, this option is ignored.\n *\n * @default 0.2\n * @platform ios\n * @platform android\n */\n quality?: number;\n /**\n * Choose what type of media to pick.\n * @default ImagePicker.MediaTypeOptions.Images\n */\n mediaTypes?: MediaTypeOptions;\n /**\n * Whether to also include the EXIF data for the image. On iOS the EXIF data does not include GPS\n * tags in the camera case.\n */\n exif?: boolean;\n /**\n * Whether to also include the image data in Base64 format.\n */\n base64?: boolean;\n /**\n * Specify preset which will be used to compress selected video.\n * @default ImagePicker.VideoExportPreset.Passthrough\n * @platform ios 11+\n * @deprecated See [`videoExportPreset`](https://developer.apple.com/documentation/uikit/uiimagepickercontroller/2890964-videoexportpreset?language=objc)\n * in Apple documentation.\n */\n videoExportPreset?: VideoExportPreset;\n /**\n * Specify the quality of recorded videos. Defaults to the highest quality available for the device.\n * @default ImagePicker.UIImagePickerControllerQualityType.High\n * @platform ios\n */\n videoQuality?: UIImagePickerControllerQualityType;\n /**\n * Whether or not to allow selecting multiple media files at once.\n *\n * > Cropping multiple images is not supported - this option is mutually exclusive with `allowsEditing`.\n * > If this option is enabled, then `allowsEditing` is ignored.\n *\n * @default false\n * @platform ios 14+\n * @platform android\n * @platform web\n */\n allowsMultipleSelection?: boolean;\n /**\n * The maximum number of items that user can select. Applicable when `allowsMultipleSelection` is enabled.\n * Setting the value to `0` sets the selection limit to the maximum that the system supports.\n *\n * @platform ios 14+\n * @platform android\n * @default 0\n */\n selectionLimit?: number;\n /**\n * Whether to display number badges when assets are selected. The badges are numbered\n * in selection order. Assets are then returned in the exact same order they were selected.\n *\n * > Assets should be returned in the selection order regardless of this option,\n * > but there is no guarantee that it is always true when this option is disabled.\n *\n * @platform ios 15+\n * @default false\n */\n orderedSelection?: boolean;\n /**\n * Maximum duration, in seconds, for video recording. Setting this to `0` disables the limit.\n * Defaults to `0` (no limit).\n * - **On iOS**, when `allowsEditing` is set to `true`, maximum duration is limited to 10 minutes.\n * This limit is applied automatically, if `0` or no value is specified.\n * - **On Android**, effect of this option depends on support of installed camera app.\n * - **On Web** this option has no effect - the limit is browser-dependant.\n */\n videoMaxDuration?: number;\n /**\n * Choose [presentation style](https://developer.apple.com/documentation/uikit/uiviewcontroller/1621355-modalpresentationstyle?language=objc)\n * to customize view during taking photo/video.\n * @default ImagePicker.UIImagePickerPresentationStyle.Automatic\n * @platform ios\n */\n presentationStyle?: UIImagePickerPresentationStyle;\n /**\n * Selects the camera-facing type. The `CameraType` enum provides two options:\n * `front` for the front-facing camera and `back` for the back-facing camera.\n * - **On Android**, the behavior of this option may vary based on the camera app installed on the device.\n * @default CameraType.back\n * @platform ios\n * @platform android\n */\n cameraType?: CameraType;\n /**\n * Choose [preferred asset representation mode](https://developer.apple.com/documentation/photokit/phpickerconfigurationassetrepresentationmode)\n * to use when loading assets.\n * @default ImagePicker.UIImagePickerPreferredAssetRepresentationMode.Automatic\n * @platform ios 14+\n */\n preferredAssetRepresentationMode?: UIImagePickerPreferredAssetRepresentationMode;\n /**\n * Uses the legacy image picker on Android. This will allow media to be selected from outside the users photo library.\n * @platform android\n * @default false\n */\n legacy?: boolean;\n};\n\n// @needsAudit\nexport type OpenFileBrowserOptions = {\n /**\n * Choose what type of media to pick.\n * @default ImagePicker.MediaTypeOptions.Images\n */\n mediaTypes: MediaTypeOptions;\n // @docsMissing\n capture?: boolean;\n /**\n * Whether or not to allow selecting multiple media files at once.\n * @platform web\n */\n allowsMultipleSelection: boolean;\n /**\n * Whether to also include the image data in Base64 format.\n */\n base64: boolean;\n};\n\n/**\n * @hidden\n * @deprecated Use `ImagePickerResult` or `OpenFileBrowserOptions` instead.\n */\nexport type ExpandImagePickerResult =\n T extends {\n allowsMultipleSelection: true;\n }\n ? ImagePickerResult\n : ImagePickerResult;\n","export enum PermissionStatus {\n /**\n * User has granted the permission.\n */\n GRANTED = 'granted',\n /**\n * User hasn't granted or denied the permission yet.\n */\n UNDETERMINED = 'undetermined',\n /**\n * User has denied the permission.\n */\n DENIED = 'denied',\n}\n\n/**\n * Permission expiration time. Currently, all permissions are granted permanently.\n */\nexport type PermissionExpiration = 'never' | number;\n\n/**\n * An object obtained by permissions get and request functions.\n */\nexport interface PermissionResponse {\n /**\n * Determines the status of the permission.\n */\n status: PermissionStatus;\n /**\n * Determines time when the permission expires.\n */\n expires: PermissionExpiration;\n /**\n * A convenience boolean that indicates if the permission is granted.\n */\n granted: boolean;\n /**\n * Indicates if user can be asked again for specific permission.\n * If not, one should be directed to the Settings app\n * in order to enable/disable the permission.\n */\n canAskAgain: boolean;\n}\n","declare global {\n // Add IE-specific interface to Window\n interface Window {\n attachEvent(event: string, listener: EventListener): boolean;\n }\n}\n\n// Used for delegating node actions when browser APIs aren't available\n// like in SSR websites.\nexport const isDOMAvailable = typeof window !== 'undefined' && !!window.document?.createElement;\nexport const canUseEventListeners =\n isDOMAvailable && !!(window.addEventListener || window.attachEvent);\nexport const canUseViewport = isDOMAvailable && !!window.screen;\nexport const isAsyncDebugging = false;\n","import { Platform as ReactNativePlatform, PlatformOSType } from 'react-native';\n\nimport {\n isDOMAvailable,\n canUseEventListeners,\n canUseViewport,\n isAsyncDebugging,\n} from './environment/browser';\n\nexport type PlatformSelectOSType = PlatformOSType | 'native' | 'electron' | 'default';\n\nexport type PlatformSelect = (specifics: { [platform in PlatformSelectOSType]?: T }) => T;\n\nconst Platform = {\n /**\n * Denotes the currently running platform.\n * Can be one of ios, android, web.\n */\n OS: ReactNativePlatform.OS,\n /**\n * Returns the value with the matching platform.\n * Object keys can be any of ios, android, native, web, default.\n *\n * @ios ios, native, default\n * @android android, native, default\n * @web web, default\n */\n select: ReactNativePlatform.select as PlatformSelect,\n /**\n * Denotes if the DOM API is available in the current environment.\n * The DOM is not available in native React runtimes and Node.js.\n */\n isDOMAvailable,\n /**\n * Denotes if the current environment can attach event listeners\n * to the window. This will return false in native React\n * runtimes and Node.js.\n */\n canUseEventListeners,\n /**\n * Denotes if the current environment can inspect properties of the\n * screen on which the current window is being rendered. This will\n * return false in native React runtimes and Node.js.\n */\n canUseViewport,\n /**\n * If the JavaScript is being executed in a remote JavaScript environment.\n * When `true`, synchronous native invocations cannot be executed.\n */\n isAsyncDebugging,\n};\n\nexport default Platform;\n","/**\n * A general error class that should be used for all errors in Expo modules.\n * Guarantees a `code` field that can be used to differentiate between different\n * types of errors without further subclassing Error.\n */\nexport class CodedError extends Error {\n code: string;\n info?: any;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n }\n}\n","import { CodedError } from './CodedError';\nimport Platform from '../Platform';\n\n/**\n * A class for errors to be thrown when a property is accessed which is\n * unavailable, unsupported, or not currently implemented on the running\n * platform.\n */\nexport class UnavailabilityError extends CodedError {\n constructor(moduleName: string, propertyName: string) {\n super(\n 'ERR_UNAVAILABLE',\n `The method or property ${moduleName}.${propertyName} is not available on ${Platform.OS}, are you sure you've linked all the native dependencies properly?`\n );\n }\n}\n","import { StatusBarProps } from './StatusBar.types';\n\n// @needsAudit\n/**\n * A component that allows you to configure your status bar without directly calling imperative\n * methods like `setBarStyle`.\n *\n * You will likely have multiple `StatusBar` components mounted in the same app at the same time.\n * For example, if you have multiple screens in your app, you may end up using one per screen.\n * The props of each `StatusBar` component will be merged in the order that they were mounted.\n * This component is built on top of the [StatusBar](https://reactnative.dev/docs/statusbar)\n * component exported from React Native, and it provides defaults that work better for Expo users.\n */\nexport default function ExpoStatusBar(props: StatusBarProps) {\n // StatusBar does nothing on web currently\n return null;\n}\n","import { Platform, PixelRatio, Dimensions } from 'react-native';\nimport type { IUseDetectDevice } from './model';\n\nconst { width, height } = Dimensions.get('window');\n\nconst isTablet = () => {\n let pixelDensity = PixelRatio.get();\n const adjustedWidth = width * pixelDensity;\n const adjustedHeight = height * pixelDensity;\n if (pixelDensity < 2 && (adjustedWidth >= 1000 || adjustedHeight >= 1000)) {\n return true;\n } else {\n return (\n pixelDensity === 2 && (adjustedWidth >= 1824 || adjustedHeight >= 1824)\n );\n }\n};\n\nconst useDetectDevice: IUseDetectDevice = {\n isAndroid: Platform.OS === 'android',\n isIOS: Platform.OS === 'ios',\n isTablet: isTablet(),\n};\n\nexport { useDetectDevice };\n","/* eslint-disable @typescript-eslint/no-shadow */\nimport { useEffect, useState } from 'react';\nimport { Dimensions, ScaledSize } from 'react-native';\n\nconst isOrientationPortrait = ({ width, height }: ScaledSize) =>\n height >= width;\nconst isOrientationLandscape = ({ width, height }: ScaledSize) =>\n width >= height;\n\nexport function useDeviceOrientation() {\n const screen = Dimensions.get('screen');\n const initialState = {\n portrait: isOrientationPortrait(screen),\n landscape: isOrientationLandscape(screen),\n };\n\n const [orientation, setOrientation] = useState(initialState);\n\n useEffect(() => {\n const onChange = ({ screen }: { screen: ScaledSize }) => {\n setOrientation({\n portrait: isOrientationPortrait(screen),\n landscape: isOrientationLandscape(screen),\n });\n };\n\n const subscription = Dimensions.addEventListener('change', onChange);\n\n return () => {\n if (typeof subscription?.remove === 'function') {\n subscription.remove();\n }\n };\n }, []);\n\n return orientation.portrait ? 'PORTRAIT' : 'LANDSCAPE';\n}\n","import { I18nManager, StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n container: {\n backgroundColor: 'white',\n borderRadius: 8,\n padding: 12,\n justifyContent: 'center',\n },\n textInput: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n alignItems: 'center',\n flex: 1,\n },\n input: {\n fontSize: 16,\n flex: 1,\n textAlign: I18nManager.isRTL ? 'right' : 'left',\n },\n label: {\n marginBottom: 4,\n fontSize: 16,\n },\n row: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n icon: {\n width: 20,\n height: 20,\n },\n});\n","/* eslint-disable @typescript-eslint/no-shadow */\nimport React, { useEffect, useState } from 'react';\nimport {\n Image,\n TextInput,\n TouchableOpacity,\n View,\n TouchableWithoutFeedback,\n StyleSheet,\n} from 'react-native';\nimport type { CTextInput } from './model';\nimport { styles } from './styles';\n\nconst ic_close = require('../../assets/close.png');\n\nconst defaultProps = {\n style: {},\n value: '',\n showIcon: true,\n currency: false,\n numeric: false,\n};\n\nconst TextInputComponent: CTextInput = (props) => {\n const {\n fontFamily,\n style,\n value,\n placeholderTextColor = '#000',\n placeholder = '',\n showIcon,\n inputStyle,\n iconStyle,\n onChangeText = (_value: string) => {},\n renderLeftIcon,\n renderRightIcon,\n } = props;\n\n const [text, setText] = useState('');\n\n useEffect(() => {\n if (value) {\n setText(value);\n }\n }, [value]);\n\n const onChange = (text: string) => {\n setText(text);\n onChangeText(text);\n };\n\n const _renderRightIcon = () => {\n if (showIcon) {\n if (renderRightIcon) {\n return renderRightIcon();\n }\n if (text.length > 0) {\n return (\n onChange('')}>\n \n \n );\n }\n return null;\n }\n return null;\n };\n\n const font = () => {\n if (fontFamily) {\n return {\n fontFamily: fontFamily,\n };\n } else {\n return {};\n }\n };\n\n return (\n \n \n \n {renderLeftIcon?.()}\n \n {_renderRightIcon()}\n \n \n \n );\n};\n\nTextInputComponent.defaultProps = defaultProps;\n\nexport default TextInputComponent;\n","import { I18nManager, StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n mainWrap: {\n justifyContent: 'center',\n },\n container: {\n flexShrink: 1,\n borderWidth: 0.5,\n borderColor: '#EEEEEE',\n backgroundColor: 'white',\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.2,\n shadowRadius: 1.41,\n elevation: 2,\n },\n flex1: {\n flex: 1,\n },\n flexShrink: {\n flexShrink: 1,\n },\n wrapTop: {\n justifyContent: 'flex-end',\n },\n dropdown: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: 35,\n },\n title: {\n marginVertical: 5,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n item: {\n padding: 17,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n textItem: {\n flex: 1,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n icon: {\n width: 20,\n height: 20,\n },\n input: {\n borderWidth: 0.5,\n borderColor: '#DDDDDD',\n paddingHorizontal: 8,\n marginBottom: 8,\n margin: 6,\n height: 45,\n },\n fullScreen: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","/* eslint-disable @typescript-eslint/no-shadow */\nimport _ from 'lodash';\nimport React, {\n JSXElementConstructor,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n Dimensions,\n FlatList,\n I18nManager,\n Image,\n Keyboard,\n KeyboardEvent,\n Modal,\n StyleSheet,\n Text,\n TouchableHighlight,\n TouchableWithoutFeedback,\n View,\n ViewStyle,\n StatusBar,\n} from 'react-native';\nimport { useDetectDevice } from '../../toolkits';\nimport { useDeviceOrientation } from '../../useDeviceOrientation';\nimport CInput from '../TextInput';\nimport { DropdownProps } from './model';\nimport { styles } from './styles';\n\nconst { isTablet } = useDetectDevice;\nconst ic_down = require('../../assets/down.png');\n\nconst statusBarHeight: number = StatusBar.currentHeight || 0;\n\nconst DropdownComponent: (\n props: DropdownProps\n) => ReactElement> | null =\n React.forwardRef((props, currentRef) => {\n const orientation = useDeviceOrientation();\n const {\n testID,\n itemTestIDField,\n onChange,\n style = {},\n containerStyle,\n placeholderStyle,\n selectedTextStyle,\n itemContainerStyle,\n itemTextStyle,\n inputSearchStyle,\n iconStyle,\n selectedTextProps = {},\n data = [],\n labelField,\n valueField,\n searchField,\n value,\n activeColor = '#F6F7F8',\n fontFamily,\n iconColor = 'gray',\n searchPlaceholder,\n placeholder = 'Select item',\n search = false,\n maxHeight = 340,\n minHeight = 0,\n disable = false,\n keyboardAvoiding = true,\n inverted = true,\n renderLeftIcon,\n renderRightIcon,\n renderItem,\n renderInputSearch,\n onFocus,\n onBlur,\n autoScroll = true,\n showsVerticalScrollIndicator = true,\n dropdownPosition = 'auto',\n flatListProps,\n searchQuery,\n backgroundColor,\n onChangeText,\n confirmSelectItem,\n onConfirmSelectItem,\n accessibilityLabel,\n itemAccessibilityLabelField,\n mode = 'default',\n closeModalWhenSelectedItem = true,\n excludeItems = [],\n excludeSearchItems = [],\n } = props;\n\n const ref = useRef(null);\n const refList = useRef(null);\n const [visible, setVisible] = useState(false);\n const [currentValue, setCurrentValue] = useState(null);\n const [listData, setListData] = useState(data);\n const [position, setPosition] = useState();\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n const [searchText, setSearchText] = useState('');\n\n const { width: W, height: H } = Dimensions.get('window');\n const styleContainerVertical: ViewStyle = useMemo(() => {\n return {\n backgroundColor: 'rgba(0,0,0,0.1)',\n alignItems: 'center',\n };\n }, []);\n const styleHorizontal: ViewStyle = useMemo(() => {\n return {\n width: orientation === 'LANDSCAPE' ? W / 2 : '100%',\n alignSelf: 'center',\n };\n }, [W, orientation]);\n\n useImperativeHandle(currentRef, () => {\n return { open: eventOpen, close: eventClose };\n });\n\n useEffect(() => {\n return eventClose;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const excludeData = useCallback(\n (data: any[]) => {\n if (excludeItems.length > 0) {\n const getData = _.differenceWith(\n data,\n excludeItems,\n (obj1, obj2) => _.get(obj1, valueField) === _.get(obj2, valueField)\n );\n return getData || [];\n } else {\n return data || [];\n }\n },\n [excludeItems, valueField]\n );\n\n useEffect(() => {\n const filterData = excludeData(data);\n setListData([...filterData]);\n if (searchText) {\n onSearch(searchText);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, searchText]);\n\n const eventOpen = () => {\n if (!disable) {\n setVisible(true);\n if (onFocus) {\n onFocus();\n }\n\n if (searchText.length > 0) {\n onSearch(searchText);\n }\n scrollIndex();\n }\n };\n\n const eventClose = useCallback(() => {\n if (!disable) {\n setVisible(false);\n if (onBlur) {\n onBlur();\n }\n }\n }, [disable, onBlur]);\n\n const font = useCallback(() => {\n if (fontFamily) {\n return {\n fontFamily: fontFamily,\n };\n } else {\n return {};\n }\n }, [fontFamily]);\n\n const _measure = useCallback(() => {\n if (ref && ref?.current) {\n ref.current.measureInWindow((pageX, pageY, width, height) => {\n let isFull = isTablet\n ? false\n : mode === 'modal' || orientation === 'LANDSCAPE';\n\n if (mode === 'auto') {\n isFull = false;\n }\n\n const top = isFull ? 20 : height + pageY + 2;\n const bottom = H - top + height;\n const left = I18nManager.isRTL ? W - width - pageX : pageX;\n\n setPosition({\n isFull,\n width: Math.floor(width),\n top: Math.floor(top + statusBarHeight),\n bottom: Math.floor(bottom - statusBarHeight),\n left: Math.floor(left),\n height: Math.floor(height),\n });\n });\n }\n }, [H, W, orientation, mode]);\n\n const onKeyboardDidShow = useCallback(\n (e: KeyboardEvent) => {\n _measure();\n setKeyboardHeight(e.endCoordinates.height);\n },\n [_measure]\n );\n\n const onKeyboardDidHide = useCallback(() => {\n setKeyboardHeight(0);\n _measure();\n }, [_measure]);\n\n useEffect(() => {\n const susbcriptionKeyboardDidShow = Keyboard.addListener(\n 'keyboardDidShow',\n onKeyboardDidShow\n );\n const susbcriptionKeyboardDidHide = Keyboard.addListener(\n 'keyboardDidHide',\n onKeyboardDidHide\n );\n\n return () => {\n if (typeof susbcriptionKeyboardDidShow?.remove === 'function') {\n susbcriptionKeyboardDidShow.remove();\n }\n\n if (typeof susbcriptionKeyboardDidHide?.remove === 'function') {\n susbcriptionKeyboardDidHide.remove();\n }\n };\n }, [onKeyboardDidHide, onKeyboardDidShow]);\n\n const getValue = useCallback(() => {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value;\n\n const getItem = data.filter((e) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n );\n\n if (getItem.length > 0) {\n setCurrentValue(getItem[0]);\n } else {\n setCurrentValue(null);\n }\n }, [data, value, valueField]);\n\n useEffect(() => {\n getValue();\n }, [value, data, getValue]);\n\n const scrollIndex = useCallback(() => {\n if (autoScroll && data.length > 0 && listData.length === data.length) {\n setTimeout(() => {\n if (refList && refList?.current) {\n const defaultValue =\n typeof value === 'object' ? _.get(value, valueField) : value;\n\n const index = _.findIndex(listData, (e: any) =>\n _.isEqual(defaultValue, _.get(e, valueField))\n );\n if (\n listData.length > 0 &&\n index > -1 &&\n index <= listData.length - 1\n ) {\n refList?.current?.scrollToIndex({\n index: index,\n animated: false,\n });\n }\n }\n }, 200);\n }\n }, [autoScroll, data.length, listData, value, valueField]);\n\n const showOrClose = useCallback(() => {\n if (!disable) {\n if (keyboardHeight > 0 && visible) {\n return Keyboard.dismiss();\n }\n\n _measure();\n setVisible(!visible);\n const filterData = excludeData(data);\n setListData(filterData);\n\n if (!visible) {\n if (onFocus) {\n onFocus();\n }\n } else {\n if (onBlur) {\n onBlur();\n }\n }\n if (searchText.length > 0) {\n onSearch(searchText);\n }\n scrollIndex();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disable,\n keyboardHeight,\n visible,\n _measure,\n data,\n searchText,\n scrollIndex,\n onFocus,\n onBlur,\n ]);\n\n const onSearch = useCallback(\n (text: string) => {\n if (text.length > 0) {\n const defaultFilterFunction = (e: any) => {\n const item = _.get(e, searchField || labelField)\n ?.toLowerCase()\n .replace(/\\s/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n const key = text\n .toLowerCase()\n .replace(/\\s/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n\n return item.indexOf(key) >= 0;\n };\n\n const propSearchFunction = (e: any) => {\n const labelText = _.get(e, searchField || labelField);\n\n return searchQuery?.(text, labelText);\n };\n\n const dataSearch = data.filter(\n searchQuery ? propSearchFunction : defaultFilterFunction\n );\n\n if (excludeSearchItems.length > 0 || excludeItems.length > 0) {\n const excludeSearchData = _.differenceWith(\n dataSearch,\n excludeSearchItems,\n (obj1, obj2) =>\n _.get(obj1, valueField) === _.get(obj2, valueField)\n );\n\n const filterData = excludeData(excludeSearchData);\n setListData(filterData);\n } else {\n setListData(dataSearch);\n }\n } else {\n const filterData = excludeData(data);\n setListData(filterData);\n }\n },\n [\n data,\n searchQuery,\n excludeSearchItems,\n excludeItems,\n searchField,\n labelField,\n valueField,\n excludeData,\n ]\n );\n\n const onSelect = useCallback(\n (item: any) => {\n if (confirmSelectItem && onConfirmSelectItem) {\n return onConfirmSelectItem(item);\n }\n\n if (onChangeText) {\n setSearchText('');\n onChangeText('');\n }\n onSearch('');\n setCurrentValue(item);\n onChange(item);\n if (closeModalWhenSelectedItem) {\n eventClose();\n }\n },\n [\n confirmSelectItem,\n eventClose,\n onChange,\n onChangeText,\n onConfirmSelectItem,\n onSearch,\n closeModalWhenSelectedItem,\n ]\n );\n\n const _renderDropdown = () => {\n const isSelected = currentValue && _.get(currentValue, valueField);\n return (\n \n \n {renderLeftIcon?.(visible)}\n \n {isSelected !== null\n ? _.get(currentValue, labelField)\n : placeholder}\n \n {renderRightIcon ? (\n renderRightIcon(visible)\n ) : (\n \n )}\n \n \n );\n };\n\n const _renderItem = useCallback(\n ({ item, index }: { item: any; index: number }) => {\n const isSelected = currentValue && _.get(currentValue, valueField);\n const selected = _.isEqual(_.get(item, valueField), isSelected);\n _.assign(item, { _index: index });\n return (\n onSelect(item)}\n >\n \n {renderItem ? (\n renderItem(item, selected)\n ) : (\n \n \n {_.get(item, labelField)}\n \n \n )}\n \n \n );\n },\n [\n accessibilityLabel,\n activeColor,\n currentValue,\n font,\n itemAccessibilityLabelField,\n itemContainerStyle,\n itemTestIDField,\n itemTextStyle,\n labelField,\n onSelect,\n renderItem,\n valueField,\n ]\n );\n\n const renderSearch = useCallback(() => {\n if (search) {\n if (renderInputSearch) {\n return renderInputSearch((text) => {\n if (onChangeText) {\n setSearchText(text);\n onChangeText(text);\n }\n onSearch(text);\n });\n } else {\n return (\n {\n if (onChangeText) {\n setSearchText(e);\n onChangeText(e);\n }\n onSearch(e);\n }}\n placeholderTextColor=\"gray\"\n iconStyle={[{ tintColor: iconColor }, iconStyle]}\n />\n );\n }\n }\n return null;\n }, [\n accessibilityLabel,\n font,\n iconColor,\n iconStyle,\n inputSearchStyle,\n onChangeText,\n onSearch,\n renderInputSearch,\n search,\n searchPlaceholder,\n testID,\n searchText,\n ]);\n\n const _renderList = useCallback(\n (isTopPosition: boolean) => {\n const isInverted = !inverted ? false : isTopPosition;\n\n const _renderListHelper = () => {\n return (\n index.toString()}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n />\n );\n };\n\n return (\n \n \n {isInverted && _renderListHelper()}\n {renderSearch()}\n {!isInverted && _renderListHelper()}\n \n \n );\n },\n [\n _renderItem,\n accessibilityLabel,\n flatListProps,\n listData,\n inverted,\n renderSearch,\n scrollIndex,\n showsVerticalScrollIndicator,\n testID,\n ]\n );\n\n const _renderModal = useCallback(() => {\n if (visible && position) {\n const { isFull, width, height, top, bottom, left } = position;\n\n const onAutoPosition = () => {\n if (keyboardHeight > 0) {\n return bottom < keyboardHeight + height;\n }\n\n return bottom < (search ? 150 : 100);\n };\n\n if (width && top && bottom) {\n const styleVertical: ViewStyle = {\n left: left,\n maxHeight: maxHeight,\n minHeight: minHeight,\n };\n const isTopPosition =\n dropdownPosition === 'auto'\n ? onAutoPosition()\n : dropdownPosition === 'top';\n\n let keyboardStyle: ViewStyle = {};\n\n let extendHeight = !isTopPosition ? top : bottom;\n if (\n keyboardAvoiding &&\n keyboardHeight > 0 &&\n isTopPosition &&\n dropdownPosition === 'auto'\n ) {\n extendHeight = keyboardHeight;\n }\n\n return (\n \n \n \n \n \n {_renderList(isTopPosition)}\n \n \n \n \n \n );\n }\n return null;\n }\n return null;\n }, [\n visible,\n search,\n position,\n keyboardHeight,\n maxHeight,\n minHeight,\n dropdownPosition,\n keyboardAvoiding,\n showOrClose,\n styleContainerVertical,\n backgroundColor,\n containerStyle,\n styleHorizontal,\n _renderList,\n ]);\n\n return (\n \n {_renderDropdown()}\n {_renderModal()}\n \n );\n });\n\nexport default DropdownComponent;\n","import { I18nManager, StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n mainWrap: {\n justifyContent: 'center',\n },\n container: {\n flexShrink: 1,\n backgroundColor: 'white',\n borderWidth: 0.5,\n borderColor: '#EEEEEE',\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.2,\n shadowRadius: 1.41,\n elevation: 2,\n },\n flex1: {\n flex: 1,\n },\n flexShrink: {\n flexShrink: 1,\n },\n wrapTop: {\n justifyContent: 'flex-end',\n },\n dropdown: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: 35,\n },\n dropdownInside: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: 35,\n },\n title: {\n marginVertical: 5,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n wrapItem: {\n marginBottom: 0.5,\n },\n item: {\n padding: 17,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n textItem: {\n flex: 1,\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n icon: {\n width: 20,\n height: 20,\n },\n input: {\n borderWidth: 0.5,\n borderColor: '#DDDDDD',\n paddingHorizontal: 8,\n marginBottom: 8,\n margin: 6,\n height: 45,\n },\n rowSelectedItem: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n flexWrap: 'wrap',\n },\n selectedItem: {\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 0.5,\n borderColor: 'gray',\n paddingHorizontal: 8,\n marginVertical: 6,\n marginRight: 8,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n selectedTextItem: {\n marginLeft: 5,\n color: 'gray',\n fontSize: 16,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n selectedTextLeftItem: {\n fontSize: 12,\n color: 'gray',\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n fullScreen: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","/* eslint-disable @typescript-eslint/no-shadow */\nimport _ from 'lodash';\nimport React, {\n JSXElementConstructor,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n Dimensions,\n FlatList,\n I18nManager,\n Image,\n Keyboard,\n KeyboardEvent,\n Modal,\n StyleSheet,\n Text,\n TouchableHighlight,\n TouchableWithoutFeedback,\n View,\n ViewStyle,\n StatusBar,\n} from 'react-native';\nimport { useDetectDevice } from '../../toolkits';\nimport { useDeviceOrientation } from '../../useDeviceOrientation';\nimport CInput from '../TextInput';\nimport { MultiSelectProps } from './model';\nimport { styles } from './styles';\n\nconst { isTablet } = useDetectDevice;\nconst ic_down = require('../../assets/down.png');\nconst statusBarHeight: number = StatusBar.currentHeight || 0;\n\nconst MultiSelectComponent: (\n props: MultiSelectProps\n) => ReactElement> | null =\n React.forwardRef((props, currentRef) => {\n const orientation = useDeviceOrientation();\n const {\n testID,\n itemTestIDField,\n onChange,\n data = [],\n value,\n style = {},\n labelField,\n valueField,\n searchField,\n selectedStyle,\n selectedTextStyle,\n itemContainerStyle,\n itemTextStyle,\n iconStyle,\n activeColor = '#F6F7F8',\n containerStyle,\n fontFamily,\n placeholderStyle,\n iconColor = 'gray',\n inputSearchStyle,\n searchPlaceholder,\n placeholder = 'Select item',\n search = false,\n maxHeight = 340,\n minHeight = 0,\n maxSelect,\n disable = false,\n keyboardAvoiding = true,\n inside = false,\n inverted = true,\n renderItem,\n renderLeftIcon,\n renderRightIcon,\n renderSelectedItem,\n renderInputSearch,\n onFocus,\n onBlur,\n showsVerticalScrollIndicator = true,\n dropdownPosition = 'auto',\n flatListProps,\n alwaysRenderSelectedItem = false,\n searchQuery,\n backgroundColor,\n onChangeText,\n confirmSelectItem,\n confirmUnSelectItem,\n onConfirmSelectItem,\n accessibilityLabel,\n itemAccessibilityLabelField,\n visibleSelectedItem = true,\n mode = 'default',\n excludeItems = [],\n excludeSearchItems = [],\n } = props;\n\n const ref = useRef(null);\n const [visible, setVisible] = useState(false);\n const [currentValue, setCurrentValue] = useState([]);\n const [listData, setListData] = useState(data);\n const [, setKey] = useState(Math.random());\n const [position, setPosition] = useState();\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n const [searchText, setSearchText] = useState('');\n\n const { width: W, height: H } = Dimensions.get('window');\n const styleContainerVertical: ViewStyle = useMemo(() => {\n return {\n backgroundColor: 'rgba(0,0,0,0.1)',\n alignItems: 'center',\n };\n }, []);\n const styleHorizontal: ViewStyle = useMemo(() => {\n return {\n width: orientation === 'LANDSCAPE' ? W / 2 : '100%',\n alignSelf: 'center',\n };\n }, [W, orientation]);\n\n useImperativeHandle(currentRef, () => {\n return { open: eventOpen, close: eventClose };\n });\n\n useEffect(() => {\n return eventClose;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const excludeData = useCallback(\n (data: any[]) => {\n if (excludeItems.length > 0) {\n const getData = _.differenceWith(\n data,\n excludeItems,\n (obj1, obj2) => _.get(obj1, valueField) === _.get(obj2, valueField)\n );\n return getData || [];\n } else {\n return data || [];\n }\n },\n [excludeItems, valueField]\n );\n\n useEffect(() => {\n const filterData = excludeData(data);\n setListData([...filterData]);\n\n if (searchText) {\n onSearch(searchText);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, searchText]);\n\n const eventOpen = () => {\n if (!disable) {\n setVisible(true);\n if (onFocus) {\n onFocus();\n }\n\n if (searchText.length > 0) {\n onSearch(searchText);\n }\n }\n };\n\n const eventClose = () => {\n if (!disable) {\n setVisible(false);\n if (onBlur) {\n onBlur();\n }\n }\n };\n\n const font = useCallback(() => {\n if (fontFamily) {\n return {\n fontFamily: fontFamily,\n };\n } else {\n return {};\n }\n }, [fontFamily]);\n\n const getValue = useCallback(() => {\n setCurrentValue(value ? [...value] : []);\n }, [value]);\n\n const _measure = useCallback(() => {\n if (ref && ref?.current) {\n ref.current.measureInWindow((pageX, pageY, width, height) => {\n let isFull = isTablet\n ? false\n : mode === 'modal' || orientation === 'LANDSCAPE';\n\n if (mode === 'auto') {\n isFull = false;\n }\n\n const top = isFull ? 20 : height + pageY + 2;\n const bottom = H - top + height;\n const left = I18nManager.isRTL ? W - width - pageX : pageX;\n\n setPosition({\n isFull,\n width: Math.floor(width),\n top: Math.floor(top + statusBarHeight),\n bottom: Math.floor(bottom - statusBarHeight),\n left: Math.floor(left),\n height: Math.floor(height),\n });\n });\n }\n }, [H, W, orientation, mode]);\n\n const onKeyboardDidShow = useCallback(\n (e: KeyboardEvent) => {\n _measure();\n setKeyboardHeight(e.endCoordinates.height);\n },\n [_measure]\n );\n\n const onKeyboardDidHide = useCallback(() => {\n setKeyboardHeight(0);\n _measure();\n }, [_measure]);\n\n useEffect(() => {\n const susbcriptionKeyboardDidShow = Keyboard.addListener(\n 'keyboardDidShow',\n onKeyboardDidShow\n );\n const susbcriptionKeyboardDidHide = Keyboard.addListener(\n 'keyboardDidHide',\n onKeyboardDidHide\n );\n\n return () => {\n if (typeof susbcriptionKeyboardDidShow?.remove === 'function') {\n susbcriptionKeyboardDidShow.remove();\n }\n\n if (typeof susbcriptionKeyboardDidHide?.remove === 'function') {\n susbcriptionKeyboardDidHide.remove();\n }\n };\n }, [onKeyboardDidHide, onKeyboardDidShow]);\n\n useEffect(() => {\n getValue();\n }, [getValue, value]);\n\n const showOrClose = useCallback(() => {\n if (!disable) {\n if (keyboardHeight > 0 && visible) {\n return Keyboard.dismiss();\n }\n\n _measure();\n setVisible(!visible);\n const filterData = excludeData(data);\n setListData(filterData);\n\n if (!visible) {\n if (onFocus) {\n onFocus();\n }\n } else {\n if (onBlur) {\n onBlur();\n }\n }\n\n if (searchText.length > 0) {\n onSearch(searchText);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disable,\n keyboardHeight,\n visible,\n _measure,\n data,\n searchText,\n onFocus,\n onBlur,\n ]);\n\n const onSearch = useCallback(\n (text: string) => {\n if (text.length > 0) {\n const defaultFilterFunction = (e: any) => {\n const item = _.get(e, searchField || labelField)\n ?.toLowerCase()\n .replace(/\\s/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n const key = text\n .toLowerCase()\n .replace(/\\s/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n\n return item.indexOf(key) >= 0;\n };\n\n const propSearchFunction = (e: any) => {\n const labelText = _.get(e, searchField || labelField);\n\n return searchQuery?.(text, labelText);\n };\n\n const dataSearch = data.filter(\n searchQuery ? propSearchFunction : defaultFilterFunction\n );\n\n if (excludeSearchItems.length > 0 || excludeItems.length > 0) {\n const excludeSearchData = _.differenceWith(\n dataSearch,\n excludeSearchItems,\n (obj1, obj2) =>\n _.get(obj1, valueField) === _.get(obj2, valueField)\n );\n\n const filterData = excludeData(excludeSearchData);\n setListData(filterData);\n } else {\n setListData(dataSearch);\n }\n } else {\n const filterData = excludeData(data);\n setListData(filterData);\n }\n },\n [\n data,\n searchQuery,\n excludeSearchItems,\n excludeItems,\n searchField,\n labelField,\n valueField,\n excludeData,\n ]\n );\n\n const onSelect = useCallback(\n (item: any) => {\n const newCurrentValue = [...currentValue];\n const index = newCurrentValue.findIndex(\n (e) => e === _.get(item, valueField)\n );\n if (index > -1) {\n newCurrentValue.splice(index, 1);\n } else {\n if (maxSelect) {\n if (newCurrentValue.length < maxSelect) {\n newCurrentValue.push(_.get(item, valueField));\n }\n } else {\n newCurrentValue.push(_.get(item, valueField));\n }\n }\n\n if (onConfirmSelectItem) {\n if (index > -1) {\n if (confirmUnSelectItem) {\n onConfirmSelectItem(newCurrentValue);\n } else {\n onChange(newCurrentValue);\n }\n } else {\n if (confirmSelectItem) {\n onConfirmSelectItem(newCurrentValue);\n } else {\n onChange(newCurrentValue);\n }\n }\n } else {\n onChange(newCurrentValue);\n }\n\n setKey(Math.random());\n },\n [\n confirmSelectItem,\n confirmUnSelectItem,\n currentValue,\n maxSelect,\n onChange,\n onConfirmSelectItem,\n valueField,\n ]\n );\n\n const _renderDropdown = () => {\n return (\n \n \n {renderLeftIcon?.(visible)}\n \n {placeholder}\n \n {renderRightIcon ? (\n renderRightIcon(visible)\n ) : (\n \n )}\n \n \n );\n };\n\n const checkSelected = useCallback(\n (item: any) => {\n const index = currentValue.findIndex(\n (e) => e === _.get(item, valueField)\n );\n return index > -1;\n },\n [currentValue, valueField]\n );\n\n const _renderItem = useCallback(\n ({ item, index }: { item: any; index: number }) => {\n const selected = checkSelected(item);\n _.assign(item, { _index: index });\n return (\n onSelect(item)}\n >\n \n {renderItem ? (\n renderItem(item, selected)\n ) : (\n \n \n {_.get(item, labelField)}\n \n \n )}\n \n \n );\n },\n [\n accessibilityLabel,\n activeColor,\n checkSelected,\n font,\n itemAccessibilityLabelField,\n itemContainerStyle,\n itemTestIDField,\n itemTextStyle,\n labelField,\n onSelect,\n renderItem,\n ]\n );\n\n const renderSearch = useCallback(() => {\n if (search) {\n if (renderInputSearch) {\n return renderInputSearch((text) => {\n if (onChangeText) {\n setSearchText(text);\n onChangeText(text);\n }\n onSearch(text);\n });\n } else {\n return (\n {\n if (onChangeText) {\n setSearchText(e);\n onChangeText(e);\n }\n onSearch(e);\n }}\n placeholderTextColor=\"gray\"\n iconStyle={[{ tintColor: iconColor }, iconStyle]}\n />\n );\n }\n }\n return null;\n }, [\n accessibilityLabel,\n font,\n iconColor,\n iconStyle,\n inputSearchStyle,\n onChangeText,\n onSearch,\n renderInputSearch,\n search,\n searchPlaceholder,\n testID,\n ]);\n\n const _renderList = useCallback(\n (isTopPosition: boolean) => {\n const isInverted = !inverted ? false : isTopPosition;\n\n const _renderListHelper = () => {\n return (\n index.toString()}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n />\n );\n };\n\n return (\n \n \n {isInverted && _renderListHelper()}\n {renderSearch()}\n {!isInverted && _renderListHelper()}\n \n \n );\n },\n [\n _renderItem,\n accessibilityLabel,\n flatListProps,\n listData,\n inverted,\n renderSearch,\n showsVerticalScrollIndicator,\n testID,\n ]\n );\n\n const _renderModal = useCallback(() => {\n if (visible && position) {\n const { isFull, width, height, top, bottom, left } = position;\n\n const onAutoPosition = () => {\n if (keyboardHeight > 0) {\n return bottom < keyboardHeight + height;\n }\n\n return bottom < (search ? 150 : 100);\n };\n\n if (width && top && bottom) {\n const styleVertical: ViewStyle = {\n left: left,\n maxHeight: maxHeight,\n minHeight: minHeight,\n };\n const isTopPosition =\n dropdownPosition === 'auto'\n ? onAutoPosition()\n : dropdownPosition === 'top';\n\n let keyboardStyle: ViewStyle = {};\n\n let extendHeight = !isTopPosition ? top : bottom;\n if (\n keyboardAvoiding &&\n keyboardHeight > 0 &&\n isTopPosition &&\n dropdownPosition === 'auto'\n ) {\n extendHeight = keyboardHeight;\n }\n\n return (\n \n \n \n \n \n {_renderList(isTopPosition)}\n \n \n \n \n \n );\n }\n return null;\n }\n return null;\n }, [\n visible,\n search,\n position,\n keyboardHeight,\n maxHeight,\n minHeight,\n dropdownPosition,\n keyboardAvoiding,\n showOrClose,\n styleContainerVertical,\n backgroundColor,\n containerStyle,\n styleHorizontal,\n _renderList,\n ]);\n\n const unSelect = (item: any) => {\n if (!disable) {\n onSelect(item);\n }\n };\n\n const _renderItemSelected = (inside: boolean) => {\n const list = data.filter((e: any) => {\n const check = value?.indexOf(_.get(e, valueField));\n if (check !== -1) {\n return e;\n }\n });\n\n return (\n \n {list.map((e) => {\n if (renderSelectedItem) {\n return (\n unSelect(e)}\n >\n {renderSelectedItem(e, () => {\n unSelect(e);\n })}\n \n );\n } else {\n return (\n unSelect(e)}\n >\n \n \n {_.get(e, labelField)}\n \n \n ⓧ\n \n \n \n );\n }\n })}\n \n );\n };\n\n const _renderInside = () => {\n return (\n \n {_renderDropdownInside()}\n {_renderModal()}\n \n );\n };\n\n const _renderDropdownInside = () => {\n return (\n \n \n {renderLeftIcon?.()}\n {value && value?.length > 0 ? (\n _renderItemSelected(true)\n ) : (\n \n {placeholder}\n \n )}\n {renderRightIcon ? (\n renderRightIcon()\n ) : (\n \n )}\n \n \n );\n };\n\n if (inside) {\n return _renderInside();\n }\n\n return (\n <>\n \n {_renderDropdown()}\n {_renderModal()}\n \n {(!visible || alwaysRenderSelectedItem) &&\n visibleSelectedItem &&\n _renderItemSelected(false)}\n \n );\n });\n\nexport default MultiSelectComponent;\n","import { I18nManager, StyleSheet } from 'react-native';\n\nexport const styles = StyleSheet.create({\n dropdown: {\n width: 58,\n paddingHorizontal: 6,\n height: 26,\n },\n container: {\n width: 60,\n },\n item: {\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n padding: 6,\n alignItems: 'center',\n },\n image: {\n width: 20,\n height: 20,\n marginRight: 3,\n marginVertical: 4,\n },\n selectedTextStyle: {\n flex: 1,\n fontSize: 12,\n writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',\n },\n});\n","import React, {\n useImperativeHandle,\n useMemo,\n useRef,\n ReactElement,\n JSXElementConstructor,\n} from 'react';\nimport { Image, View, Text } from 'react-native';\nimport Dropdown from '../Dropdown';\nimport { SelectCountryProps } from './model';\nimport { styles } from './styles';\n\nconst SelectCountryComponent: (\n props: SelectCountryProps\n) => ReactElement> | null =\n React.forwardRef((props, currentRef) => {\n const {\n data,\n value,\n valueField,\n labelField,\n imageField,\n selectedTextStyle,\n imageStyle,\n } = props;\n const ref: any = useRef(null);\n\n useImperativeHandle(currentRef, () => {\n return { open: eventOpen, close: eventClose };\n });\n\n const eventOpen = () => {\n ref.current.open();\n };\n\n const eventClose = () => {\n ref.current.close();\n };\n\n const _renderItem = (item: any) => {\n return (\n \n \n \n {item[labelField]}\n \n \n );\n };\n\n const selectItem: any = useMemo(() => {\n const index = data.findIndex((e: any) => e[valueField] === value);\n return data[index];\n }, [data, valueField, value]);\n\n return (\n {\n if (selectItem?.image) {\n return (\n \n );\n } else {\n return null;\n }\n }}\n />\n );\n });\n\nexport default SelectCountryComponent;\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"animating\", \"color\", \"hidesWhenStopped\", \"size\", \"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\n\nvar createSvgCircle = style => /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"16\",\n cy: \"16\",\n fill: \"none\",\n r: \"14\",\n strokeWidth: \"4\",\n style: style\n});\n\nvar ActivityIndicator = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var _props$animating = props.animating,\n animating = _props$animating === void 0 ? true : _props$animating,\n _props$color = props.color,\n color = _props$color === void 0 ? '#1976D2' : _props$color,\n _props$hidesWhenStopp = props.hidesWhenStopped,\n hidesWhenStopped = _props$hidesWhenStopp === void 0 ? true : _props$hidesWhenStopp,\n _props$size = props.size,\n size = _props$size === void 0 ? 'small' : _props$size,\n style = props.style,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n var svg = /*#__PURE__*/React.createElement(\"svg\", {\n height: \"100%\",\n viewBox: \"0 0 32 32\",\n width: \"100%\"\n }, createSvgCircle({\n stroke: color,\n opacity: 0.2\n }), createSvgCircle({\n stroke: color,\n strokeDasharray: 80,\n strokeDashoffset: 60\n }));\n return /*#__PURE__*/React.createElement(View, _extends({}, other, {\n accessibilityRole: \"progressbar\",\n accessibilityValueMax: 1,\n accessibilityValueMin: 0,\n ref: forwardedRef,\n style: [styles.container, style]\n }), /*#__PURE__*/React.createElement(View, {\n children: svg,\n style: [typeof size === 'number' ? {\n height: size,\n width: size\n } : indicatorSizes[size], styles.animation, !animating && styles.animationPause, !animating && hidesWhenStopped && styles.hidesWhenStopped]\n }));\n});\nActivityIndicator.displayName = 'ActivityIndicator';\nvar styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center'\n },\n hidesWhenStopped: {\n visibility: 'hidden'\n },\n animation: {\n animationDuration: '0.75s',\n animationKeyframes: [{\n '0%': {\n transform: [{\n rotate: '0deg'\n }]\n },\n '100%': {\n transform: [{\n rotate: '360deg'\n }]\n }\n }],\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite'\n },\n animationPause: {\n animationPlayState: 'paused'\n }\n});\nvar indicatorSizes = StyleSheet.create({\n small: {\n width: 20,\n height: 20\n },\n large: {\n width: 36,\n height: 36\n }\n});\nexport default ActivityIndicator;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport NativeAnimatedNonTurboModule from './NativeAnimatedModule';\nimport NativeAnimatedTurboModule from './NativeAnimatedTurboModule';\nimport NativeEventEmitter from '../NativeEventEmitter';\nimport Platform from '../../../exports/Platform';\nimport invariant from 'fbjs/lib/invariant'; // TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.\n\nvar NativeAnimatedModule = Platform.OS === 'ios' && global.RN$Bridgeless ? NativeAnimatedTurboModule : NativeAnimatedNonTurboModule;\nvar __nativeAnimatedNodeTagCount = 1;\n/* used for animated nodes */\n\nvar __nativeAnimationIdCount = 1;\n/* used for started animations */\n\nvar nativeEventEmitter;\nvar waitingForQueuedOperations = new Set();\nvar queueOperations = false;\nvar queue = [];\n/**\n * Simple wrappers around NativeAnimatedModule to provide flow and autocomplete support for\n * the native module methods\n */\n\nvar API = {\n getValue: function getValue(tag, saveValueCallback) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n if (NativeAnimatedModule.getValue) {\n NativeAnimatedModule.getValue(tag, saveValueCallback);\n }\n },\n setWaitingForIdentifier: function setWaitingForIdentifier(id) {\n waitingForQueuedOperations.add(id);\n queueOperations = true;\n },\n unsetWaitingForIdentifier: function unsetWaitingForIdentifier(id) {\n waitingForQueuedOperations.delete(id);\n\n if (waitingForQueuedOperations.size === 0) {\n queueOperations = false;\n API.disableQueue();\n }\n },\n disableQueue: function disableQueue() {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n if (Platform.OS === 'android') {\n NativeAnimatedModule.startOperationBatch();\n }\n\n for (var q = 0, l = queue.length; q < l; q++) {\n queue[q]();\n }\n\n queue.length = 0;\n\n if (Platform.OS === 'android') {\n NativeAnimatedModule.finishOperationBatch();\n }\n },\n queueOperation: fn => {\n if (queueOperations) {\n queue.push(fn);\n } else {\n fn();\n }\n },\n createAnimatedNode: function createAnimatedNode(tag, config) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.createAnimatedNode(tag, config));\n },\n startListeningToAnimatedNodeValue: function startListeningToAnimatedNodeValue(tag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.startListeningToAnimatedNodeValue(tag));\n },\n stopListeningToAnimatedNodeValue: function stopListeningToAnimatedNodeValue(tag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag));\n },\n connectAnimatedNodes: function connectAnimatedNodes(parentTag, childTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag));\n },\n disconnectAnimatedNodes: function disconnectAnimatedNodes(parentTag, childTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag));\n },\n startAnimatingNode: function startAnimatingNode(animationId, nodeTag, config, endCallback) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.startAnimatingNode(animationId, nodeTag, config, endCallback));\n },\n stopAnimation: function stopAnimation(animationId) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.stopAnimation(animationId));\n },\n setAnimatedNodeValue: function setAnimatedNodeValue(nodeTag, value) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value));\n },\n setAnimatedNodeOffset: function setAnimatedNodeOffset(nodeTag, offset) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset));\n },\n flattenAnimatedNodeOffset: function flattenAnimatedNodeOffset(nodeTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag));\n },\n extractAnimatedNodeOffset: function extractAnimatedNodeOffset(nodeTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag));\n },\n connectAnimatedNodeToView: function connectAnimatedNodeToView(nodeTag, viewTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag));\n },\n disconnectAnimatedNodeFromView: function disconnectAnimatedNodeFromView(nodeTag, viewTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag));\n },\n restoreDefaultValues: function restoreDefaultValues(nodeTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available'); // Backwards compat with older native runtimes, can be removed later.\n\n if (NativeAnimatedModule.restoreDefaultValues != null) {\n API.queueOperation(() => NativeAnimatedModule.restoreDefaultValues(nodeTag));\n }\n },\n dropAnimatedNode: function dropAnimatedNode(tag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.dropAnimatedNode(tag));\n },\n addAnimatedEventToView: function addAnimatedEventToView(viewTag, eventName, eventMapping) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.addAnimatedEventToView(viewTag, eventName, eventMapping));\n },\n\n removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag) {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n API.queueOperation(() => NativeAnimatedModule.removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag));\n }\n\n};\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\n\nvar SUPPORTED_STYLES = {\n opacity: true,\n transform: true,\n borderRadius: true,\n borderBottomEndRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n borderBottomStartRadius: true,\n borderTopEndRadius: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderTopStartRadius: true,\n elevation: true,\n zIndex: true,\n\n /* ios styles */\n shadowOpacity: true,\n shadowRadius: true,\n\n /* legacy android transform properties */\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true\n};\nvar SUPPORTED_TRANSFORMS = {\n translateX: true,\n translateY: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n rotate: true,\n rotateX: true,\n rotateY: true,\n rotateZ: true,\n perspective: true\n};\nvar SUPPORTED_INTERPOLATION_PARAMS = {\n inputRange: true,\n outputRange: true,\n extrapolate: true,\n extrapolateRight: true,\n extrapolateLeft: true\n};\n\nfunction addWhitelistedStyleProp(prop) {\n SUPPORTED_STYLES[prop] = true;\n}\n\nfunction addWhitelistedTransformProp(prop) {\n SUPPORTED_TRANSFORMS[prop] = true;\n}\n\nfunction addWhitelistedInterpolationParam(param) {\n SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nfunction validateTransform(configs) {\n configs.forEach(config => {\n if (!SUPPORTED_TRANSFORMS.hasOwnProperty(config.property)) {\n throw new Error(\"Property '\" + config.property + \"' is not supported by native animated module\");\n }\n });\n}\n\nfunction validateStyles(styles) {\n for (var _key in styles) {\n if (!SUPPORTED_STYLES.hasOwnProperty(_key)) {\n throw new Error(\"Style property '\" + _key + \"' is not supported by native animated module\");\n }\n }\n}\n\nfunction validateInterpolation(config) {\n for (var _key2 in config) {\n if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(_key2)) {\n throw new Error(\"Interpolation property '\" + _key2 + \"' is not supported by native animated module\");\n }\n }\n}\n\nfunction generateNewNodeTag() {\n return __nativeAnimatedNodeTagCount++;\n}\n\nexport function generateNewAnimationId() {\n return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule() {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nvar _warnedMissingNativeAnimated = false;\nexport function shouldUseNativeDriver(config) {\n if (config.useNativeDriver == null) {\n console.warn('Animated: `useNativeDriver` was not specified. This is a required ' + 'option and must be explicitly set to `true` or `false`');\n }\n\n if (config.useNativeDriver === true && !NativeAnimatedModule) {\n if (!_warnedMissingNativeAnimated) {\n console.warn('Animated: `useNativeDriver` is not supported because the native ' + 'animated module is missing. Falling back to JS-based animation. To ' + 'resolve this, add `RCTAnimation` module to this app, or remove ' + '`useNativeDriver`. ' + 'Make sure to run `pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md');\n _warnedMissingNativeAnimated = true;\n }\n\n return false;\n }\n\n return config.useNativeDriver || false;\n}\n\nfunction transformDataType(value) {\n // Change the string type to number type so we can reuse the same logic in\n // iOS and Android platform\n if (typeof value !== 'string') {\n return value;\n }\n\n if (/deg$/.test(value)) {\n var degrees = parseFloat(value) || 0;\n var radians = degrees * Math.PI / 180.0;\n return radians;\n } else {\n return value;\n }\n}\n\nexport default {\n API,\n addWhitelistedStyleProp,\n addWhitelistedTransformProp,\n addWhitelistedInterpolationParam,\n validateStyles,\n validateTransform,\n validateInterpolation,\n generateNewNodeTag,\n generateNewAnimationId,\n assertNativeAnimatedModule,\n shouldUseNativeDriver,\n transformDataType,\n\n // $FlowExpectedError - unsafe getter lint suppresion\n get nativeEventEmitter() {\n if (!nativeEventEmitter) {\n nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);\n }\n\n return nativeEventEmitter;\n }\n\n};","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport invariant from 'fbjs/lib/invariant';\nexport function get(name) {\n return null;\n}\nexport function getEnforcing(name) {\n var module = get(name);\n invariant(module != null, \"TurboModuleRegistry.getEnforcing(...): '\" + name + \"' could not be found. \" + 'Verify that a module by this name is registered in the native binary.');\n return module;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nvar NativeAnimatedAPI = NativeAnimatedHelper.API;\nimport invariant from 'fbjs/lib/invariant';\nvar _uniqueId = 1; // Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\n\nclass AnimatedNode {\n __attach() {}\n\n __detach() {\n if (this.__isNative && this.__nativeTag != null) {\n NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag);\n this.__nativeTag = undefined;\n }\n }\n\n __getValue() {}\n\n __getAnimatedValue() {\n return this.__getValue();\n }\n\n __addChild(child) {}\n\n __removeChild(child) {}\n\n __getChildren() {\n return [];\n }\n /* Methods and props used by native Animated impl */\n\n\n constructor() {\n this._listeners = {};\n }\n\n __makeNative() {\n if (!this.__isNative) {\n throw new Error('This node cannot be made a \"native\" animated node');\n }\n\n if (this.hasListeners()) {\n this._startListeningToNativeValueUpdates();\n }\n }\n /**\n * Adds an asynchronous listener to the value so you can observe updates from\n * animations. This is useful because there is no way to\n * synchronously read the value because it might be driven natively.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#addlistener\n */\n\n\n addListener(callback) {\n var id = String(_uniqueId++);\n this._listeners[id] = callback;\n\n if (this.__isNative) {\n this._startListeningToNativeValueUpdates();\n }\n\n return id;\n }\n /**\n * Unregister a listener. The `id` param shall match the identifier\n * previously returned by `addListener()`.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#removelistener\n */\n\n\n removeListener(id) {\n delete this._listeners[id];\n\n if (this.__isNative && !this.hasListeners()) {\n this._stopListeningForNativeValueUpdates();\n }\n }\n /**\n * Remove all registered listeners.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#removealllisteners\n */\n\n\n removeAllListeners() {\n this._listeners = {};\n\n if (this.__isNative) {\n this._stopListeningForNativeValueUpdates();\n }\n }\n\n hasListeners() {\n return !!Object.keys(this._listeners).length;\n }\n\n _startListeningToNativeValueUpdates() {\n if (this.__nativeAnimatedValueListener && !this.__shouldUpdateListenersForNewNativeTag) {\n return;\n }\n\n if (this.__shouldUpdateListenersForNewNativeTag) {\n this.__shouldUpdateListenersForNewNativeTag = false;\n\n this._stopListeningForNativeValueUpdates();\n }\n\n NativeAnimatedAPI.startListeningToAnimatedNodeValue(this.__getNativeTag());\n this.__nativeAnimatedValueListener = NativeAnimatedHelper.nativeEventEmitter.addListener('onAnimatedValueUpdate', data => {\n if (data.tag !== this.__getNativeTag()) {\n return;\n }\n\n this._onAnimatedValueUpdateReceived(data.value);\n });\n }\n\n _onAnimatedValueUpdateReceived(value) {\n this.__callListeners(value);\n }\n\n __callListeners(value) {\n for (var _key in this._listeners) {\n this._listeners[_key]({\n value\n });\n }\n }\n\n _stopListeningForNativeValueUpdates() {\n if (!this.__nativeAnimatedValueListener) {\n return;\n }\n\n this.__nativeAnimatedValueListener.remove();\n\n this.__nativeAnimatedValueListener = null;\n NativeAnimatedAPI.stopListeningToAnimatedNodeValue(this.__getNativeTag());\n }\n\n __getNativeTag() {\n var _this$__nativeTag;\n\n NativeAnimatedHelper.assertNativeAnimatedModule();\n invariant(this.__isNative, 'Attempt to get native tag from node not marked as \"native\"');\n var nativeTag = (_this$__nativeTag = this.__nativeTag) !== null && _this$__nativeTag !== void 0 ? _this$__nativeTag : NativeAnimatedHelper.generateNewNodeTag();\n\n if (this.__nativeTag == null) {\n this.__nativeTag = nativeTag;\n NativeAnimatedHelper.API.createAnimatedNode(nativeTag, this.__getNativeConfig());\n this.__shouldUpdateListenersForNewNativeTag = true;\n }\n\n return nativeTag;\n }\n\n __getNativeConfig() {\n throw new Error('This JS animated node type cannot be used as native animated node');\n }\n\n toJSON() {\n return this.__getValue();\n }\n\n}\n\nexport default AnimatedNode;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport AnimatedNode from './AnimatedNode';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\n\nclass AnimatedWithChildren extends AnimatedNode {\n constructor() {\n super();\n this._children = [];\n }\n\n __makeNative() {\n if (!this.__isNative) {\n this.__isNative = true;\n\n for (var _iterator = _createForOfIteratorHelperLoose(this._children), _step; !(_step = _iterator()).done;) {\n var child = _step.value;\n\n child.__makeNative();\n\n NativeAnimatedHelper.API.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n }\n }\n\n super.__makeNative();\n }\n\n __addChild(child) {\n if (this._children.length === 0) {\n this.__attach();\n }\n\n this._children.push(child);\n\n if (this.__isNative) {\n // Only accept \"native\" animated nodes as children\n child.__makeNative();\n\n NativeAnimatedHelper.API.connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n }\n }\n\n __removeChild(child) {\n var index = this._children.indexOf(child);\n\n if (index === -1) {\n console.warn(\"Trying to remove a child that doesn't exist\");\n return;\n }\n\n if (this.__isNative && child.__isNative) {\n NativeAnimatedHelper.API.disconnectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n }\n\n this._children.splice(index, 1);\n\n if (this._children.length === 0) {\n this.__detach();\n }\n }\n\n __getChildren() {\n return this._children;\n }\n\n __callListeners(value) {\n super.__callListeners(value);\n\n if (!this.__isNative) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this._children), _step2; !(_step2 = _iterator2()).done;) {\n var child = _step2.value;\n\n if (child.__getValue) {\n child.__callListeners(child.__getValue());\n }\n }\n }\n }\n\n}\n\nexport default AnimatedWithChildren;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n\n/* eslint no-bitwise: 0 */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nimport invariant from 'fbjs/lib/invariant';\nimport normalizeColor from 'normalize-css-color';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar linear = t => t;\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\n\n\nfunction createInterpolation(config) {\n if (config.outputRange && typeof config.outputRange[0] === 'string') {\n return createInterpolationFromStringOutputRange(config);\n }\n\n var outputRange = config.outputRange;\n checkInfiniteRange('outputRange', outputRange);\n var inputRange = config.inputRange;\n checkInfiniteRange('inputRange', inputRange);\n checkValidInputRange(inputRange);\n invariant(inputRange.length === outputRange.length, 'inputRange (' + inputRange.length + ') and outputRange (' + outputRange.length + ') must have the same length');\n var easing = config.easing || linear;\n var extrapolateLeft = 'extend';\n\n if (config.extrapolateLeft !== undefined) {\n extrapolateLeft = config.extrapolateLeft;\n } else if (config.extrapolate !== undefined) {\n extrapolateLeft = config.extrapolate;\n }\n\n var extrapolateRight = 'extend';\n\n if (config.extrapolateRight !== undefined) {\n extrapolateRight = config.extrapolateRight;\n } else if (config.extrapolate !== undefined) {\n extrapolateRight = config.extrapolate;\n }\n\n return input => {\n invariant(typeof input === 'number', 'Cannot interpolation an input which is not a number');\n var range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight);\n };\n}\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight) {\n var result = input; // Extrapolate\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {// noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {// noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (input <= inputMin) {\n return outputMin;\n }\n\n return outputMax;\n } // Input Range\n\n\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n } // Easing\n\n\n result = easing(result); // Output Range\n\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n}\n\nfunction colorToRgba(input) {\n var normalizedColor = normalizeColor(input);\n\n if (normalizedColor === null || typeof normalizedColor !== 'number') {\n return input;\n }\n\n normalizedColor = normalizedColor || 0;\n var r = (normalizedColor & 0xff000000) >>> 24;\n var g = (normalizedColor & 0x00ff0000) >>> 16;\n var b = (normalizedColor & 0x0000ff00) >>> 8;\n var a = (normalizedColor & 0x000000ff) / 255;\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n}\n\nvar stringShapeRegex = /[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][+-]?\\d+)?/g;\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n */\n\nfunction createInterpolationFromStringOutputRange(config) {\n var outputRange = config.outputRange;\n invariant(outputRange.length >= 2, 'Bad output range');\n outputRange = outputRange.map(colorToRgba);\n checkPattern(outputRange); // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n\n /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n * guard against this possibility.\n */\n\n var outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n /* $FlowFixMe(>=0.18.0): `value.match()` can return `null`. Need to guard\n * against this possibility.\n */\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n var interpolations = outputRange[0].match(stringShapeRegex)\n /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need\n * to guard against this possibility. */\n .map((value, i) => {\n return createInterpolation(_objectSpread(_objectSpread({}, config), {}, {\n outputRange: outputRanges[i]\n }));\n }); // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n // round the opacity (4th column).\n\n var shouldRound = isRgbOrRgba(outputRange[0]);\n return input => {\n var i = 0; // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n\n return outputRange[0].replace(stringShapeRegex, () => {\n var val = +interpolations[i++](input);\n\n if (shouldRound) {\n val = i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000;\n }\n\n return String(val);\n });\n };\n}\n\nfunction isRgbOrRgba(range) {\n return typeof range === 'string' && range.startsWith('rgb');\n}\n\nfunction checkPattern(arr) {\n var pattern = arr[0].replace(stringShapeRegex, '');\n\n for (var i = 1; i < arr.length; ++i) {\n invariant(pattern === arr[i].replace(stringShapeRegex, ''), 'invalid pattern ' + arr[0] + ' and ' + arr[i]);\n }\n}\n\nfunction findRange(input, inputRange) {\n var i;\n\n for (i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n\n return i - 1;\n}\n\nfunction checkValidInputRange(arr) {\n invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n\n for (var i = 1; i < arr.length; ++i) {\n invariant(arr[i] >= arr[i - 1],\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly\n * convert to a string, like undefined, null, and object, etc. If you really\n * mean this implicit string conversion, you can do something like\n * String(myThing)\n */\n 'inputRange must be monotonically non-decreasing ' + arr);\n }\n}\n\nfunction checkInfiniteRange(name, arr) {\n invariant(arr.length >= 2, name + ' must have at least 2 elements');\n invariant(arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly convert\n * to a string, like undefined, null, and object, etc. If you really mean\n * this implicit string conversion, you can do something like\n * String(myThing)\n */\n name + 'cannot be ]-infinity;+infinity[ ' + arr);\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n // Export for testing.\n constructor(parent, config) {\n super();\n this._parent = parent;\n this._config = config;\n this._interpolation = createInterpolation(config);\n }\n\n __makeNative() {\n this._parent.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n var parentValue = this._parent.__getValue();\n\n invariant(typeof parentValue === 'number', 'Cannot interpolate an input which is not a number.');\n return this._interpolation(parentValue);\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._parent.__addChild(this);\n }\n\n __detach() {\n this._parent.__removeChild(this);\n\n super.__detach();\n }\n\n __transformDataType(range) {\n return range.map(NativeAnimatedHelper.transformDataType);\n }\n\n __getNativeConfig() {\n if (__DEV__) {\n NativeAnimatedHelper.validateInterpolation(this._config);\n }\n\n return {\n inputRange: this._config.inputRange,\n // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here\n\n /* $FlowFixMe(>=0.38.0) - Flow error detected during the deployment of\n * v0.38.0. To see the error, remove this comment and run flow */\n outputRange: this.__transformDataType(this._config.outputRange),\n extrapolateLeft: this._config.extrapolateLeft || this._config.extrapolate || 'extend',\n extrapolateRight: this._config.extrapolateRight || this._config.extrapolate || 'extend',\n type: 'interpolation'\n };\n }\n\n}\n\nAnimatedInterpolation.__createInterpolation = createInterpolation;\nexport default AnimatedInterpolation;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport InteractionManager from '../../../../exports/InteractionManager';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nvar NativeAnimatedAPI = NativeAnimatedHelper.API;\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\n\nfunction _flush(rootNode) {\n var animatedStyles = new Set();\n\n function findAnimatedStyles(node) {\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n if (typeof node.update === 'function') {\n animatedStyles.add(node);\n } else {\n node.__getChildren().forEach(findAnimatedStyles);\n }\n }\n\n findAnimatedStyles(rootNode);\n /* $FlowFixMe */\n\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n/**\n * Standard value for driving animations. One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time. Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n *\n * See https://reactnative.dev/docs/animatedvalue.html\n */\n\n\nclass AnimatedValue extends AnimatedWithChildren {\n constructor(value) {\n super();\n\n if (typeof value !== 'number') {\n throw new Error('AnimatedValue: Attempting to set value to undefined');\n }\n\n this._startingValue = this._value = value;\n this._offset = 0;\n this._animation = null;\n }\n\n __detach() {\n if (this.__isNative) {\n NativeAnimatedAPI.getValue(this.__getNativeTag(), value => {\n this._value = value;\n });\n }\n\n this.stopAnimation();\n\n super.__detach();\n }\n\n __getValue() {\n return this._value + this._offset;\n }\n /**\n * Directly set the value. This will stop any animations running on the value\n * and update all the bound properties.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#setvalue\n */\n\n\n setValue(value) {\n if (this._animation) {\n this._animation.stop();\n\n this._animation = null;\n }\n\n this._updateValue(value, !this.__isNative\n /* don't perform a flush for natively driven values */\n );\n\n if (this.__isNative) {\n NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value);\n }\n }\n /**\n * Sets an offset that is applied on top of whatever value is set, whether via\n * `setValue`, an animation, or `Animated.event`. Useful for compensating\n * things like the start of a pan gesture.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#setoffset\n */\n\n\n setOffset(offset) {\n this._offset = offset;\n\n if (this.__isNative) {\n NativeAnimatedAPI.setAnimatedNodeOffset(this.__getNativeTag(), offset);\n }\n }\n /**\n * Merges the offset value into the base value and resets the offset to zero.\n * The final output of the value is unchanged.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#flattenoffset\n */\n\n\n flattenOffset() {\n this._value += this._offset;\n this._offset = 0;\n\n if (this.__isNative) {\n NativeAnimatedAPI.flattenAnimatedNodeOffset(this.__getNativeTag());\n }\n }\n /**\n * Sets the offset value to the base value, and resets the base value to zero.\n * The final output of the value is unchanged.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#extractoffset\n */\n\n\n extractOffset() {\n this._offset += this._value;\n this._value = 0;\n\n if (this.__isNative) {\n NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag());\n }\n }\n /**\n * Stops any running animation or tracking. `callback` is invoked with the\n * final value after stopping the animation, which is useful for updating\n * state to match the animation position with layout.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#stopanimation\n */\n\n\n stopAnimation(callback) {\n this.stopTracking();\n this._animation && this._animation.stop();\n this._animation = null;\n callback && callback(this.__getValue());\n }\n /**\n * Stops any animation and resets the value to its original.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#resetanimation\n */\n\n\n resetAnimation(callback) {\n this.stopAnimation(callback);\n this._value = this._startingValue;\n }\n\n _onAnimatedValueUpdateReceived(value) {\n this._updateValue(value, false\n /*flush*/\n );\n }\n /**\n * Interpolates the value before updating the property, e.g. mapping 0-1 to\n * 0-10.\n */\n\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n /**\n * Typically only used internally, but could be used by a custom Animation\n * class.\n *\n * See https://reactnative.dev/docs/animatedvalue.html#animate\n */\n\n\n animate(animation, callback) {\n var handle = null;\n\n if (animation.__isInteraction) {\n handle = InteractionManager.createInteractionHandle();\n }\n\n var previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(this._value, value => {\n // Natively driven animations will never call into that callback, therefore we can always\n // pass flush = true to allow the updated value to propagate to native with setNativeProps\n this._updateValue(value, true\n /* flush */\n );\n }, result => {\n this._animation = null;\n\n if (handle !== null) {\n InteractionManager.clearInteractionHandle(handle);\n }\n\n callback && callback(result);\n }, previousAnimation, this);\n }\n /**\n * Typically only used internally.\n */\n\n\n stopTracking() {\n this._tracking && this._tracking.__detach();\n this._tracking = null;\n }\n /**\n * Typically only used internally.\n */\n\n\n track(tracking) {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n _updateValue(value, flush) {\n if (value === undefined) {\n throw new Error('AnimatedValue: Attempting to set value to undefined');\n }\n\n this._value = value;\n\n if (flush) {\n _flush(this);\n }\n\n super.__callListeners(this.__getValue());\n }\n\n __getNativeConfig() {\n return {\n type: 'value',\n value: this._value,\n offset: this._offset\n };\n }\n\n}\n\nexport default AnimatedValue;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedValue from './nodes/AnimatedValue';\nimport NativeAnimatedHelper from './NativeAnimatedHelper';\nimport findNodeHandle from '../../../exports/findNodeHandle';\nimport invariant from 'fbjs/lib/invariant';\nimport { shouldUseNativeDriver } from './NativeAnimatedHelper';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nexport function attachNativeEvent(viewRef, eventName, argMapping) {\n // Find animated values in `argMapping` and create an array representing their\n // key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].\n var eventMappings = [];\n\n var traverse = (value, path) => {\n if (value instanceof AnimatedValue) {\n value.__makeNative();\n\n eventMappings.push({\n nativeEventPath: path,\n animatedValueTag: value.__getNativeTag()\n });\n } else if (typeof value === 'object') {\n for (var _key in value) {\n traverse(value[_key], path.concat(_key));\n }\n }\n };\n\n invariant(argMapping[0] && argMapping[0].nativeEvent, 'Native driven events only support animated values contained inside `nativeEvent`.'); // Assume that the event containing `nativeEvent` is always the first argument.\n\n traverse(argMapping[0].nativeEvent, []);\n var viewTag = findNodeHandle(viewRef);\n\n if (viewTag != null) {\n eventMappings.forEach(mapping => {\n NativeAnimatedHelper.API.addAnimatedEventToView(viewTag, eventName, mapping);\n });\n }\n\n return {\n detach() {\n if (viewTag != null) {\n eventMappings.forEach(mapping => {\n NativeAnimatedHelper.API.removeAnimatedEventFromView(viewTag, eventName, // $FlowFixMe[incompatible-call]\n mapping.animatedValueTag);\n });\n }\n }\n\n };\n}\n\nfunction validateMapping(argMapping, args) {\n var validate = (recMapping, recEvt, key) => {\n if (recMapping instanceof AnimatedValue) {\n invariant(typeof recEvt === 'number', 'Bad mapping of event key ' + key + ', should be number but got ' + typeof recEvt);\n return;\n }\n\n if (typeof recEvt === 'number') {\n invariant(recMapping instanceof AnimatedValue, 'Bad mapping of type ' + typeof recMapping + ' for key ' + key + ', event value must map to AnimatedValue');\n return;\n }\n\n invariant(typeof recMapping === 'object', 'Bad mapping of type ' + typeof recMapping + ' for key ' + key);\n invariant(typeof recEvt === 'object', 'Bad event of type ' + typeof recEvt + ' for key ' + key);\n\n for (var mappingKey in recMapping) {\n validate(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n }\n };\n\n invariant(args.length >= argMapping.length, 'Event has less arguments than mapping');\n argMapping.forEach((mapping, idx) => {\n validate(mapping, args[idx], 'arg' + idx);\n });\n}\n\nexport class AnimatedEvent {\n constructor(argMapping, config) {\n this._listeners = [];\n this._argMapping = argMapping;\n\n if (config == null) {\n console.warn('Animated.event now requires a second argument for options');\n config = {\n useNativeDriver: false\n };\n }\n\n if (config.listener) {\n this.__addListener(config.listener);\n }\n\n this._callListeners = this._callListeners.bind(this);\n this._attachedEvent = null;\n this.__isNative = shouldUseNativeDriver(config);\n }\n\n __addListener(callback) {\n this._listeners.push(callback);\n }\n\n __removeListener(callback) {\n this._listeners = this._listeners.filter(listener => listener !== callback);\n }\n\n __attach(viewRef, eventName) {\n invariant(this.__isNative, 'Only native driven events need to be attached.');\n this._attachedEvent = attachNativeEvent(viewRef, eventName, this._argMapping);\n }\n\n __detach(viewTag, eventName) {\n invariant(this.__isNative, 'Only native driven events need to be detached.');\n this._attachedEvent && this._attachedEvent.detach();\n }\n\n __getHandler() {\n var _this = this;\n\n if (this.__isNative) {\n if (__DEV__) {\n var _validatedMapping = false;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (!_validatedMapping) {\n validateMapping(_this._argMapping, args);\n _validatedMapping = true;\n }\n\n _this._callListeners(...args);\n };\n } else {\n return this._callListeners;\n }\n }\n\n var validatedMapping = false;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (__DEV__ && !validatedMapping) {\n validateMapping(_this._argMapping, args);\n validatedMapping = true;\n }\n\n var traverse = (recMapping, recEvt, key) => {\n if (recMapping instanceof AnimatedValue) {\n if (typeof recEvt === 'number') {\n recMapping.setValue(recEvt);\n }\n } else if (typeof recMapping === 'object') {\n for (var mappingKey in recMapping) {\n /* $FlowFixMe(>=0.120.0) This comment suppresses an error found\n * when Flow v0.120 was deployed. To see the error, delete this\n * comment and run Flow. */\n traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n }\n }\n };\n\n _this._argMapping.forEach((mapping, idx) => {\n traverse(mapping, args[idx], 'arg' + idx);\n });\n\n _this._callListeners(...args);\n };\n }\n\n _callListeners() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n this._listeners.forEach(listener => listener(...args));\n }\n\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\n\nclass AnimatedTransform extends AnimatedWithChildren {\n constructor(transforms) {\n super();\n this._transforms = transforms;\n }\n\n __makeNative() {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n });\n\n super.__makeNative();\n }\n\n __getValue() {\n return this._transforms.map(transform => {\n var result = {};\n\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n result[key] = value.__getValue();\n } else {\n result[key] = value;\n }\n }\n\n return result;\n });\n }\n\n __getAnimatedValue() {\n return this._transforms.map(transform => {\n var result = {};\n\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n result[key] = value.__getAnimatedValue();\n } else {\n // All transform components needed to recompose matrix\n result[key] = value;\n }\n }\n\n return result;\n });\n }\n\n __attach() {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n });\n }\n\n __detach() {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n });\n\n super.__detach();\n }\n\n __getNativeConfig() {\n var transConfigs = [];\n\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n\n if (value instanceof AnimatedNode) {\n transConfigs.push({\n type: 'animated',\n property: key,\n nodeTag: value.__getNativeTag()\n });\n } else {\n transConfigs.push({\n type: 'static',\n property: key,\n value: NativeAnimatedHelper.transformDataType(value)\n });\n }\n }\n });\n\n NativeAnimatedHelper.validateTransform(transConfigs);\n return {\n type: 'transform',\n transforms: transConfigs\n };\n }\n\n}\n\nexport default AnimatedTransform;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedTransform from './AnimatedTransform';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nimport StyleSheet from '../../../../exports/StyleSheet';\nvar flattenStyle = StyleSheet.flatten;\n\nclass AnimatedStyle extends AnimatedWithChildren {\n constructor(style) {\n super();\n style = flattenStyle(style) || {};\n\n if (style.transform) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n transform: new AnimatedTransform(style.transform)\n });\n }\n\n this._style = style;\n } // Recursively get values for nested styles (like iOS's shadowOffset)\n\n\n _walkStyleAndGetValues(style) {\n var updatedStyle = {};\n\n for (var key in style) {\n var value = style[key];\n\n if (value instanceof AnimatedNode) {\n if (!value.__isNative) {\n // We cannot use value of natively driven nodes this way as the value we have access from\n // JS may not be up to date.\n updatedStyle[key] = value.__getValue();\n }\n } else if (value && !Array.isArray(value) && typeof value === 'object') {\n // Support animating nested values (for example: shadowOffset.height)\n updatedStyle[key] = this._walkStyleAndGetValues(value);\n } else {\n updatedStyle[key] = value;\n }\n }\n\n return updatedStyle;\n }\n\n __getValue() {\n return this._walkStyleAndGetValues(this._style);\n } // Recursively get animated values for nested styles (like iOS's shadowOffset)\n\n\n _walkStyleAndGetAnimatedValues(style) {\n var updatedStyle = {};\n\n for (var key in style) {\n var value = style[key];\n\n if (value instanceof AnimatedNode) {\n updatedStyle[key] = value.__getAnimatedValue();\n } else if (value && !Array.isArray(value) && typeof value === 'object') {\n // Support animating nested values (for example: shadowOffset.height)\n updatedStyle[key] = this._walkStyleAndGetAnimatedValues(value);\n }\n }\n\n return updatedStyle;\n }\n\n __getAnimatedValue() {\n return this._walkStyleAndGetAnimatedValues(this._style);\n }\n\n __attach() {\n for (var key in this._style) {\n var value = this._style[key];\n\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n }\n\n __detach() {\n for (var key in this._style) {\n var value = this._style[key];\n\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n\n super.__detach();\n }\n\n __makeNative() {\n for (var key in this._style) {\n var value = this._style[key];\n\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n\n super.__makeNative();\n }\n\n __getNativeConfig() {\n var styleConfig = {};\n\n for (var styleKey in this._style) {\n if (this._style[styleKey] instanceof AnimatedNode) {\n var style = this._style[styleKey];\n\n style.__makeNative();\n\n styleConfig[styleKey] = style.__getNativeTag();\n } // Non-animated styles are set using `setNativeProps`, no need\n // to pass those as a part of the node config\n\n }\n\n NativeAnimatedHelper.validateStyles(styleConfig);\n return {\n type: 'style',\n style: styleConfig\n };\n }\n\n}\n\nexport default AnimatedStyle;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport { AnimatedEvent } from '../AnimatedEvent';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedStyle from './AnimatedStyle';\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nimport findNodeHandle from '../../../../exports/findNodeHandle';\nimport invariant from 'fbjs/lib/invariant';\n\nclass AnimatedProps extends AnimatedNode {\n constructor(props, callback) {\n super();\n\n if (props.style) {\n props = _objectSpread(_objectSpread({}, props), {}, {\n style: new AnimatedStyle(props.style)\n });\n }\n\n this._props = props;\n this._callback = callback;\n\n this.__attach();\n }\n\n __getValue() {\n var props = {};\n\n for (var key in this._props) {\n var value = this._props[key];\n\n if (value instanceof AnimatedNode) {\n if (!value.__isNative || value instanceof AnimatedStyle) {\n // We cannot use value of natively driven nodes this way as the value we have access from\n // JS may not be up to date.\n props[key] = value.__getValue();\n }\n } else if (value instanceof AnimatedEvent) {\n props[key] = value.__getHandler();\n } else {\n props[key] = value;\n }\n }\n\n return props;\n }\n\n __getAnimatedValue() {\n var props = {};\n\n for (var key in this._props) {\n var value = this._props[key];\n\n if (value instanceof AnimatedNode) {\n props[key] = value.__getAnimatedValue();\n }\n }\n\n return props;\n }\n\n __attach() {\n for (var key in this._props) {\n var value = this._props[key];\n\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n }\n\n __detach() {\n if (this.__isNative && this._animatedView) {\n this.__disconnectAnimatedView();\n }\n\n for (var key in this._props) {\n var value = this._props[key];\n\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n\n super.__detach();\n }\n\n update() {\n this._callback();\n }\n\n __makeNative() {\n if (!this.__isNative) {\n this.__isNative = true;\n\n for (var key in this._props) {\n var value = this._props[key];\n\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n\n if (this._animatedView) {\n this.__connectAnimatedView();\n }\n }\n }\n\n setNativeView(animatedView) {\n if (this._animatedView === animatedView) {\n return;\n }\n\n this._animatedView = animatedView;\n\n if (this.__isNative) {\n this.__connectAnimatedView();\n }\n }\n\n __connectAnimatedView() {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n var nativeViewTag = findNodeHandle(this._animatedView);\n invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree');\n NativeAnimatedHelper.API.connectAnimatedNodeToView(this.__getNativeTag(), nativeViewTag);\n }\n\n __disconnectAnimatedView() {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n var nativeViewTag = findNodeHandle(this._animatedView);\n invariant(nativeViewTag != null, 'Unable to locate attached view in the native tree');\n NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(this.__getNativeTag(), nativeViewTag);\n }\n\n __restoreDefaultValues() {\n // When using the native driver, view properties need to be restored to\n // their default values manually since react no longer tracks them. This\n // is needed to handle cases where a prop driven by native animated is removed\n // after having been changed natively by an animation.\n if (this.__isNative) {\n NativeAnimatedHelper.API.restoreDefaultValues(this.__getNativeTag());\n }\n }\n\n __getNativeConfig() {\n var propsConfig = {};\n\n for (var propKey in this._props) {\n var value = this._props[propKey];\n\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n\n propsConfig[propKey] = value.__getNativeTag();\n }\n }\n\n return {\n type: 'props',\n props: propsConfig\n };\n }\n\n}\n\nexport default AnimatedProps;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\n/**\n * This is a helper function for when a component needs to be able to forward a ref\n * to a child component, but still needs to have access to that component as part of\n * its implementation.\n *\n * Its main use case is in wrappers for native components.\n *\n * Usage:\n *\n * class MyView extends React.Component {\n * _nativeRef = null;\n *\n * _setNativeRef = setAndForwardRef({\n * getForwardedRef: () => this.props.forwardedRef,\n * setLocalRef: ref => {\n * this._nativeRef = ref;\n * },\n * });\n *\n * render() {\n * return ;\n * }\n * }\n *\n * const MyViewWithRef = React.forwardRef((props, ref) => (\n * \n * ));\n *\n * module.exports = MyViewWithRef;\n */\nfunction setAndForwardRef(_ref) {\n var getForwardedRef = _ref.getForwardedRef,\n setLocalRef = _ref.setLocalRef;\n return function forwardRef(ref) {\n var forwardedRef = getForwardedRef();\n setLocalRef(ref); // Forward to user ref prop (if one has been specified)\n\n if (typeof forwardedRef === 'function') {\n // Handle function-based refs. String-based refs are handled as functions.\n forwardedRef(ref);\n } else if (typeof forwardedRef === 'object' && forwardedRef != null) {\n // Handle createRef-based refs\n forwardedRef.current = ref;\n }\n };\n}\n\nexport default setAndForwardRef;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"style\"],\n _excluded2 = [\"style\"];\nimport View from '../../../exports/View';\nimport { AnimatedEvent } from './AnimatedEvent';\nimport AnimatedProps from './nodes/AnimatedProps';\nimport * as React from 'react';\nimport NativeAnimatedHelper from './NativeAnimatedHelper';\nimport invariant from 'fbjs/lib/invariant';\nimport setAndForwardRef from '../Utilities/setAndForwardRef';\nvar animatedComponentNextId = 1;\n\nfunction createAnimatedComponent(Component, options) {\n invariant(typeof Component !== 'function' || Component.prototype && Component.prototype.isReactComponent, '`createAnimatedComponent` does not support stateless functional components; ' + 'use a class component instead.');\n\n class AnimatedComponent extends React.Component {\n constructor() {\n super(...arguments);\n this._invokeAnimatedPropsCallbackOnMount = false;\n this._eventDetachers = [];\n this._animatedComponentId = animatedComponentNextId++ + \":animatedComponent\";\n\n this._isFabric = () => {\n var _this$_component$_int, _this$_component$_int2, _this$_component$getN, _this$_component$getN2, _this$_component$getS, _this$_component$getS2;\n\n // When called during the first render, `_component` is always null.\n // Therefore, even if a component is rendered in Fabric, we can't detect\n // that until ref is set, which happens sometime after the first render.\n // In cases where this value switching between \"false\" and \"true\" on Fabric\n // causes issues, add an additional check for _component nullity.\n if (this._component == null) {\n return false;\n }\n\n return (// eslint-disable-next-line dot-notation\n ((_this$_component$_int = this._component['_internalInstanceHandle']) == null ? void 0 : (_this$_component$_int2 = _this$_component$_int.stateNode) == null ? void 0 : _this$_component$_int2.canonical) != null || // Some components have a setNativeProps function but aren't a host component\n // such as lists like FlatList and SectionList. These should also use\n // forceUpdate in Fabric since setNativeProps doesn't exist on the underlying\n // host component. This crazy hack is essentially special casing those lists and\n // ScrollView itself to use forceUpdate in Fabric.\n // If these components end up using forwardRef then these hacks can go away\n // as this._component would actually be the underlying host component and the above check\n // would be sufficient.\n this._component.getNativeScrollRef != null && this._component.getNativeScrollRef() != null && // eslint-disable-next-line dot-notation\n ((_this$_component$getN = this._component.getNativeScrollRef()['_internalInstanceHandle']) == null ? void 0 : (_this$_component$getN2 = _this$_component$getN.stateNode) == null ? void 0 : _this$_component$getN2.canonical) != null || this._component.getScrollResponder != null && this._component.getScrollResponder() != null && this._component.getScrollResponder().getNativeScrollRef != null && this._component.getScrollResponder().getNativeScrollRef() != null && ((_this$_component$getS = this._component.getScrollResponder().getNativeScrollRef()[// eslint-disable-next-line dot-notation\n '_internalInstanceHandle']) == null ? void 0 : (_this$_component$getS2 = _this$_component$getS.stateNode) == null ? void 0 : _this$_component$getS2.canonical) != null\n );\n };\n\n this._waitForUpdate = () => {\n if (this._isFabric()) {\n NativeAnimatedHelper.API.setWaitingForIdentifier(this._animatedComponentId);\n }\n };\n\n this._markUpdateComplete = () => {\n if (this._isFabric()) {\n NativeAnimatedHelper.API.unsetWaitingForIdentifier(this._animatedComponentId);\n }\n };\n\n this._animatedPropsCallback = () => {\n if (this._component == null) {\n // AnimatedProps is created in will-mount because it's used in render.\n // But this callback may be invoked before mount in async mode,\n // In which case we should defer the setNativeProps() call.\n // React may throw away uncommitted work in async mode,\n // So a deferred call won't always be invoked.\n this._invokeAnimatedPropsCallbackOnMount = true;\n } else if (process.env.NODE_ENV === 'test' || // For animating properties of non-leaf/non-native components\n typeof this._component.setNativeProps !== 'function' || // In Fabric, force animations to go through forceUpdate and skip setNativeProps\n this._isFabric()) {\n this.forceUpdate();\n } else if (!this._propsAnimated.__isNative) {\n this._component.setNativeProps(this._propsAnimated.__getAnimatedValue());\n } else {\n throw new Error('Attempting to run JS driven animation on animated ' + 'node that has been moved to \"native\" earlier by starting an ' + 'animation with `useNativeDriver: true`');\n }\n };\n\n this._setComponentRef = setAndForwardRef({\n getForwardedRef: () => this.props.forwardedRef,\n setLocalRef: ref => {\n this._prevComponent = this._component;\n this._component = ref; // TODO: Delete this in a future release.\n\n if (ref != null && ref.getNode == null) {\n ref.getNode = () => {\n var _ref$constructor$name;\n\n console.warn('%s: Calling `getNode()` on the ref of an Animated component ' + 'is no longer necessary. You can now directly use the ref ' + 'instead. This method will be removed in a future release.', (_ref$constructor$name = ref.constructor.name) !== null && _ref$constructor$name !== void 0 ? _ref$constructor$name : '<>');\n return ref;\n };\n }\n }\n });\n }\n\n _attachNativeEvents() {\n var _this$_component,\n _this = this;\n\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n var scrollableNode = (_this$_component = this._component) != null && _this$_component.getScrollableNode ? this._component.getScrollableNode() : this._component;\n\n var _loop = function _loop(key) {\n var prop = _this.props[key];\n\n if (prop instanceof AnimatedEvent && prop.__isNative) {\n prop.__attach(scrollableNode, key);\n\n _this._eventDetachers.push(() => prop.__detach(scrollableNode, key));\n }\n };\n\n for (var key in this.props) {\n _loop(key);\n }\n }\n\n _detachNativeEvents() {\n this._eventDetachers.forEach(remove => remove());\n\n this._eventDetachers = [];\n }\n\n _attachProps(nextProps) {\n var oldPropsAnimated = this._propsAnimated;\n\n if (nextProps === oldPropsAnimated) {\n return;\n }\n\n this._propsAnimated = new AnimatedProps(nextProps, this._animatedPropsCallback); // When you call detach, it removes the element from the parent list\n // of children. If it goes to 0, then the parent also detaches itself\n // and so on.\n // An optimization is to attach the new elements and THEN detach the old\n // ones instead of detaching and THEN attaching.\n // This way the intermediate state isn't to go to 0 and trigger\n // this expensive recursive detaching to then re-attach everything on\n // the very next operation.\n\n if (oldPropsAnimated) {\n oldPropsAnimated.__restoreDefaultValues();\n\n oldPropsAnimated.__detach();\n }\n }\n\n render() {\n var _ref = this._propsAnimated.__getValue() || {},\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = this.props.passthroughAnimatedPropExplicitValues || {},\n _ref2$style = _ref2.style,\n passthruStyle = _ref2$style === void 0 ? {} : _ref2$style,\n passthruProps = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n var mergedStyle = _objectSpread(_objectSpread({}, style), passthruStyle);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, passthruProps, {\n style: mergedStyle,\n ref: this._setComponentRef\n }));\n }\n\n UNSAFE_componentWillMount() {\n this._waitForUpdate();\n\n this._attachProps(this.props);\n }\n\n componentDidMount() {\n if (this._invokeAnimatedPropsCallbackOnMount) {\n this._invokeAnimatedPropsCallbackOnMount = false;\n\n this._animatedPropsCallback();\n }\n\n this._propsAnimated.setNativeView(this._component);\n\n this._attachNativeEvents();\n\n this._markUpdateComplete();\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n this._waitForUpdate();\n\n this._attachProps(newProps);\n }\n\n componentDidUpdate(prevProps) {\n if (this._component !== this._prevComponent) {\n this._propsAnimated.setNativeView(this._component);\n }\n\n if (this._component !== this._prevComponent || prevProps !== this.props) {\n this._detachNativeEvents();\n\n this._attachNativeEvents();\n }\n\n this._markUpdateComplete();\n }\n\n componentWillUnmount() {\n this._propsAnimated && this._propsAnimated.__detach();\n\n this._detachNativeEvents();\n\n this._markUpdateComplete();\n\n this._component = null;\n this._prevComponent = null;\n }\n\n }\n\n return /*#__PURE__*/React.forwardRef(function AnimatedComponentWrapper(props, ref) {\n return /*#__PURE__*/React.createElement(AnimatedComponent, _extends({}, props, ref == null ? null : {\n forwardedRef: ref\n }));\n });\n}\n\nexport default createAnimatedComponent;","import _extends from \"@babel/runtime/helpers/extends\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport FlatList from '../../../../exports/FlatList';\nimport createAnimatedComponent from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nvar FlatListWithEventThrottle = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(FlatList, _extends({\n scrollEventThrottle: 0.0001\n}, props, {\n ref: ref\n})));\nexport default createAnimatedComponent(FlatListWithEventThrottle);","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport Image from '../../../../exports/Image';\nimport createAnimatedComponent from '../createAnimatedComponent';\nexport default createAnimatedComponent(Image, {\n collapsable: false\n});","import _extends from \"@babel/runtime/helpers/extends\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport ScrollView from '../../../../exports/ScrollView';\nimport createAnimatedComponent from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nvar ScrollViewWithEventThrottle = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(ScrollView, _extends({\n scrollEventThrottle: 0.0001\n}, props, {\n ref: ref\n})));\nexport default createAnimatedComponent(ScrollViewWithEventThrottle, {\n collapsable: false\n});","import _extends from \"@babel/runtime/helpers/extends\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport SectionList from '../../../../exports/SectionList';\nimport createAnimatedComponent from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nvar SectionListWithEventThrottle = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SectionList, _extends({\n scrollEventThrottle: 0.0001\n}, props, {\n ref: ref\n})));\nexport default createAnimatedComponent(SectionListWithEventThrottle);","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport Text from '../../../../exports/Text';\nimport createAnimatedComponent from '../createAnimatedComponent';\nexport default createAnimatedComponent(Text, {\n collapsable: false\n});","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport View from '../../../../exports/View';\nimport createAnimatedComponent from '../createAnimatedComponent';\nexport default createAnimatedComponent(View, {\n collapsable: true\n});","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedAddition extends AnimatedWithChildren {\n constructor(a, b) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n this._b.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n return this._a.__getValue() + this._b.__getValue();\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._a.__addChild(this);\n\n this._b.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n this._b.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'addition',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()]\n };\n }\n\n}\n\nexport default AnimatedAddition;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedDiffClamp extends AnimatedWithChildren {\n constructor(a, min, max) {\n super();\n this._a = a;\n this._min = min;\n this._max = max;\n this._value = this._lastValue = this._a.__getValue();\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n super.__makeNative();\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __getValue() {\n var value = this._a.__getValue();\n\n var diff = value - this._lastValue;\n this._lastValue = value;\n this._value = Math.min(Math.max(this._value + diff, this._min), this._max);\n return this._value;\n }\n\n __attach() {\n this._a.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'diffclamp',\n input: this._a.__getNativeTag(),\n min: this._min,\n max: this._max\n };\n }\n\n}\n\nexport default AnimatedDiffClamp;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedDivision extends AnimatedWithChildren {\n constructor(a, b) {\n super();\n this._warnedAboutDivideByZero = false;\n\n if (b === 0 || b instanceof AnimatedNode && b.__getValue() === 0) {\n console.error('Detected potential division by zero in AnimatedDivision');\n }\n\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n this._b.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n var a = this._a.__getValue();\n\n var b = this._b.__getValue();\n\n if (b === 0) {\n // Prevent spamming the console/LogBox\n if (!this._warnedAboutDivideByZero) {\n console.error('Detected division by zero in AnimatedDivision');\n this._warnedAboutDivideByZero = true;\n } // Passing infinity/NaN to Fabric will cause a native crash\n\n\n return 0;\n }\n\n this._warnedAboutDivideByZero = false;\n return a / b;\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._a.__addChild(this);\n\n this._b.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n this._b.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'division',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()]\n };\n }\n\n}\n\nexport default AnimatedDivision;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedModulo extends AnimatedWithChildren {\n constructor(a, modulus) {\n super();\n this._a = a;\n this._modulus = modulus;\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n return (this._a.__getValue() % this._modulus + this._modulus) % this._modulus;\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._a.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'modulus',\n input: this._a.__getNativeTag(),\n modulus: this._modulus\n };\n }\n\n}\n\nexport default AnimatedModulo;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedMultiplication extends AnimatedWithChildren {\n constructor(a, b) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n this._b.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n return this._a.__getValue() * this._b.__getValue();\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._a.__addChild(this);\n\n this._b.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n this._b.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'multiplication',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()]\n };\n }\n\n}\n\nexport default AnimatedMultiplication;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nclass AnimatedSubtraction extends AnimatedWithChildren {\n constructor(a, b) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n\n this._b.__makeNative();\n\n super.__makeNative();\n }\n\n __getValue() {\n return this._a.__getValue() - this._b.__getValue();\n }\n\n interpolate(config) {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach() {\n this._a.__addChild(this);\n\n this._b.__addChild(this);\n }\n\n __detach() {\n this._a.__removeChild(this);\n\n this._b.__removeChild(this);\n\n super.__detach();\n }\n\n __getNativeConfig() {\n return {\n type: 'subtraction',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()]\n };\n }\n\n}\n\nexport default AnimatedSubtraction;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedNode from './AnimatedNode';\nimport { generateNewAnimationId, shouldUseNativeDriver } from '../NativeAnimatedHelper';\n\nclass AnimatedTracking extends AnimatedNode {\n constructor(value, parent, animationClass, animationConfig, callback) {\n super();\n this._value = value;\n this._parent = parent;\n this._animationClass = animationClass;\n this._animationConfig = animationConfig;\n this._useNativeDriver = shouldUseNativeDriver(animationConfig);\n this._callback = callback;\n\n this.__attach();\n }\n\n __makeNative() {\n this.__isNative = true;\n\n this._parent.__makeNative();\n\n super.__makeNative();\n\n this._value.__makeNative();\n }\n\n __getValue() {\n return this._parent.__getValue();\n }\n\n __attach() {\n this._parent.__addChild(this);\n\n if (this._useNativeDriver) {\n // when the tracking starts we need to convert this node to a \"native node\"\n // so that the parent node will be made \"native\" too. This is necessary as\n // if we don't do this `update` method will get called. At that point it\n // may be too late as it would mean the JS driver has already started\n // updating node values\n this.__makeNative();\n }\n }\n\n __detach() {\n this._parent.__removeChild(this);\n\n super.__detach();\n }\n\n update() {\n this._value.animate(new this._animationClass(_objectSpread(_objectSpread({}, this._animationConfig), {}, {\n toValue: this._animationConfig.toValue.__getValue()\n })), this._callback);\n }\n\n __getNativeConfig() {\n var animation = new this._animationClass(_objectSpread(_objectSpread({}, this._animationConfig), {}, {\n // remove toValue from the config as it's a ref to Animated.Value\n toValue: undefined\n }));\n\n var animationConfig = animation.__getNativeAnimationConfig();\n\n return {\n type: 'tracking',\n animationId: generateNewAnimationId(),\n animationConfig,\n toValue: this._parent.__getNativeTag(),\n value: this._value.__getNativeTag()\n };\n }\n\n}\n\nexport default AnimatedTracking;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport invariant from 'fbjs/lib/invariant';\nvar _uniqueId = 1;\n/**\n * 2D Value for driving 2D animations, such as pan gestures. Almost identical\n * API to normal `Animated.Value`, but multiplexed.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html\n */\n\nclass AnimatedValueXY extends AnimatedWithChildren {\n constructor(valueIn) {\n super();\n var value = valueIn || {\n x: 0,\n y: 0\n }; // fixme: shouldn't need `: any`\n\n if (typeof value.x === 'number' && typeof value.y === 'number') {\n this.x = new AnimatedValue(value.x);\n this.y = new AnimatedValue(value.y);\n } else {\n invariant(value.x instanceof AnimatedValue && value.y instanceof AnimatedValue, 'AnimatedValueXY must be initialized with an object of numbers or ' + 'AnimatedValues.');\n this.x = value.x;\n this.y = value.y;\n }\n\n this._listeners = {};\n }\n /**\n * Directly set the value. This will stop any animations running on the value\n * and update all the bound properties.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#setvalue\n */\n\n\n setValue(value) {\n this.x.setValue(value.x);\n this.y.setValue(value.y);\n }\n /**\n * Sets an offset that is applied on top of whatever value is set, whether\n * via `setValue`, an animation, or `Animated.event`. Useful for compensating\n * things like the start of a pan gesture.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#setoffset\n */\n\n\n setOffset(offset) {\n this.x.setOffset(offset.x);\n this.y.setOffset(offset.y);\n }\n /**\n * Merges the offset value into the base value and resets the offset to zero.\n * The final output of the value is unchanged.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#flattenoffset\n */\n\n\n flattenOffset() {\n this.x.flattenOffset();\n this.y.flattenOffset();\n }\n /**\n * Sets the offset value to the base value, and resets the base value to\n * zero. The final output of the value is unchanged.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#extractoffset\n */\n\n\n extractOffset() {\n this.x.extractOffset();\n this.y.extractOffset();\n }\n\n __getValue() {\n return {\n x: this.x.__getValue(),\n y: this.y.__getValue()\n };\n }\n /**\n * Stops any animation and resets the value to its original.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#resetanimation\n */\n\n\n resetAnimation(callback) {\n this.x.resetAnimation();\n this.y.resetAnimation();\n callback && callback(this.__getValue());\n }\n /**\n * Stops any running animation or tracking. `callback` is invoked with the\n * final value after stopping the animation, which is useful for updating\n * state to match the animation position with layout.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#stopanimation\n */\n\n\n stopAnimation(callback) {\n this.x.stopAnimation();\n this.y.stopAnimation();\n callback && callback(this.__getValue());\n }\n /**\n * Adds an asynchronous listener to the value so you can observe updates from\n * animations. This is useful because there is no way to synchronously read\n * the value because it might be driven natively.\n *\n * Returns a string that serves as an identifier for the listener.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#addlistener\n */\n\n\n addListener(callback) {\n var id = String(_uniqueId++);\n\n var jointCallback = _ref => {\n var number = _ref.value;\n callback(this.__getValue());\n };\n\n this._listeners[id] = {\n x: this.x.addListener(jointCallback),\n y: this.y.addListener(jointCallback)\n };\n return id;\n }\n /**\n * Unregister a listener. The `id` param shall match the identifier\n * previously returned by `addListener()`.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#removelistener\n */\n\n\n removeListener(id) {\n this.x.removeListener(this._listeners[id].x);\n this.y.removeListener(this._listeners[id].y);\n delete this._listeners[id];\n }\n /**\n * Remove all registered listeners.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#removealllisteners\n */\n\n\n removeAllListeners() {\n this.x.removeAllListeners();\n this.y.removeAllListeners();\n this._listeners = {};\n }\n /**\n * Converts `{x, y}` into `{left, top}` for use in style.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#getlayout\n */\n\n\n getLayout() {\n return {\n left: this.x,\n top: this.y\n };\n }\n /**\n * Converts `{x, y}` into a useable translation transform.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html#gettranslatetransform\n */\n\n\n getTranslateTransform() {\n return [{\n translateX: this.x\n }, {\n translateY: this.y\n }];\n }\n\n}\n\nexport default AnimatedValueXY;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport NativeAnimatedHelper from '../NativeAnimatedHelper';\nvar startNativeAnimationNextId = 1; // Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\n\nclass Animation {\n start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) {}\n\n stop() {\n if (this.__nativeId) {\n NativeAnimatedHelper.API.stopAnimation(this.__nativeId);\n }\n }\n\n __getNativeAnimationConfig() {\n // Subclasses that have corresponding animation implementation done in native\n // should override this method\n throw new Error('This animation type cannot be offloaded to native');\n } // Helper function for subclasses to make sure onEnd is only called once.\n\n\n __debouncedOnEnd(result) {\n var onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n\n __startNativeAnimation(animatedValue) {\n var startNativeAnimationWaitId = startNativeAnimationNextId + \":startAnimation\";\n startNativeAnimationNextId += 1;\n NativeAnimatedHelper.API.setWaitingForIdentifier(startNativeAnimationWaitId);\n\n try {\n animatedValue.__makeNative();\n\n this.__nativeId = NativeAnimatedHelper.generateNewAnimationId();\n NativeAnimatedHelper.API.startAnimatingNode(this.__nativeId, animatedValue.__getNativeTag(), this.__getNativeAnimationConfig(), this.__debouncedOnEnd.bind(this));\n } catch (e) {\n throw e;\n } finally {\n NativeAnimatedHelper.API.unsetWaitingForIdentifier(startNativeAnimationWaitId);\n }\n }\n\n}\n\nexport default Animation;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport Animation from './Animation';\nimport { shouldUseNativeDriver } from '../NativeAnimatedHelper';\n\nclass DecayAnimation extends Animation {\n constructor(config) {\n var _config$deceleration, _config$isInteraction, _config$iterations;\n\n super();\n this._deceleration = (_config$deceleration = config.deceleration) !== null && _config$deceleration !== void 0 ? _config$deceleration : 0.998;\n this._velocity = config.velocity;\n this._useNativeDriver = shouldUseNativeDriver(config);\n this.__isInteraction = (_config$isInteraction = config.isInteraction) !== null && _config$isInteraction !== void 0 ? _config$isInteraction : !this._useNativeDriver;\n this.__iterations = (_config$iterations = config.iterations) !== null && _config$iterations !== void 0 ? _config$iterations : 1;\n }\n\n __getNativeAnimationConfig() {\n return {\n type: 'decay',\n deceleration: this._deceleration,\n velocity: this._velocity,\n iterations: this.__iterations\n };\n }\n\n start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) {\n this.__active = true;\n this._lastValue = fromValue;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._startTime = Date.now();\n\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n onUpdate() {\n var now = Date.now();\n var value = this._fromValue + this._velocity / (1 - this._deceleration) * (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n this._onUpdate(value);\n\n if (Math.abs(this._lastValue - value) < 0.1) {\n this.__debouncedOnEnd({\n finished: true\n });\n\n return;\n }\n\n this._lastValue = value;\n\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop() {\n super.stop();\n this.__active = false;\n global.cancelAnimationFrame(this._animationFrame);\n\n this.__debouncedOnEnd({\n finished: false\n });\n }\n\n}\n\nexport default DecayAnimation;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nfunction stiffnessFromOrigamiValue(oValue) {\n return (oValue - 30) * 3.62 + 194;\n}\n\nfunction dampingFromOrigamiValue(oValue) {\n return (oValue - 8) * 3 + 25;\n}\n\nfunction fromOrigamiTensionAndFriction(tension, friction) {\n return {\n stiffness: stiffnessFromOrigamiValue(tension),\n damping: dampingFromOrigamiValue(friction)\n };\n}\n\nfunction fromBouncinessAndSpeed(bounciness, speed) {\n function normalize(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n }\n\n function projectNormal(n, start, end) {\n return start + n * (end - start);\n }\n\n function linearInterpolation(t, start, end) {\n return t * end + (1 - t) * start;\n }\n\n function quadraticOutInterpolation(t, start, end) {\n return linearInterpolation(2 * t - t * t, start, end);\n }\n\n function b3Friction1(x) {\n return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;\n }\n\n function b3Friction2(x) {\n return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;\n }\n\n function b3Friction3(x) {\n return 0.00000045 * Math.pow(x, 3) - 0.000332 * Math.pow(x, 2) + 0.1078 * x + 5.84;\n }\n\n function b3Nobounce(tension) {\n if (tension <= 18) {\n return b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n return b3Friction2(tension);\n } else {\n return b3Friction3(tension);\n }\n }\n\n var b = normalize(bounciness / 1.7, 0, 20);\n b = projectNormal(b, 0, 0.8);\n var s = normalize(speed / 1.7, 0, 20);\n var bouncyTension = projectNormal(s, 0.5, 200);\n var bouncyFriction = quadraticOutInterpolation(b, b3Nobounce(bouncyTension), 0.01);\n return {\n stiffness: stiffnessFromOrigamiValue(bouncyTension),\n damping: dampingFromOrigamiValue(bouncyFriction)\n };\n}\n\nexport default {\n fromOrigamiTensionAndFriction,\n fromBouncinessAndSpeed\n};","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedValue from '../nodes/AnimatedValue';\nimport AnimatedValueXY from '../nodes/AnimatedValueXY';\nimport AnimatedInterpolation from '../nodes/AnimatedInterpolation';\nimport Animation from './Animation';\nimport SpringConfig from '../SpringConfig';\nimport invariant from 'fbjs/lib/invariant';\nimport { shouldUseNativeDriver } from '../NativeAnimatedHelper';\n\nclass SpringAnimation extends Animation {\n constructor(config) {\n var _config$overshootClam, _config$restDisplacem, _config$restSpeedThre, _config$velocity, _config$velocity2, _config$delay, _config$isInteraction, _config$iterations;\n\n super();\n this._overshootClamping = (_config$overshootClam = config.overshootClamping) !== null && _config$overshootClam !== void 0 ? _config$overshootClam : false;\n this._restDisplacementThreshold = (_config$restDisplacem = config.restDisplacementThreshold) !== null && _config$restDisplacem !== void 0 ? _config$restDisplacem : 0.001;\n this._restSpeedThreshold = (_config$restSpeedThre = config.restSpeedThreshold) !== null && _config$restSpeedThre !== void 0 ? _config$restSpeedThre : 0.001;\n this._initialVelocity = (_config$velocity = config.velocity) !== null && _config$velocity !== void 0 ? _config$velocity : 0;\n this._lastVelocity = (_config$velocity2 = config.velocity) !== null && _config$velocity2 !== void 0 ? _config$velocity2 : 0;\n this._toValue = config.toValue;\n this._delay = (_config$delay = config.delay) !== null && _config$delay !== void 0 ? _config$delay : 0;\n this._useNativeDriver = shouldUseNativeDriver(config);\n this.__isInteraction = (_config$isInteraction = config.isInteraction) !== null && _config$isInteraction !== void 0 ? _config$isInteraction : !this._useNativeDriver;\n this.__iterations = (_config$iterations = config.iterations) !== null && _config$iterations !== void 0 ? _config$iterations : 1;\n\n if (config.stiffness !== undefined || config.damping !== undefined || config.mass !== undefined) {\n var _config$stiffness, _config$damping, _config$mass;\n\n invariant(config.bounciness === undefined && config.speed === undefined && config.tension === undefined && config.friction === undefined, 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one');\n this._stiffness = (_config$stiffness = config.stiffness) !== null && _config$stiffness !== void 0 ? _config$stiffness : 100;\n this._damping = (_config$damping = config.damping) !== null && _config$damping !== void 0 ? _config$damping : 10;\n this._mass = (_config$mass = config.mass) !== null && _config$mass !== void 0 ? _config$mass : 1;\n } else if (config.bounciness !== undefined || config.speed !== undefined) {\n var _config$bounciness, _config$speed;\n\n // Convert the origami bounciness/speed values to stiffness/damping\n // We assume mass is 1.\n invariant(config.tension === undefined && config.friction === undefined && config.stiffness === undefined && config.damping === undefined && config.mass === undefined, 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one');\n var springConfig = SpringConfig.fromBouncinessAndSpeed((_config$bounciness = config.bounciness) !== null && _config$bounciness !== void 0 ? _config$bounciness : 8, (_config$speed = config.speed) !== null && _config$speed !== void 0 ? _config$speed : 12);\n this._stiffness = springConfig.stiffness;\n this._damping = springConfig.damping;\n this._mass = 1;\n } else {\n var _config$tension, _config$friction;\n\n // Convert the origami tension/friction values to stiffness/damping\n // We assume mass is 1.\n var _springConfig = SpringConfig.fromOrigamiTensionAndFriction((_config$tension = config.tension) !== null && _config$tension !== void 0 ? _config$tension : 40, (_config$friction = config.friction) !== null && _config$friction !== void 0 ? _config$friction : 7);\n\n this._stiffness = _springConfig.stiffness;\n this._damping = _springConfig.damping;\n this._mass = 1;\n }\n\n invariant(this._stiffness > 0, 'Stiffness value must be greater than 0');\n invariant(this._damping > 0, 'Damping value must be greater than 0');\n invariant(this._mass > 0, 'Mass value must be greater than 0');\n }\n\n __getNativeAnimationConfig() {\n var _this$_initialVelocit;\n\n return {\n type: 'spring',\n overshootClamping: this._overshootClamping,\n restDisplacementThreshold: this._restDisplacementThreshold,\n restSpeedThreshold: this._restSpeedThreshold,\n stiffness: this._stiffness,\n damping: this._damping,\n mass: this._mass,\n initialVelocity: (_this$_initialVelocit = this._initialVelocity) !== null && _this$_initialVelocit !== void 0 ? _this$_initialVelocit : this._lastVelocity,\n toValue: this._toValue,\n iterations: this.__iterations\n };\n }\n\n start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) {\n this.__active = true;\n this._startPosition = fromValue;\n this._lastPosition = this._startPosition;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._lastTime = Date.now();\n this._frameTime = 0.0;\n\n if (previousAnimation instanceof SpringAnimation) {\n var internalState = previousAnimation.getInternalState();\n this._lastPosition = internalState.lastPosition;\n this._lastVelocity = internalState.lastVelocity; // Set the initial velocity to the last velocity\n\n this._initialVelocity = this._lastVelocity;\n this._lastTime = internalState.lastTime;\n }\n\n var start = () => {\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this.onUpdate();\n }\n }; // If this._delay is more than 0, we start after the timeout.\n\n\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n getInternalState() {\n return {\n lastPosition: this._lastPosition,\n lastVelocity: this._lastVelocity,\n lastTime: this._lastTime\n };\n }\n /**\n * This spring model is based off of a damped harmonic oscillator\n * (https://en.wikipedia.org/wiki/Harmonic_oscillator#Damped_harmonic_oscillator).\n *\n * We use the closed form of the second order differential equation:\n *\n * x'' + (2ζ⍵_0)x' + ⍵^2x = 0\n *\n * where\n * ⍵_0 = √(k / m) (undamped angular frequency of the oscillator),\n * ζ = c / 2√mk (damping ratio),\n * c = damping constant\n * k = stiffness\n * m = mass\n *\n * The derivation of the closed form is described in detail here:\n * http://planetmath.org/sites/default/files/texpdf/39745.pdf\n *\n * This algorithm happens to match the algorithm used by CASpringAnimation,\n * a QuartzCore (iOS) API that creates spring animations.\n */\n\n\n onUpdate() {\n // If for some reason we lost a lot of frames (e.g. process large payload or\n // stopped in the debugger), we only advance by 4 frames worth of\n // computation and will continue on the next frame. It's better to have it\n // running at faster speed than jumping to the end.\n var MAX_STEPS = 64;\n var now = Date.now();\n\n if (now > this._lastTime + MAX_STEPS) {\n now = this._lastTime + MAX_STEPS;\n }\n\n var deltaTime = (now - this._lastTime) / 1000;\n this._frameTime += deltaTime;\n var c = this._damping;\n var m = this._mass;\n var k = this._stiffness;\n var v0 = -this._initialVelocity;\n var zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n\n var omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n\n var omega1 = omega0 * Math.sqrt(1.0 - zeta * zeta); // exponential decay\n\n var x0 = this._toValue - this._startPosition; // calculate the oscillation from x0 = 1 to x = 0\n\n var position = 0.0;\n var velocity = 0.0;\n var t = this._frameTime;\n\n if (zeta < 1) {\n // Under damped\n var envelope = Math.exp(-zeta * omega0 * t);\n position = this._toValue - envelope * ((v0 + zeta * omega0 * x0) / omega1 * Math.sin(omega1 * t) + x0 * Math.cos(omega1 * t)); // This looks crazy -- it's actually just the derivative of the\n // oscillation function\n\n velocity = zeta * omega0 * envelope * (Math.sin(omega1 * t) * (v0 + zeta * omega0 * x0) / omega1 + x0 * Math.cos(omega1 * t)) - envelope * (Math.cos(omega1 * t) * (v0 + zeta * omega0 * x0) - omega1 * x0 * Math.sin(omega1 * t));\n } else {\n // Critically damped\n var _envelope = Math.exp(-omega0 * t);\n\n position = this._toValue - _envelope * (x0 + (v0 + omega0 * x0) * t);\n velocity = _envelope * (v0 * (t * omega0 - 1) + t * x0 * (omega0 * omega0));\n }\n\n this._lastTime = now;\n this._lastPosition = position;\n this._lastVelocity = velocity;\n\n this._onUpdate(position);\n\n if (!this.__active) {\n // a listener might have stopped us in _onUpdate\n return;\n } // Conditions for stopping the spring animation\n\n\n var isOvershooting = false;\n\n if (this._overshootClamping && this._stiffness !== 0) {\n if (this._startPosition < this._toValue) {\n isOvershooting = position > this._toValue;\n } else {\n isOvershooting = position < this._toValue;\n }\n }\n\n var isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n\n var isDisplacement = true;\n\n if (this._stiffness !== 0) {\n isDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n }\n\n if (isOvershooting || isVelocity && isDisplacement) {\n if (this._stiffness !== 0) {\n // Ensure that we end up with a round value\n this._lastPosition = this._toValue;\n this._lastVelocity = 0;\n\n this._onUpdate(this._toValue);\n }\n\n this.__debouncedOnEnd({\n finished: true\n });\n\n return;\n }\n\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop() {\n super.stop();\n this.__active = false;\n clearTimeout(this._timeout);\n global.cancelAnimationFrame(this._animationFrame);\n\n this.__debouncedOnEnd({\n finished: false\n });\n }\n\n}\n\nexport default SpringAnimation;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport AnimatedValue from '../nodes/AnimatedValue';\nimport AnimatedValueXY from '../nodes/AnimatedValueXY';\nimport AnimatedInterpolation from '../nodes/AnimatedInterpolation';\nimport Animation from './Animation';\nimport { shouldUseNativeDriver } from '../NativeAnimatedHelper';\nimport Easing from '../../../../exports/Easing';\n\nvar _easeInOut;\n\nfunction easeInOut() {\n if (!_easeInOut) {\n _easeInOut = Easing.inOut(Easing.ease);\n }\n\n return _easeInOut;\n}\n\nclass TimingAnimation extends Animation {\n constructor(config) {\n var _config$easing, _config$duration, _config$delay, _config$iterations, _config$isInteraction;\n\n super();\n this._toValue = config.toValue;\n this._easing = (_config$easing = config.easing) !== null && _config$easing !== void 0 ? _config$easing : easeInOut();\n this._duration = (_config$duration = config.duration) !== null && _config$duration !== void 0 ? _config$duration : 500;\n this._delay = (_config$delay = config.delay) !== null && _config$delay !== void 0 ? _config$delay : 0;\n this.__iterations = (_config$iterations = config.iterations) !== null && _config$iterations !== void 0 ? _config$iterations : 1;\n this._useNativeDriver = shouldUseNativeDriver(config);\n this.__isInteraction = (_config$isInteraction = config.isInteraction) !== null && _config$isInteraction !== void 0 ? _config$isInteraction : !this._useNativeDriver;\n }\n\n __getNativeAnimationConfig() {\n var frameDuration = 1000.0 / 60.0;\n var frames = [];\n var numFrames = Math.round(this._duration / frameDuration);\n\n for (var frame = 0; frame < numFrames; frame++) {\n frames.push(this._easing(frame / numFrames));\n }\n\n frames.push(this._easing(1));\n return {\n type: 'frames',\n frames,\n toValue: this._toValue,\n iterations: this.__iterations\n };\n }\n\n start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue) {\n this.__active = true;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n\n var start = () => {\n // Animations that sometimes have 0 duration and sometimes do not\n // still need to use the native driver when duration is 0 so as to\n // not cause intermixed JS and native animations.\n if (this._duration === 0 && !this._useNativeDriver) {\n this._onUpdate(this._toValue);\n\n this.__debouncedOnEnd({\n finished: true\n });\n } else {\n this._startTime = Date.now();\n\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n };\n\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n onUpdate() {\n var now = Date.now();\n\n if (now >= this._startTime + this._duration) {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n } else {\n this._onUpdate(this._fromValue + this._easing(1) * (this._toValue - this._fromValue));\n }\n\n this.__debouncedOnEnd({\n finished: true\n });\n\n return;\n }\n\n this._onUpdate(this._fromValue + this._easing((now - this._startTime) / this._duration) * (this._toValue - this._fromValue));\n\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop() {\n super.stop();\n this.__active = false;\n clearTimeout(this._timeout);\n global.cancelAnimationFrame(this._animationFrame);\n\n this.__debouncedOnEnd({\n finished: false\n });\n }\n\n}\n\nexport default TimingAnimation;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport { AnimatedEvent, attachNativeEvent } from './AnimatedEvent';\nimport AnimatedAddition from './nodes/AnimatedAddition';\nimport AnimatedDiffClamp from './nodes/AnimatedDiffClamp';\nimport AnimatedDivision from './nodes/AnimatedDivision';\nimport AnimatedInterpolation from './nodes/AnimatedInterpolation';\nimport AnimatedModulo from './nodes/AnimatedModulo';\nimport AnimatedMultiplication from './nodes/AnimatedMultiplication';\nimport AnimatedNode from './nodes/AnimatedNode';\nimport AnimatedProps from './nodes/AnimatedProps';\nimport AnimatedSubtraction from './nodes/AnimatedSubtraction';\nimport AnimatedTracking from './nodes/AnimatedTracking';\nimport AnimatedValue from './nodes/AnimatedValue';\nimport AnimatedValueXY from './nodes/AnimatedValueXY';\nimport DecayAnimation from './animations/DecayAnimation';\nimport SpringAnimation from './animations/SpringAnimation';\nimport TimingAnimation from './animations/TimingAnimation';\nimport createAnimatedComponent from './createAnimatedComponent';\n\nvar add = function add(a, b) {\n return new AnimatedAddition(a, b);\n};\n\nvar subtract = function subtract(a, b) {\n return new AnimatedSubtraction(a, b);\n};\n\nvar divide = function divide(a, b) {\n return new AnimatedDivision(a, b);\n};\n\nvar multiply = function multiply(a, b) {\n return new AnimatedMultiplication(a, b);\n};\n\nvar modulo = function modulo(a, modulus) {\n return new AnimatedModulo(a, modulus);\n};\n\nvar diffClamp = function diffClamp(a, min, max) {\n return new AnimatedDiffClamp(a, min, max);\n};\n\nvar _combineCallbacks = function _combineCallbacks(callback, config) {\n if (callback && config.onComplete) {\n return function () {\n config.onComplete && config.onComplete(...arguments);\n callback && callback(...arguments);\n };\n } else {\n return callback || config.onComplete;\n }\n};\n\nvar maybeVectorAnim = function maybeVectorAnim(value, config, anim) {\n if (value instanceof AnimatedValueXY) {\n var configX = _objectSpread({}, config);\n\n var configY = _objectSpread({}, config);\n\n for (var key in config) {\n var _config$key = config[key],\n x = _config$key.x,\n y = _config$key.y;\n\n if (x !== undefined && y !== undefined) {\n configX[key] = x;\n configY[key] = y;\n }\n }\n\n var aX = anim(value.x, configX);\n var aY = anim(value.y, configY); // We use `stopTogether: false` here because otherwise tracking will break\n // because the second animation will get stopped before it can update.\n\n return parallel([aX, aY], {\n stopTogether: false\n });\n }\n\n return null;\n};\n\nvar spring = function spring(value, config) {\n var _start = function start(animatedValue, configuration, callback) {\n callback = _combineCallbacks(callback, configuration);\n var singleValue = animatedValue;\n var singleConfig = configuration;\n singleValue.stopTracking();\n\n if (configuration.toValue instanceof AnimatedNode) {\n singleValue.track(new AnimatedTracking(singleValue, configuration.toValue, SpringAnimation, singleConfig, callback));\n } else {\n singleValue.animate(new SpringAnimation(singleConfig), callback);\n }\n };\n\n return maybeVectorAnim(value, config, spring) || {\n start: function start(callback) {\n _start(value, config, callback);\n },\n stop: function stop() {\n value.stopAnimation();\n },\n reset: function reset() {\n value.resetAnimation();\n },\n _startNativeLoop: function _startNativeLoop(iterations) {\n var singleConfig = _objectSpread(_objectSpread({}, config), {}, {\n iterations\n });\n\n _start(value, singleConfig);\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return config.useNativeDriver || false;\n }\n };\n};\n\nvar timing = function timing(value, config) {\n var _start2 = function start(animatedValue, configuration, callback) {\n callback = _combineCallbacks(callback, configuration);\n var singleValue = animatedValue;\n var singleConfig = configuration;\n singleValue.stopTracking();\n\n if (configuration.toValue instanceof AnimatedNode) {\n singleValue.track(new AnimatedTracking(singleValue, configuration.toValue, TimingAnimation, singleConfig, callback));\n } else {\n singleValue.animate(new TimingAnimation(singleConfig), callback);\n }\n };\n\n return maybeVectorAnim(value, config, timing) || {\n start: function start(callback) {\n _start2(value, config, callback);\n },\n stop: function stop() {\n value.stopAnimation();\n },\n reset: function reset() {\n value.resetAnimation();\n },\n _startNativeLoop: function _startNativeLoop(iterations) {\n var singleConfig = _objectSpread(_objectSpread({}, config), {}, {\n iterations\n });\n\n _start2(value, singleConfig);\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return config.useNativeDriver || false;\n }\n };\n};\n\nvar decay = function decay(value, config) {\n var _start3 = function start(animatedValue, configuration, callback) {\n callback = _combineCallbacks(callback, configuration);\n var singleValue = animatedValue;\n var singleConfig = configuration;\n singleValue.stopTracking();\n singleValue.animate(new DecayAnimation(singleConfig), callback);\n };\n\n return maybeVectorAnim(value, config, decay) || {\n start: function start(callback) {\n _start3(value, config, callback);\n },\n stop: function stop() {\n value.stopAnimation();\n },\n reset: function reset() {\n value.resetAnimation();\n },\n _startNativeLoop: function _startNativeLoop(iterations) {\n var singleConfig = _objectSpread(_objectSpread({}, config), {}, {\n iterations\n });\n\n _start3(value, singleConfig);\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return config.useNativeDriver || false;\n }\n };\n};\n\nvar sequence = function sequence(animations) {\n var current = 0;\n return {\n start: function start(callback) {\n var onComplete = function onComplete(result) {\n if (!result.finished) {\n callback && callback(result);\n return;\n }\n\n current++;\n\n if (current === animations.length) {\n callback && callback(result);\n return;\n }\n\n animations[current].start(onComplete);\n };\n\n if (animations.length === 0) {\n callback && callback({\n finished: true\n });\n } else {\n animations[current].start(onComplete);\n }\n },\n stop: function stop() {\n if (current < animations.length) {\n animations[current].stop();\n }\n },\n reset: function reset() {\n animations.forEach((animation, idx) => {\n if (idx <= current) {\n animation.reset();\n }\n });\n current = 0;\n },\n _startNativeLoop: function _startNativeLoop() {\n throw new Error('Loops run using the native driver cannot contain Animated.sequence animations');\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return false;\n }\n };\n};\n\nvar parallel = function parallel(animations, config) {\n var doneCount = 0; // Make sure we only call stop() at most once for each animation\n\n var hasEnded = {};\n var stopTogether = !(config && config.stopTogether === false);\n var result = {\n start: function start(callback) {\n if (doneCount === animations.length) {\n callback && callback({\n finished: true\n });\n return;\n }\n\n animations.forEach((animation, idx) => {\n var cb = function cb(endResult) {\n hasEnded[idx] = true;\n doneCount++;\n\n if (doneCount === animations.length) {\n doneCount = 0;\n callback && callback(endResult);\n return;\n }\n\n if (!endResult.finished && stopTogether) {\n result.stop();\n }\n };\n\n if (!animation) {\n cb({\n finished: true\n });\n } else {\n animation.start(cb);\n }\n });\n },\n stop: function stop() {\n animations.forEach((animation, idx) => {\n !hasEnded[idx] && animation.stop();\n hasEnded[idx] = true;\n });\n },\n reset: function reset() {\n animations.forEach((animation, idx) => {\n animation.reset();\n hasEnded[idx] = false;\n doneCount = 0;\n });\n },\n _startNativeLoop: function _startNativeLoop() {\n throw new Error('Loops run using the native driver cannot contain Animated.parallel animations');\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return false;\n }\n };\n return result;\n};\n\nvar delay = function delay(time) {\n // Would be nice to make a specialized implementation\n return timing(new AnimatedValue(0), {\n toValue: 0,\n delay: time,\n duration: 0,\n useNativeDriver: false\n });\n};\n\nvar stagger = function stagger(time, animations) {\n return parallel(animations.map((animation, i) => {\n return sequence([delay(time * i), animation]);\n }));\n};\n\nvar loop = function loop(animation, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$iterations = _ref.iterations,\n iterations = _ref$iterations === void 0 ? -1 : _ref$iterations,\n _ref$resetBeforeItera = _ref.resetBeforeIteration,\n resetBeforeIteration = _ref$resetBeforeItera === void 0 ? true : _ref$resetBeforeItera;\n\n var isFinished = false;\n var iterationsSoFar = 0;\n return {\n start: function start(callback) {\n var restart = function restart(result) {\n if (result === void 0) {\n result = {\n finished: true\n };\n }\n\n if (isFinished || iterationsSoFar === iterations || result.finished === false) {\n callback && callback(result);\n } else {\n iterationsSoFar++;\n resetBeforeIteration && animation.reset();\n animation.start(restart);\n }\n };\n\n if (!animation || iterations === 0) {\n callback && callback({\n finished: true\n });\n } else {\n if (animation._isUsingNativeDriver()) {\n animation._startNativeLoop(iterations);\n } else {\n restart(); // Start looping recursively on the js thread\n }\n }\n },\n stop: function stop() {\n isFinished = true;\n animation.stop();\n },\n reset: function reset() {\n iterationsSoFar = 0;\n isFinished = false;\n animation.reset();\n },\n _startNativeLoop: function _startNativeLoop() {\n throw new Error('Loops run using the native driver cannot contain Animated.loop animations');\n },\n _isUsingNativeDriver: function _isUsingNativeDriver() {\n return animation._isUsingNativeDriver();\n }\n };\n};\n\nfunction forkEvent(event, listener) {\n if (!event) {\n return listener;\n } else if (event instanceof AnimatedEvent) {\n event.__addListener(listener);\n\n return event;\n } else {\n return function () {\n typeof event === 'function' && event(...arguments);\n listener(...arguments);\n };\n }\n}\n\nfunction unforkEvent(event, listener) {\n if (event && event instanceof AnimatedEvent) {\n event.__removeListener(listener);\n }\n}\n\nvar event = function event(argMapping, config) {\n var animatedEvent = new AnimatedEvent(argMapping, config);\n\n if (animatedEvent.__isNative) {\n return animatedEvent;\n } else {\n return animatedEvent.__getHandler();\n }\n};\n/**\n * The `Animated` library is designed to make animations fluid, powerful, and\n * easy to build and maintain. `Animated` focuses on declarative relationships\n * between inputs and outputs, with configurable transforms in between, and\n * simple `start`/`stop` methods to control time-based animation execution.\n * If additional transforms are added, be sure to include them in\n * AnimatedMock.js as well.\n *\n * See https://reactnative.dev/docs/animated.html\n */\n\n\nexport default {\n /**\n * Standard value class for driving animations. Typically initialized with\n * `new Animated.Value(0);`\n *\n * See https://reactnative.dev/docs/animated.html#value\n */\n Value: AnimatedValue,\n\n /**\n * 2D value class for driving 2D animations, such as pan gestures.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html\n */\n ValueXY: AnimatedValueXY,\n\n /**\n * Exported to use the Interpolation type in flow.\n *\n * See https://reactnative.dev/docs/animated.html#interpolation\n */\n Interpolation: AnimatedInterpolation,\n\n /**\n * Exported for ease of type checking. All animated values derive from this\n * class.\n *\n * See https://reactnative.dev/docs/animated.html#node\n */\n Node: AnimatedNode,\n\n /**\n * Animates a value from an initial velocity to zero based on a decay\n * coefficient.\n *\n * See https://reactnative.dev/docs/animated.html#decay\n */\n decay,\n\n /**\n * Animates a value along a timed easing curve. The Easing module has tons of\n * predefined curves, or you can use your own function.\n *\n * See https://reactnative.dev/docs/animated.html#timing\n */\n timing,\n\n /**\n * Animates a value according to an analytical spring model based on\n * damped harmonic oscillation.\n *\n * See https://reactnative.dev/docs/animated.html#spring\n */\n spring,\n\n /**\n * Creates a new Animated value composed from two Animated values added\n * together.\n *\n * See https://reactnative.dev/docs/animated.html#add\n */\n add,\n\n /**\n * Creates a new Animated value composed by subtracting the second Animated\n * value from the first Animated value.\n *\n * See https://reactnative.dev/docs/animated.html#subtract\n */\n subtract,\n\n /**\n * Creates a new Animated value composed by dividing the first Animated value\n * by the second Animated value.\n *\n * See https://reactnative.dev/docs/animated.html#divide\n */\n divide,\n\n /**\n * Creates a new Animated value composed from two Animated values multiplied\n * together.\n *\n * See https://reactnative.dev/docs/animated.html#multiply\n */\n multiply,\n\n /**\n * Creates a new Animated value that is the (non-negative) modulo of the\n * provided Animated value.\n *\n * See https://reactnative.dev/docs/animated.html#modulo\n */\n modulo,\n\n /**\n * Create a new Animated value that is limited between 2 values. It uses the\n * difference between the last value so even if the value is far from the\n * bounds it will start changing when the value starts getting closer again.\n *\n * See https://reactnative.dev/docs/animated.html#diffclamp\n */\n diffClamp,\n\n /**\n * Starts an animation after the given delay.\n *\n * See https://reactnative.dev/docs/animated.html#delay\n */\n delay,\n\n /**\n * Starts an array of animations in order, waiting for each to complete\n * before starting the next. If the current running animation is stopped, no\n * following animations will be started.\n *\n * See https://reactnative.dev/docs/animated.html#sequence\n */\n sequence,\n\n /**\n * Starts an array of animations all at the same time. By default, if one\n * of the animations is stopped, they will all be stopped. You can override\n * this with the `stopTogether` flag.\n *\n * See https://reactnative.dev/docs/animated.html#parallel\n */\n parallel,\n\n /**\n * Array of animations may run in parallel (overlap), but are started in\n * sequence with successive delays. Nice for doing trailing effects.\n *\n * See https://reactnative.dev/docs/animated.html#stagger\n */\n stagger,\n\n /**\n * Loops a given animation continuously, so that each time it reaches the\n * end, it resets and begins again from the start.\n *\n * See https://reactnative.dev/docs/animated.html#loop\n */\n loop,\n\n /**\n * Takes an array of mappings and extracts values from each arg accordingly,\n * then calls `setValue` on the mapped outputs.\n *\n * See https://reactnative.dev/docs/animated.html#event\n */\n event,\n\n /**\n * Make any React component Animatable. Used to create `Animated.View`, etc.\n *\n * See https://reactnative.dev/docs/animated.html#createanimatedcomponent\n */\n createAnimatedComponent,\n\n /**\n * Imperative API to attach an animated value to an event on a view. Prefer\n * using `Animated.event` with `useNativeDrive: true` if possible.\n *\n * See https://reactnative.dev/docs/animated.html#attachnativeevent\n */\n attachNativeEvent,\n\n /**\n * Advanced imperative API for snooping on animated events that are passed in\n * through props. Use values directly where possible.\n *\n * See https://reactnative.dev/docs/animated.html#forkevent\n */\n forkEvent,\n unforkEvent,\n\n /**\n * Expose Event class, so it can be used as a type for type checkers.\n */\n Event: AnimatedEvent,\n __PropsOnlyForTests: AnimatedProps\n};","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport { AnimatedEvent, attachNativeEvent } from './AnimatedEvent';\nimport AnimatedImplementation from './AnimatedImplementation';\nimport AnimatedInterpolation from './nodes/AnimatedInterpolation';\nimport AnimatedNode from './nodes/AnimatedNode';\nimport AnimatedProps from './nodes/AnimatedProps';\nimport AnimatedValue from './nodes/AnimatedValue';\nimport AnimatedValueXY from './nodes/AnimatedValueXY';\nimport createAnimatedComponent from './createAnimatedComponent';\nvar emptyAnimation = {\n start: () => {},\n stop: () => {},\n reset: () => {},\n _startNativeLoop: () => {},\n _isUsingNativeDriver: () => {\n return false;\n }\n};\n\nvar spring = function spring(value, config) {\n var anyValue = value;\n return _objectSpread(_objectSpread({}, emptyAnimation), {}, {\n start: callback => {\n anyValue.setValue(config.toValue);\n callback && callback({\n finished: true\n });\n }\n });\n};\n\nvar timing = function timing(value, config) {\n var anyValue = value;\n return _objectSpread(_objectSpread({}, emptyAnimation), {}, {\n start: callback => {\n anyValue.setValue(config.toValue);\n callback && callback({\n finished: true\n });\n }\n });\n};\n\nvar decay = function decay(value, config) {\n return emptyAnimation;\n};\n\nvar sequence = function sequence(animations) {\n return emptyAnimation;\n};\n\nvar parallel = function parallel(animations, config) {\n return emptyAnimation;\n};\n\nvar delay = function delay(time) {\n return emptyAnimation;\n};\n\nvar stagger = function stagger(time, animations) {\n return emptyAnimation;\n};\n\nvar loop = function loop(animation, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$iterations = _ref.iterations,\n iterations = _ref$iterations === void 0 ? -1 : _ref$iterations;\n\n return emptyAnimation;\n};\n\nvar event = function event(argMapping, config) {\n return null;\n};\n\nexport default {\n Value: AnimatedValue,\n ValueXY: AnimatedValueXY,\n Interpolation: AnimatedInterpolation,\n Node: AnimatedNode,\n decay,\n timing,\n spring,\n add: AnimatedImplementation.add,\n subtract: AnimatedImplementation.subtract,\n divide: AnimatedImplementation.divide,\n multiply: AnimatedImplementation.multiply,\n modulo: AnimatedImplementation.modulo,\n diffClamp: AnimatedImplementation.diffClamp,\n delay,\n sequence,\n parallel,\n stagger,\n loop,\n event,\n createAnimatedComponent,\n attachNativeEvent,\n forkEvent: AnimatedImplementation.forkEvent,\n unforkEvent: AnimatedImplementation.unforkEvent,\n Event: AnimatedEvent,\n __PropsOnlyForTests: AnimatedProps\n};","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport Platform from '../../../exports/Platform';\nimport FlatList from './components/AnimatedFlatList';\nimport Image from './components/AnimatedImage';\nimport ScrollView from './components/AnimatedScrollView';\nimport SectionList from './components/AnimatedSectionList';\nimport Text from './components/AnimatedText';\nimport View from './components/AnimatedView';\nimport AnimatedMock from './AnimatedMock';\nimport AnimatedImplementation from './AnimatedImplementation';\nvar Animated = Platform.isTesting ? AnimatedMock : AnimatedImplementation;\nexport default _objectSpread({\n FlatList,\n Image,\n ScrollView,\n SectionList,\n Text,\n View\n}, Animated);","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport Animated from '../../vendor/react-native/Animated/Animated';\nexport default Animated;","import RCTDeviceEventEmitter from '../../vendor/react-native/NativeEventEmitter/RCTDeviceEventEmitter';\nexport default RCTDeviceEventEmitter;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\nimport canUseDOM from '../../modules/canUseDom';\nvar dimensions = {\n window: {\n fontScale: 1,\n height: 0,\n scale: 1,\n width: 0\n },\n screen: {\n fontScale: 1,\n height: 0,\n scale: 1,\n width: 0\n }\n};\nvar listeners = {};\nvar shouldInit = canUseDOM;\n\nfunction update() {\n if (!canUseDOM) {\n return;\n }\n\n var win = window;\n var docEl = win.document.documentElement;\n dimensions.window = {\n fontScale: 1,\n height: docEl.clientHeight,\n scale: win.devicePixelRatio || 1,\n width: docEl.clientWidth\n };\n dimensions.screen = {\n fontScale: 1,\n height: win.screen.height,\n scale: win.devicePixelRatio || 1,\n width: win.screen.width\n };\n}\n\nfunction handleResize() {\n update();\n\n if (Array.isArray(listeners['change'])) {\n listeners['change'].forEach(handler => handler(dimensions));\n }\n}\n\nexport default class Dimensions {\n static get(dimension) {\n if (shouldInit) {\n shouldInit = false;\n update();\n }\n\n invariant(dimensions[dimension], \"No dimension set for key \" + dimension);\n return dimensions[dimension];\n }\n\n static set(initialDimensions) {\n if (initialDimensions) {\n if (canUseDOM) {\n invariant(false, 'Dimensions cannot be set in the browser');\n } else {\n if (initialDimensions.screen != null) {\n dimensions.screen = initialDimensions.screen;\n }\n\n if (initialDimensions.window != null) {\n dimensions.window = initialDimensions.window;\n }\n }\n }\n }\n\n static addEventListener(type, handler) {\n listeners[type] = listeners[type] || [];\n listeners[type].push(handler);\n return {\n remove: () => {\n this.removeEventListener(type, handler);\n }\n };\n }\n\n static removeEventListener(type, handler) {\n if (Array.isArray(listeners[type])) {\n listeners[type] = listeners[type].filter(_handler => _handler !== handler);\n }\n }\n\n}\n\nif (canUseDOM) {\n window.addEventListener('resize', handleResize, false);\n}","/**\n * Portions Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n\n/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n * @copyright 2014-2015 Gaëtan Renaudeau. MIT License.\n */\n'use strict'; // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\n\nfunction B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\n\nfunction C(aA1) {\n return 3.0 * aA1;\n} // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\nfunction calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n} // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\nfunction getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(aX, _aA, _aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0,\n aA = _aA,\n aB = _aB;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n}\n\nfunction newtonRaphsonIterate(aX, _aGuessT, mX1, mX2) {\n var aGuessT = _aGuessT;\n\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n}\n\nexport default function bezier(mX1, mY1, mX2, mY2) {\n if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n } // Precompute samples table\n\n\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing(x) {\n if (mX1 === mY1 && mX2 === mY2) {\n return x; // linear\n } // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n\n if (x === 0) {\n return 0;\n }\n\n if (x === 1) {\n return 1;\n }\n\n return calcBezier(getTForX(x), mY1, mY2);\n };\n}\n;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nimport _bezier from './bezier';\nvar ease;\n/**\n * The `Easing` module implements common easing functions. This module is used\n * by [Animate.timing()](docs/animate.html#timing) to convey physically\n * believable motion in animations.\n *\n * You can find a visualization of some common easing functions at\n * http://easings.net/\n *\n * ### Predefined animations\n *\n * The `Easing` module provides several predefined animations through the\n * following methods:\n *\n * - [`back`](docs/easing.html#back) provides a simple animation where the\n * object goes slightly back before moving forward\n * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation\n * - [`ease`](docs/easing.html#ease) provides a simple inertial animation\n * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction\n *\n * ### Standard functions\n *\n * Three standard easing functions are provided:\n *\n * - [`linear`](docs/easing.html#linear)\n * - [`quad`](docs/easing.html#quad)\n * - [`cubic`](docs/easing.html#cubic)\n *\n * The [`poly`](docs/easing.html#poly) function can be used to implement\n * quartic, quintic, and other higher power functions.\n *\n * ### Additional functions\n *\n * Additional mathematical functions are provided by the following methods:\n *\n * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve\n * - [`circle`](docs/easing.html#circle) provides a circular function\n * - [`sin`](docs/easing.html#sin) provides a sinusoidal function\n * - [`exp`](docs/easing.html#exp) provides an exponential function\n *\n * The following helpers are used to modify other easing functions.\n *\n * - [`in`](docs/easing.html#in) runs an easing function forwards\n * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical\n * - [`out`](docs/easing.html#out) runs an easing function backwards\n */\n\nclass Easing {\n /**\n * A stepping function, returns 1 for any positive value of `n`.\n */\n static step0(n) {\n return n > 0 ? 1 : 0;\n }\n /**\n * A stepping function, returns 1 if `n` is greater than or equal to 1.\n */\n\n\n static step1(n) {\n return n >= 1 ? 1 : 0;\n }\n /**\n * A linear function, `f(t) = t`. Position correlates to elapsed time one to\n * one.\n *\n * http://cubic-bezier.com/#0,0,1,1\n */\n\n\n static linear(t) {\n return t;\n }\n /**\n * A simple inertial interaction, similar to an object slowly accelerating to\n * speed.\n *\n * http://cubic-bezier.com/#.42,0,1,1\n */\n\n\n static ease(t) {\n if (!ease) {\n ease = Easing.bezier(0.42, 0, 1, 1);\n }\n\n return ease(t);\n }\n /**\n * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed\n * time.\n *\n * http://easings.net/#easeInQuad\n */\n\n\n static quad(t) {\n return t * t;\n }\n /**\n * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed\n * time.\n *\n * http://easings.net/#easeInCubic\n */\n\n\n static cubic(t) {\n return t * t * t;\n }\n /**\n * A power function. Position is equal to the Nth power of elapsed time.\n *\n * n = 4: http://easings.net/#easeInQuart\n * n = 5: http://easings.net/#easeInQuint\n */\n\n\n static poly(n) {\n return t => Math.pow(t, n);\n }\n /**\n * A sinusoidal function.\n *\n * http://easings.net/#easeInSine\n */\n\n\n static sin(t) {\n return 1 - Math.cos(t * Math.PI / 2);\n }\n /**\n * A circular function.\n *\n * http://easings.net/#easeInCirc\n */\n\n\n static circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n /**\n * An exponential function.\n *\n * http://easings.net/#easeInExpo\n */\n\n\n static exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n /**\n * A simple elastic interaction, similar to a spring oscillating back and\n * forth.\n *\n * Default bounciness is 1, which overshoots a little bit once. 0 bounciness\n * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N\n * times.\n *\n * http://easings.net/#easeInElastic\n */\n\n\n static elastic(bounciness) {\n if (bounciness === void 0) {\n bounciness = 1;\n }\n\n var p = bounciness * Math.PI;\n return t => 1 - Math.pow(Math.cos(t * Math.PI / 2), 3) * Math.cos(t * p);\n }\n /**\n * Use with `Animated.parallel()` to create a simple effect where the object\n * animates back slightly as the animation starts.\n *\n * Wolfram Plot:\n *\n * - http://tiny.cc/back_default (s = 1.70158, default)\n */\n\n\n static back(s) {\n if (s === void 0) {\n s = 1.70158;\n }\n\n return t => t * t * ((s + 1) * t - s);\n }\n /**\n * Provides a simple bouncing effect.\n *\n * http://easings.net/#easeInBounce\n */\n\n\n static bounce(t) {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n var _t = t - 1.5 / 2.75;\n\n return 7.5625 * _t * _t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n var _t2 = t - 2.25 / 2.75;\n\n return 7.5625 * _t2 * _t2 + 0.9375;\n }\n\n var t2 = t - 2.625 / 2.75;\n return 7.5625 * t2 * t2 + 0.984375;\n }\n /**\n * Provides a cubic bezier curve, equivalent to CSS Transitions'\n * `transition-timing-function`.\n *\n * A useful tool to visualize cubic bezier curves can be found at\n * http://cubic-bezier.com/\n */\n\n\n static bezier(x1, y1, x2, y2) {\n return _bezier(x1, y1, x2, y2);\n }\n /**\n * Runs an easing function forwards.\n */\n\n\n static in(easing) {\n return easing;\n }\n /**\n * Runs an easing function backwards.\n */\n\n\n static out(easing) {\n return t => 1 - easing(1 - t);\n }\n /**\n * Makes any easing function symmetrical. The easing function will run\n * forwards for half of the duration, then backwards for the rest of the\n * duration.\n */\n\n\n static inOut(easing) {\n return t => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n\n}\n\nexport default Easing;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport Easing from '../../vendor/react-native/Animated/Easing';\nexport default Easing;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n/*\n * @returns {bool} true if different, false if equal\n */\n\nvar deepDiffer = function deepDiffer(one, two, maxDepth) {\n if (maxDepth === void 0) {\n maxDepth = -1;\n }\n\n if (maxDepth === 0) {\n return true;\n }\n\n if (one === two) {\n // Short circuit on identical object references instead of traversing them.\n return false;\n }\n\n if (typeof one === 'function' && typeof two === 'function') {\n // We consider all functions equal\n return false;\n }\n\n if (typeof one !== 'object' || one === null) {\n // Primitives can be directly compared\n return one !== two;\n }\n\n if (typeof two !== 'object' || two === null) {\n // We know they are different because the previous case would have triggered\n // otherwise.\n return true;\n }\n\n if (one.constructor !== two.constructor) {\n return true;\n }\n\n if (Array.isArray(one)) {\n // We know two is also an array because the constructors are equal\n var len = one.length;\n\n if (two.length !== len) {\n return true;\n }\n\n for (var ii = 0; ii < len; ii++) {\n if (deepDiffer(one[ii], two[ii], maxDepth - 1)) {\n return true;\n }\n }\n } else {\n for (var key in one) {\n if (deepDiffer(one[key], two[key], maxDepth - 1)) {\n return true;\n }\n }\n\n for (var twoKey in two) {\n // The only case we haven't checked yet is keys that are in two but aren't\n // in one, which means they are different.\n if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport default deepDiffer;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nvar _excluded = [\"numColumns\", \"columnWrapperStyle\", \"removeClippedSubviews\"];\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport Platform from '../../../exports/Platform';\nimport deepDiffer from '../deepDiffer';\nimport * as React from 'react';\nimport View from '../../../exports/View';\nimport VirtualizedList from '../VirtualizedList';\nimport StyleSheet from '../../../exports/StyleSheet';\nimport invariant from 'fbjs/lib/invariant';\nimport { keyExtractor as defaultKeyExtractor } from '../VirtualizeUtils';\n\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n// removeClippedSubviewsOrDefault(this.props.removeClippedSubviews)\nfunction removeClippedSubviewsOrDefault(removeClippedSubviews) {\n return removeClippedSubviews !== null && removeClippedSubviews !== void 0 ? removeClippedSubviews : Platform.OS === 'android';\n} // numColumnsOrDefault(this.props.numColumns)\n\n\nfunction numColumnsOrDefault(numColumns) {\n return numColumns !== null && numColumns !== void 0 ? numColumns : 1;\n}\n\n/**\n * A performant interface for rendering simple, flat lists, supporting the most handy features:\n *\n * - Fully cross-platform.\n * - Optional horizontal mode.\n * - Configurable viewability callbacks.\n * - Header support.\n * - Footer support.\n * - Separator support.\n * - Pull to Refresh.\n * - Scroll loading.\n * - ScrollToIndex support.\n *\n * If you need section support, use [``](docs/sectionlist.html).\n *\n * Minimal Example:\n *\n * {item.key}}\n * />\n *\n * More complex, multi-select example demonstrating `PureComponent` usage for perf optimization and avoiding bugs.\n *\n * - By binding the `onPressItem` handler, the props will remain `===` and `PureComponent` will\n * prevent wasteful re-renders unless the actual `id`, `selected`, or `title` props change, even\n * if the components rendered in `MyListItem` did not have such optimizations.\n * - By passing `extraData={this.state}` to `FlatList` we make sure `FlatList` itself will re-render\n * when the `state.selected` changes. Without setting this prop, `FlatList` would not know it\n * needs to re-render any items because it is also a `PureComponent` and the prop comparison will\n * not show any changes.\n * - `keyExtractor` tells the list to use the `id`s for the react keys instead of the default `key` property.\n *\n *\n * class MyListItem extends React.PureComponent {\n * _onPress = () => {\n * this.props.onPressItem(this.props.id);\n * };\n *\n * render() {\n * const textColor = this.props.selected ? \"red\" : \"black\";\n * return (\n * \n * \n * \n * {this.props.title}\n * \n * \n * \n * );\n * }\n * }\n *\n * class MultiSelectList extends React.PureComponent {\n * state = {selected: (new Map(): Map)};\n *\n * _keyExtractor = (item, index) => item.id;\n *\n * _onPressItem = (id: string) => {\n * // updater functions are preferred for transactional updates\n * this.setState((state) => {\n * // copy the map rather than modifying state.\n * const selected = new Map(state.selected);\n * selected.set(id, !selected.get(id)); // toggle\n * return {selected};\n * });\n * };\n *\n * _renderItem = ({item}) => (\n * \n * );\n *\n * render() {\n * return (\n * \n * );\n * }\n * }\n *\n * This is a convenience wrapper around [``](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n *\n * Also inherits [ScrollView Props](docs/scrollview.html#props), unless it is nested in another FlatList of same orientation.\n */\nclass FlatList extends React.PureComponent {\n /**\n * Scrolls to the end of the content. May be janky without `getItemLayout` prop.\n */\n scrollToEnd(params) {\n if (this._listRef) {\n this._listRef.scrollToEnd(params);\n }\n }\n /**\n * Scrolls to the item at the specified index such that it is positioned in the viewable area\n * such that `viewPosition` 0 places it at the top, 1 at the bottom, and 0.5 centered in the\n * middle. `viewOffset` is a fixed number of pixels to offset the final target position.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n\n\n scrollToIndex(params) {\n if (this._listRef) {\n this._listRef.scrollToIndex(params);\n }\n }\n /**\n * Requires linear scan through data - use `scrollToIndex` instead if possible.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n\n\n scrollToItem(params) {\n if (this._listRef) {\n this._listRef.scrollToItem(params);\n }\n }\n /**\n * Scroll to a specific content pixel offset in the list.\n *\n * Check out [scrollToOffset](docs/virtualizedlist.html#scrolltooffset) of VirtualizedList\n */\n\n\n scrollToOffset(params) {\n if (this._listRef) {\n this._listRef.scrollToOffset(params);\n }\n }\n /**\n * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n * taps on items or by navigation actions.\n */\n\n\n recordInteraction() {\n if (this._listRef) {\n this._listRef.recordInteraction();\n }\n }\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n\n\n flashScrollIndicators() {\n if (this._listRef) {\n this._listRef.flashScrollIndicators();\n }\n }\n /**\n * Provides a handle to the underlying scroll responder.\n */\n\n\n getScrollResponder() {\n if (this._listRef) {\n return this._listRef.getScrollResponder();\n }\n }\n /**\n * Provides a reference to the underlying host component\n */\n\n\n getNativeScrollRef() {\n if (this._listRef) {\n /* $FlowFixMe[incompatible-return] Suppresses errors found when fixing\n * TextInput typing */\n return this._listRef.getScrollRef();\n }\n }\n\n getScrollableNode() {\n if (this._listRef) {\n return this._listRef.getScrollableNode();\n }\n }\n\n setNativeProps(props) {\n if (this._listRef) {\n this._listRef.setNativeProps(props);\n }\n }\n\n constructor(_props) {\n super(_props);\n this._virtualizedListPairs = [];\n\n this._captureRef = ref => {\n this._listRef = ref;\n };\n\n this._getItem = (data, index) => {\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n\n if (numColumns > 1) {\n var ret = [];\n\n for (var kk = 0; kk < numColumns; kk++) {\n var _item = data[index * numColumns + kk];\n\n if (_item != null) {\n ret.push(_item);\n }\n }\n\n return ret;\n } else {\n return data[index];\n }\n };\n\n this._getItemCount = data => {\n if (data) {\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n return numColumns > 1 ? Math.ceil(data.length / numColumns) : data.length;\n } else {\n return 0;\n }\n };\n\n this._keyExtractor = (items, index) => {\n var _this$props$keyExtrac;\n\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n var keyExtractor = (_this$props$keyExtrac = this.props.keyExtractor) !== null && _this$props$keyExtrac !== void 0 ? _this$props$keyExtrac : defaultKeyExtractor;\n\n if (numColumns > 1) {\n if (Array.isArray(items)) {\n return items.map((item, kk) => keyExtractor(item, index * numColumns + kk)).join(':');\n } else {\n invariant(Array.isArray(items), 'FlatList: Encountered internal consistency error, expected each item to consist of an ' + 'array with 1-%s columns; instead, received a single item.', numColumns);\n }\n } else {\n // $FlowFixMe[incompatible-call] Can't call keyExtractor with an array\n return keyExtractor(items, index);\n }\n };\n\n this._renderer = () => {\n var _this$props = this.props,\n ListItemComponent = _this$props.ListItemComponent,\n renderItem = _this$props.renderItem,\n columnWrapperStyle = _this$props.columnWrapperStyle;\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n var virtualizedListRenderKey = ListItemComponent ? 'ListItemComponent' : 'renderItem';\n\n var renderer = props => {\n if (ListItemComponent) {\n // $FlowFixMe[not-a-component] Component isn't valid\n // $FlowFixMe[incompatible-type-arg] Component isn't valid\n // $FlowFixMe[incompatible-return] Component isn't valid\n return /*#__PURE__*/React.createElement(ListItemComponent, props);\n } else if (renderItem) {\n // $FlowFixMe[incompatible-call]\n return renderItem(props);\n } else {\n return null;\n }\n };\n\n return {\n /* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb)\n * This comment suppresses an error found when Flow v0.111 was deployed.\n * To see the error, delete this comment and run Flow. */\n [virtualizedListRenderKey]: info => {\n if (numColumns > 1) {\n var _item2 = info.item,\n _index = info.index;\n invariant(Array.isArray(_item2), 'Expected array of items with numColumns > 1');\n return /*#__PURE__*/React.createElement(View, {\n style: StyleSheet.compose(styles.row, columnWrapperStyle)\n }, _item2.map((it, kk) => {\n var element = renderer({\n item: it,\n index: _index * numColumns + kk,\n separators: info.separators\n });\n return element != null ? /*#__PURE__*/React.createElement(React.Fragment, {\n key: kk\n }, element) : null;\n }));\n } else {\n return renderer(info);\n }\n }\n };\n };\n\n this._checkProps(this.props);\n\n if (this.props.viewabilityConfigCallbackPairs) {\n this._virtualizedListPairs = this.props.viewabilityConfigCallbackPairs.map(pair => ({\n viewabilityConfig: pair.viewabilityConfig,\n onViewableItemsChanged: this._createOnViewableItemsChanged(pair.onViewableItemsChanged)\n }));\n } else if (this.props.onViewableItemsChanged) {\n this._virtualizedListPairs.push({\n /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This\n * comment suppresses an error found when Flow v0.63 was deployed. To\n * see the error delete this comment and run Flow. */\n viewabilityConfig: this.props.viewabilityConfig,\n onViewableItemsChanged: this._createOnViewableItemsChanged(this.props.onViewableItemsChanged)\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n invariant(prevProps.numColumns === this.props.numColumns, 'Changing numColumns on the fly is not supported. Change the key prop on FlatList when ' + 'changing the number of columns to force a fresh render of the component.');\n invariant(prevProps.onViewableItemsChanged === this.props.onViewableItemsChanged, 'Changing onViewableItemsChanged on the fly is not supported');\n invariant(!deepDiffer(prevProps.viewabilityConfig, this.props.viewabilityConfig), 'Changing viewabilityConfig on the fly is not supported');\n invariant(prevProps.viewabilityConfigCallbackPairs === this.props.viewabilityConfigCallbackPairs, 'Changing viewabilityConfigCallbackPairs on the fly is not supported');\n\n this._checkProps(this.props);\n }\n\n _checkProps(props) {\n var getItem = props.getItem,\n getItemCount = props.getItemCount,\n horizontal = props.horizontal,\n columnWrapperStyle = props.columnWrapperStyle,\n onViewableItemsChanged = props.onViewableItemsChanged,\n viewabilityConfigCallbackPairs = props.viewabilityConfigCallbackPairs;\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n invariant(!getItem && !getItemCount, 'FlatList does not support custom data formats.');\n\n if (numColumns > 1) {\n invariant(!horizontal, 'numColumns does not support horizontal.');\n } else {\n invariant(!columnWrapperStyle, 'columnWrapperStyle not supported for single column lists');\n }\n\n invariant(!(onViewableItemsChanged && viewabilityConfigCallbackPairs), 'FlatList does not support setting both onViewableItemsChanged and ' + 'viewabilityConfigCallbackPairs.');\n }\n\n _pushMultiColumnViewable(arr, v) {\n var _this$props$keyExtrac2;\n\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n var keyExtractor = (_this$props$keyExtrac2 = this.props.keyExtractor) !== null && _this$props$keyExtrac2 !== void 0 ? _this$props$keyExtrac2 : defaultKeyExtractor;\n v.item.forEach((item, ii) => {\n invariant(v.index != null, 'Missing index!');\n var index = v.index * numColumns + ii;\n arr.push(_objectSpread(_objectSpread({}, v), {}, {\n item,\n key: keyExtractor(item, index),\n index\n }));\n });\n }\n\n _createOnViewableItemsChanged(onViewableItemsChanged) {\n return info => {\n var numColumns = numColumnsOrDefault(this.props.numColumns);\n\n if (onViewableItemsChanged) {\n if (numColumns > 1) {\n var changed = [];\n var viewableItems = [];\n info.viewableItems.forEach(v => this._pushMultiColumnViewable(viewableItems, v));\n info.changed.forEach(v => this._pushMultiColumnViewable(changed, v));\n onViewableItemsChanged({\n viewableItems,\n changed\n });\n } else {\n onViewableItemsChanged(info);\n }\n }\n };\n }\n\n render() {\n var _this$props2 = this.props,\n numColumns = _this$props2.numColumns,\n columnWrapperStyle = _this$props2.columnWrapperStyle,\n _removeClippedSubviews = _this$props2.removeClippedSubviews,\n restProps = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n return /*#__PURE__*/React.createElement(VirtualizedList, _extends({}, restProps, {\n getItem: this._getItem,\n getItemCount: this._getItemCount,\n keyExtractor: this._keyExtractor,\n ref: this._captureRef,\n viewabilityConfigCallbackPairs: this._virtualizedListPairs,\n removeClippedSubviews: removeClippedSubviewsOrDefault(_removeClippedSubviews)\n }, this._renderer()));\n }\n\n}\n\nvar styles = StyleSheet.create({\n row: {\n flexDirection: 'row'\n }\n});\nexport default FlatList;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport FlatList from '../../vendor/react-native/FlatList';\nexport default FlatList;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar I18nManager = {\n allowRTL() {\n return;\n },\n\n forceRTL() {\n return;\n },\n\n getConstants() {\n return {\n isRTL: false\n };\n }\n\n};\nexport default I18nManager;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar assets = [];\nexport function registerAsset(asset) {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\nexport function getAssetByID(assetId) {\n return assets[assetId - 1];\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar dataUriPattern = /^data:/;\nexport class ImageUriCache {\n static has(uri) {\n var entries = ImageUriCache._entries;\n var isDataUri = dataUriPattern.test(uri);\n return isDataUri || Boolean(entries[uri]);\n }\n\n static add(uri) {\n var entries = ImageUriCache._entries;\n var lastUsedTimestamp = Date.now();\n\n if (entries[uri]) {\n entries[uri].lastUsedTimestamp = lastUsedTimestamp;\n entries[uri].refCount += 1;\n } else {\n entries[uri] = {\n lastUsedTimestamp,\n refCount: 1\n };\n }\n }\n\n static remove(uri) {\n var entries = ImageUriCache._entries;\n\n if (entries[uri]) {\n entries[uri].refCount -= 1;\n } // Free up entries when the cache is \"full\"\n\n\n ImageUriCache._cleanUpIfNeeded();\n }\n\n static _cleanUpIfNeeded() {\n var entries = ImageUriCache._entries;\n var imageUris = Object.keys(entries);\n\n if (imageUris.length + 1 > ImageUriCache._maximumEntries) {\n var leastRecentlyUsedKey;\n var leastRecentlyUsedEntry;\n imageUris.forEach(uri => {\n var entry = entries[uri];\n\n if ((!leastRecentlyUsedEntry || entry.lastUsedTimestamp < leastRecentlyUsedEntry.lastUsedTimestamp) && entry.refCount === 0) {\n leastRecentlyUsedKey = uri;\n leastRecentlyUsedEntry = entry;\n }\n });\n\n if (leastRecentlyUsedKey) {\n delete entries[leastRecentlyUsedKey];\n }\n }\n }\n\n}\nImageUriCache._maximumEntries = 256;\nImageUriCache._entries = {};\nvar id = 0;\nvar requests = {};\nvar ImageLoader = {\n abort(requestId) {\n var image = requests[\"\" + requestId];\n\n if (image) {\n image.onerror = null;\n image.onload = null;\n image = null;\n delete requests[\"\" + requestId];\n }\n },\n\n getSize(uri, success, failure) {\n var complete = false;\n var interval = setInterval(callback, 16);\n var requestId = ImageLoader.load(uri, callback, errorCallback);\n\n function callback() {\n var image = requests[\"\" + requestId];\n\n if (image) {\n var naturalHeight = image.naturalHeight,\n naturalWidth = image.naturalWidth;\n\n if (naturalHeight && naturalWidth) {\n success(naturalWidth, naturalHeight);\n complete = true;\n }\n }\n\n if (complete) {\n ImageLoader.abort(requestId);\n clearInterval(interval);\n }\n }\n\n function errorCallback() {\n if (typeof failure === 'function') {\n failure();\n }\n\n ImageLoader.abort(requestId);\n clearInterval(interval);\n }\n },\n\n has(uri) {\n return ImageUriCache.has(uri);\n },\n\n load(uri, onLoad, onError) {\n id += 1;\n var image = new window.Image();\n image.onerror = onError;\n\n image.onload = e => {\n // avoid blocking the main thread\n var onDecode = () => onLoad({\n nativeEvent: e\n });\n\n if (typeof image.decode === 'function') {\n // Safari currently throws exceptions when decoding svgs.\n // We want to catch that error and allow the load handler\n // to be forwarded to the onLoad handler in this case\n image.decode().then(onDecode, onDecode);\n } else {\n setTimeout(onDecode, 0);\n }\n };\n\n image.src = uri;\n requests[\"\" + id] = image;\n return id;\n },\n\n prefetch(uri) {\n return new Promise((resolve, reject) => {\n ImageLoader.load(uri, () => {\n // Add the uri to the cache so it can be immediately displayed when used\n // but also immediately remove it to correctly reflect that it has no active references\n ImageUriCache.add(uri);\n ImageUriCache.remove(uri);\n resolve();\n }, reject);\n });\n },\n\n queryCache(uris) {\n var result = {};\n uris.forEach(u => {\n if (ImageUriCache.has(u)) {\n result[u] = 'disk/memory';\n }\n });\n return Promise.resolve(result);\n }\n\n};\nexport default ImageLoader;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"accessibilityLabel\", \"blurRadius\", \"defaultSource\", \"draggable\", \"onError\", \"onLayout\", \"onLoad\", \"onLoadEnd\", \"onLoadStart\", \"pointerEvents\", \"source\", \"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport { getAssetByID } from '../../modules/AssetRegistry';\nimport { createBoxShadowValue } from '../StyleSheet/preprocess';\nimport ImageLoader from '../../modules/ImageLoader';\nimport PixelRatio from '../PixelRatio';\nimport StyleSheet from '../StyleSheet';\nimport TextAncestorContext from '../Text/TextAncestorContext';\nimport View from '../View';\nvar ERRORED = 'ERRORED';\nvar LOADED = 'LOADED';\nvar LOADING = 'LOADING';\nvar IDLE = 'IDLE';\nvar _filterId = 0;\nvar svgDataUriPattern = /^(data:image\\/svg\\+xml;utf8,)(.*)/;\n\nfunction createTintColorSVG(tintColor, id) {\n return tintColor && id != null ? /*#__PURE__*/React.createElement(\"svg\", {\n style: {\n position: 'absolute',\n height: 0,\n visibility: 'hidden',\n width: 0\n }\n }, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"tint-\" + id,\n suppressHydrationWarning: true\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodColor: \"\" + tintColor,\n key: tintColor\n }), /*#__PURE__*/React.createElement(\"feComposite\", {\n in2: \"SourceAlpha\",\n operator: \"atop\"\n })))) : null;\n}\n\nfunction getFlatStyle(style, blurRadius, filterId) {\n var flatStyle = StyleSheet.flatten(style);\n var filter = flatStyle.filter,\n resizeMode = flatStyle.resizeMode,\n shadowOffset = flatStyle.shadowOffset,\n tintColor = flatStyle.tintColor; // Add CSS filters\n // React Native exposes these features as props and proprietary styles\n\n var filters = [];\n var _filter = null;\n\n if (filter) {\n filters.push(filter);\n }\n\n if (blurRadius) {\n filters.push(\"blur(\" + blurRadius + \"px)\");\n }\n\n if (shadowOffset) {\n var shadowString = createBoxShadowValue(flatStyle);\n\n if (shadowString) {\n filters.push(\"drop-shadow(\" + shadowString + \")\");\n }\n }\n\n if (tintColor && filterId != null) {\n filters.push(\"url(#tint-\" + filterId + \")\");\n }\n\n if (filters.length > 0) {\n _filter = filters.join(' ');\n } // These styles are converted to CSS filters applied to the\n // element displaying the background image.\n\n\n delete flatStyle.blurRadius;\n delete flatStyle.shadowColor;\n delete flatStyle.shadowOpacity;\n delete flatStyle.shadowOffset;\n delete flatStyle.shadowRadius;\n delete flatStyle.tintColor; // These styles are not supported on View\n\n delete flatStyle.overlayColor;\n delete flatStyle.resizeMode;\n return [flatStyle, resizeMode, _filter, tintColor];\n}\n\nfunction resolveAssetDimensions(source) {\n if (typeof source === 'number') {\n var _getAssetByID = getAssetByID(source),\n _height = _getAssetByID.height,\n _width = _getAssetByID.width;\n\n return {\n height: _height,\n width: _width\n };\n } else if (source != null && !Array.isArray(source) && typeof source === 'object') {\n var _height2 = source.height,\n _width2 = source.width;\n return {\n height: _height2,\n width: _width2\n };\n }\n}\n\nfunction resolveAssetUri(source) {\n var uri = null;\n\n if (typeof source === 'number') {\n // get the URI from the packager\n var asset = getAssetByID(source);\n\n if (asset == null) {\n throw new Error(\"Image: asset with ID \\\"\" + source + \"\\\" could not be found. Please check the image source or packager.\");\n }\n\n var scale = asset.scales[0];\n\n if (asset.scales.length > 1) {\n var preferredScale = PixelRatio.get(); // Get the scale which is closest to the preferred scale\n\n scale = asset.scales.reduce((prev, curr) => Math.abs(curr - preferredScale) < Math.abs(prev - preferredScale) ? curr : prev);\n }\n\n var scaleSuffix = scale !== 1 ? \"@\" + scale + \"x\" : '';\n uri = asset ? asset.httpServerLocation + \"/\" + asset.name + scaleSuffix + \".\" + asset.type : '';\n } else if (typeof source === 'string') {\n uri = source;\n } else if (source && typeof source.uri === 'string') {\n uri = source.uri;\n }\n\n if (uri) {\n var match = uri.match(svgDataUriPattern); // inline SVG markup may contain characters (e.g., #, \") that need to be escaped\n\n if (match) {\n var prefix = match[1],\n svg = match[2];\n var encodedSvg = encodeURIComponent(svg);\n return \"\" + prefix + encodedSvg;\n }\n }\n\n return uri;\n}\n\nvar Image = /*#__PURE__*/React.forwardRef((props, ref) => {\n var accessibilityLabel = props.accessibilityLabel,\n blurRadius = props.blurRadius,\n defaultSource = props.defaultSource,\n draggable = props.draggable,\n onError = props.onError,\n onLayout = props.onLayout,\n onLoad = props.onLoad,\n onLoadEnd = props.onLoadEnd,\n onLoadStart = props.onLoadStart,\n pointerEvents = props.pointerEvents,\n source = props.source,\n style = props.style,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (props.children) {\n throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.');\n }\n }\n\n var _React$useState = React.useState(() => {\n var uri = resolveAssetUri(source);\n\n if (uri != null) {\n var isLoaded = ImageLoader.has(uri);\n\n if (isLoaded) {\n return LOADED;\n }\n }\n\n return IDLE;\n }),\n state = _React$useState[0],\n updateState = _React$useState[1];\n\n var _React$useState2 = React.useState({}),\n layout = _React$useState2[0],\n updateLayout = _React$useState2[1];\n\n var hasTextAncestor = React.useContext(TextAncestorContext);\n var hiddenImageRef = React.useRef(null);\n var filterRef = React.useRef(_filterId++);\n var requestRef = React.useRef(null);\n var shouldDisplaySource = state === LOADED || state === LOADING && defaultSource == null;\n\n var _getFlatStyle = getFlatStyle(style, blurRadius, filterRef.current),\n flatStyle = _getFlatStyle[0],\n _resizeMode = _getFlatStyle[1],\n filter = _getFlatStyle[2],\n tintColor = _getFlatStyle[3];\n\n var resizeMode = props.resizeMode || _resizeMode || 'cover';\n var selectedSource = shouldDisplaySource ? source : defaultSource;\n var displayImageUri = resolveAssetUri(selectedSource);\n var imageSizeStyle = resolveAssetDimensions(selectedSource);\n var backgroundImage = displayImageUri ? \"url(\\\"\" + displayImageUri + \"\\\")\" : null;\n var backgroundSize = getBackgroundSize(); // Accessibility image allows users to trigger the browser's image context menu\n\n var hiddenImage = displayImageUri ? createElement('img', {\n alt: accessibilityLabel || '',\n style: styles.accessibilityImage$raw,\n draggable: draggable || false,\n ref: hiddenImageRef,\n src: displayImageUri\n }) : null;\n\n function getBackgroundSize() {\n if (hiddenImageRef.current != null && (resizeMode === 'center' || resizeMode === 'repeat')) {\n var _hiddenImageRef$curre = hiddenImageRef.current,\n naturalHeight = _hiddenImageRef$curre.naturalHeight,\n naturalWidth = _hiddenImageRef$curre.naturalWidth;\n var _height3 = layout.height,\n _width3 = layout.width;\n\n if (naturalHeight && naturalWidth && _height3 && _width3) {\n var scaleFactor = Math.min(1, _width3 / naturalWidth, _height3 / naturalHeight);\n var x = Math.ceil(scaleFactor * naturalWidth);\n var y = Math.ceil(scaleFactor * naturalHeight);\n return x + \"px \" + y + \"px\";\n }\n }\n }\n\n function handleLayout(e) {\n if (resizeMode === 'center' || resizeMode === 'repeat' || onLayout) {\n var _layout = e.nativeEvent.layout;\n onLayout && onLayout(e);\n updateLayout(_layout);\n }\n } // Image loading\n\n\n var uri = resolveAssetUri(source);\n React.useEffect(() => {\n abortPendingRequest();\n\n if (uri != null) {\n updateState(LOADING);\n\n if (onLoadStart) {\n onLoadStart();\n }\n\n requestRef.current = ImageLoader.load(uri, function load(e) {\n updateState(LOADED);\n\n if (onLoad) {\n onLoad(e);\n }\n\n if (onLoadEnd) {\n onLoadEnd();\n }\n }, function error() {\n updateState(ERRORED);\n\n if (onError) {\n onError({\n nativeEvent: {\n error: \"Failed to load resource \" + uri + \" (404)\"\n }\n });\n }\n\n if (onLoadEnd) {\n onLoadEnd();\n }\n });\n }\n\n function abortPendingRequest() {\n if (requestRef.current != null) {\n ImageLoader.abort(requestRef.current);\n requestRef.current = null;\n }\n }\n\n return abortPendingRequest;\n }, [uri, requestRef, updateState, onError, onLoad, onLoadEnd, onLoadStart]);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, {\n accessibilityLabel: accessibilityLabel,\n onLayout: handleLayout,\n pointerEvents: pointerEvents,\n ref: ref,\n style: [styles.root, hasTextAncestor && styles.inline, imageSizeStyle, flatStyle]\n }), /*#__PURE__*/React.createElement(View, {\n style: [styles.image, resizeModeStyles[resizeMode], {\n backgroundImage,\n filter\n }, backgroundSize != null && {\n backgroundSize\n }],\n suppressHydrationWarning: true\n }), hiddenImage, createTintColorSVG(tintColor, filterRef.current));\n});\nImage.displayName = 'Image'; // $FlowIgnore: This is the correct type, but casting makes it unhappy since the variables aren't defined yet\n\nvar ImageWithStatics = Image;\n\nImageWithStatics.getSize = function (uri, success, failure) {\n ImageLoader.getSize(uri, success, failure);\n};\n\nImageWithStatics.prefetch = function (uri) {\n return ImageLoader.prefetch(uri);\n};\n\nImageWithStatics.queryCache = function (uris) {\n return ImageLoader.queryCache(uris);\n};\n\nvar styles = StyleSheet.create({\n root: {\n flexBasis: 'auto',\n overflow: 'hidden',\n zIndex: 0\n },\n inline: {\n display: 'inline-flex'\n },\n image: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n backgroundColor: 'transparent',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n height: '100%',\n width: '100%',\n zIndex: -1\n }),\n accessibilityImage$raw: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n height: '100%',\n opacity: 0,\n width: '100%',\n zIndex: -1\n })\n});\nvar resizeModeStyles = StyleSheet.create({\n center: {\n backgroundSize: 'auto'\n },\n contain: {\n backgroundSize: 'contain'\n },\n cover: {\n backgroundSize: 'cover'\n },\n none: {\n backgroundPosition: '0',\n backgroundSize: 'auto'\n },\n repeat: {\n backgroundPosition: '0',\n backgroundRepeat: 'repeat',\n backgroundSize: 'auto'\n },\n stretch: {\n backgroundSize: '100% 100%'\n }\n});\nexport default ImageWithStatics;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport canUseDOM from '../canUseDom';\n\nvar _requestIdleCallback = function _requestIdleCallback(cb, options) {\n return setTimeout(() => {\n var start = Date.now();\n cb({\n didTimeout: false,\n\n timeRemaining() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n\n });\n }, 1);\n};\n\nvar _cancelIdleCallback = function _cancelIdleCallback(id) {\n clearTimeout(id);\n};\n\nvar isSupported = canUseDOM && typeof window.requestIdleCallback !== 'undefined';\nvar requestIdleCallback = isSupported ? window.requestIdleCallback : _requestIdleCallback;\nvar cancelIdleCallback = isSupported ? window.cancelIdleCallback : _cancelIdleCallback;\nexport default requestIdleCallback;\nexport { cancelIdleCallback };","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\nimport requestIdleCallback, { cancelIdleCallback } from '../../modules/requestIdleCallback';\nvar InteractionManager = {\n Events: {\n interactionStart: 'interactionStart',\n interactionComplete: 'interactionComplete'\n },\n\n /**\n * Schedule a function to run after all interactions have completed.\n */\n runAfterInteractions(task) {\n var handle;\n var promise = new Promise(resolve => {\n handle = requestIdleCallback(() => {\n if (task) {\n resolve(task());\n } else {\n resolve();\n }\n });\n });\n return {\n then: promise.then.bind(promise),\n done: promise.then.bind(promise),\n cancel: () => {\n cancelIdleCallback(handle);\n }\n };\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle() {\n return 1;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle) {\n invariant(!!handle, 'Must provide a handle to clear.');\n },\n\n addListener: () => {}\n};\nexport default InteractionManager;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport dismissKeyboard from '../../modules/dismissKeyboard';\nvar Keyboard = {\n addListener() {\n return {\n remove: () => {}\n };\n },\n\n dismiss() {\n dismissKeyboard();\n },\n\n removeAllListeners() {},\n\n removeListener() {}\n\n};\nexport default Keyboard;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDOM from '../../modules/canUseDom';\n\nfunction ModalPortal(props) {\n var children = props.children;\n var elementRef = React.useRef(null);\n\n if (canUseDOM && !elementRef.current) {\n var element = document.createElement('div');\n\n if (element && document.body) {\n document.body.appendChild(element);\n elementRef.current = element;\n }\n }\n\n React.useEffect(() => {\n if (canUseDOM) {\n return () => {\n if (document.body && elementRef.current) {\n document.body.removeChild(elementRef.current);\n elementRef.current = null;\n }\n };\n }\n }, []);\n return elementRef.current && canUseDOM ? /*#__PURE__*/ReactDOM.createPortal(children, elementRef.current) : null;\n}\n\nexport default ModalPortal;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport createElement from '../createElement';\nvar ANIMATION_DURATION = 300;\n\nfunction getAnimationStyle(animationType, visible) {\n if (animationType === 'slide') {\n return visible ? animatedSlideInStyles : animatedSlideOutStyles;\n }\n\n if (animationType === 'fade') {\n return visible ? animatedFadeInStyles : animatedFadeOutStyles;\n }\n\n return visible ? styles.container : styles.hidden;\n}\n\nfunction ModalAnimation(props) {\n var animationType = props.animationType,\n children = props.children,\n onDismiss = props.onDismiss,\n onShow = props.onShow,\n visible = props.visible;\n\n var _React$useState = React.useState(false),\n isRendering = _React$useState[0],\n setIsRendering = _React$useState[1];\n\n var wasVisible = React.useRef(false);\n var isAnimated = animationType && animationType !== 'none';\n var animationEndCallback = React.useCallback(e => {\n if (e && e.currentTarget !== e.target) {\n // If the event was generated for something NOT this element we\n // should ignore it as it's not relevant to us\n return;\n }\n\n if (visible) {\n if (onShow) {\n onShow();\n }\n } else {\n setIsRendering(false);\n\n if (onDismiss) {\n onDismiss();\n }\n }\n }, [onDismiss, onShow, visible]);\n React.useEffect(() => {\n if (visible) {\n setIsRendering(true);\n }\n\n if (visible !== wasVisible.current && !isAnimated) {\n // Manually call `animationEndCallback` if no animation is used\n animationEndCallback();\n }\n\n wasVisible.current = visible;\n }, [isAnimated, visible, animationEndCallback]);\n return isRendering || visible ? createElement('div', {\n style: isRendering ? getAnimationStyle(animationType, visible) : styles.hidden,\n onAnimationEnd: animationEndCallback,\n children\n }) : null;\n}\n\nvar styles = StyleSheet.create({\n container: {\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 9999\n },\n animatedIn: {\n animationDuration: ANIMATION_DURATION + \"ms\",\n animationTimingFunction: 'ease-in'\n },\n animatedOut: {\n pointerEvents: 'none',\n animationDuration: ANIMATION_DURATION + \"ms\",\n animationTimingFunction: 'ease-out'\n },\n fadeIn: {\n opacity: 1,\n animationKeyframes: {\n '0%': {\n opacity: 0\n },\n '100%': {\n opacity: 1\n }\n }\n },\n fadeOut: {\n opacity: 0,\n animationKeyframes: {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n }\n },\n slideIn: {\n transform: [{\n translateY: '0%'\n }],\n animationKeyframes: {\n '0%': {\n transform: [{\n translateY: '100%'\n }]\n },\n '100%': {\n transform: [{\n translateY: '0%'\n }]\n }\n }\n },\n slideOut: {\n transform: [{\n translateY: '100%'\n }],\n animationKeyframes: {\n '0%': {\n transform: [{\n translateY: '0%'\n }]\n },\n '100%': {\n transform: [{\n translateY: '100%'\n }]\n }\n }\n },\n hidden: {\n opacity: 0\n }\n});\nvar animatedSlideInStyles = [styles.container, styles.animatedIn, styles.slideIn];\nvar animatedSlideOutStyles = [styles.container, styles.animatedOut, styles.slideOut];\nvar animatedFadeInStyles = [styles.container, styles.animatedIn, styles.fadeIn];\nvar animatedFadeOutStyles = [styles.container, styles.animatedOut, styles.fadeOut];\nexport default ModalAnimation;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"children\", \"onRequestClose\", \"transparent\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport View from '../View';\nimport StyleSheet from '../StyleSheet';\nimport canUseDOM from '../../modules/canUseDom';\nvar ModalContent = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var active = props.active,\n children = props.children,\n onRequestClose = props.onRequestClose,\n transparent = props.transparent,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n React.useEffect(() => {\n if (canUseDOM) {\n var closeOnEscape = e => {\n if (active && e.key === 'Escape') {\n e.stopPropagation();\n\n if (onRequestClose) {\n onRequestClose();\n }\n }\n };\n\n document.addEventListener('keyup', closeOnEscape, false);\n return () => document.removeEventListener('keyup', closeOnEscape, false);\n }\n }, [active, onRequestClose]);\n var style = React.useMemo(() => {\n return [styles.modal, transparent ? styles.modalTransparent : styles.modalOpaque];\n }, [transparent]);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, {\n accessibilityModal: true,\n accessibilityRole: active ? 'dialog' : null,\n ref: forwardedRef,\n style: style\n }), /*#__PURE__*/React.createElement(View, {\n style: styles.container\n }, children));\n});\nvar styles = StyleSheet.create({\n modal: {\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n modalTransparent: {\n backgroundColor: 'transparent'\n },\n modalOpaque: {\n backgroundColor: 'white'\n },\n container: {\n top: 0,\n flex: 1\n }\n});\nexport default ModalContent;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport View from '../View';\nimport createElement from '../createElement';\nimport StyleSheet from '../StyleSheet';\nimport UIManager from '../UIManager';\nimport canUseDOM from '../../modules/canUseDom';\n/**\n * This Component is used to \"wrap\" the modal we're opening\n * so that changing focus via tab will never leave the document.\n *\n * This allows us to properly trap the focus within a modal\n * even if the modal is at the start or end of a document.\n */\n\nvar FocusBracket = () => {\n return createElement('div', {\n accessibilityRole: 'none',\n tabIndex: 0,\n style: styles.focusBracket\n });\n};\n\nfunction attemptFocus(element) {\n if (!canUseDOM) {\n return false;\n }\n\n try {\n element.focus();\n } catch (e) {// Do nothing\n }\n\n return document.activeElement === element;\n}\n\nfunction focusFirstDescendant(element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (attemptFocus(child) || focusFirstDescendant(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction focusLastDescendant(element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n\n if (attemptFocus(child) || focusLastDescendant(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nvar ModalFocusTrap = _ref => {\n var active = _ref.active,\n children = _ref.children;\n var trapElementRef = React.useRef();\n var focusRef = React.useRef({\n trapFocusInProgress: false,\n lastFocusedElement: null\n });\n React.useEffect(() => {\n if (canUseDOM) {\n var trapFocus = () => {\n // We should not trap focus if:\n // - The modal hasn't fully initialized with an HTMLElement ref\n // - Focus is already in the process of being trapped (e.g., we're refocusing)\n // - isTrapActive prop being falsey tells us to do nothing\n if (trapElementRef.current == null || focusRef.current.trapFocusInProgress || !active) {\n return;\n }\n\n try {\n focusRef.current.trapFocusInProgress = true;\n\n if (document.activeElement instanceof Node && !trapElementRef.current.contains(document.activeElement)) {\n // To handle keyboard focusing we can make an assumption here.\n // If you're tabbing through the focusable elements, the previously\n // active element will either be the first or the last.\n // If the previously selected element is the \"first\" descendant\n // and we're leaving it - this means that we should be looping\n // around to the other side of the modal.\n var hasFocused = focusFirstDescendant(trapElementRef.current);\n\n if (focusRef.current.lastFocusedElement === document.activeElement) {\n hasFocused = focusLastDescendant(trapElementRef.current);\n } // If we couldn't focus a new element then we need to focus onto the trap target\n\n\n if (!hasFocused && trapElementRef.current != null && document.activeElement) {\n UIManager.focus(trapElementRef.current);\n }\n }\n } finally {\n focusRef.current.trapFocusInProgress = false;\n }\n\n focusRef.current.lastFocusedElement = document.activeElement;\n }; // Call the trapFocus callback at least once when this modal has been activated.\n\n\n trapFocus();\n document.addEventListener('focus', trapFocus, true);\n return () => document.removeEventListener('focus', trapFocus, true);\n }\n }, [active]); // To be fully compliant with WCAG we need to refocus element that triggered opening modal\n // after closing it\n\n React.useEffect(function () {\n if (canUseDOM) {\n var lastFocusedElementOutsideTrap = document.activeElement;\n return function () {\n if (lastFocusedElementOutsideTrap && document.contains(lastFocusedElementOutsideTrap)) {\n UIManager.focus(lastFocusedElementOutsideTrap);\n }\n };\n }\n }, []);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FocusBracket, null), /*#__PURE__*/React.createElement(View, {\n ref: trapElementRef\n }, children), /*#__PURE__*/React.createElement(FocusBracket, null));\n};\n\nexport default ModalFocusTrap;\nvar styles = StyleSheet.create({\n focusBracket: {\n outlineStyle: 'none'\n }\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"animationType\", \"children\", \"onDismiss\", \"onRequestClose\", \"onShow\", \"transparent\", \"visible\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport ModalPortal from './ModalPortal';\nimport ModalAnimation from './ModalAnimation';\nimport ModalContent from './ModalContent';\nimport ModalFocusTrap from './ModalFocusTrap';\nvar uniqueModalIdentifier = 0;\nvar activeModalStack = [];\nvar activeModalListeners = {};\n\nfunction notifyActiveModalListeners() {\n if (activeModalStack.length === 0) {\n return;\n }\n\n var activeModalId = activeModalStack[activeModalStack.length - 1];\n activeModalStack.forEach(modalId => {\n if (modalId in activeModalListeners) {\n activeModalListeners[modalId](modalId === activeModalId);\n }\n });\n}\n\nfunction removeActiveModal(modalId) {\n if (modalId in activeModalListeners) {\n // Before removing this listener we should probably tell it\n // that it's no longer the active modal for sure.\n activeModalListeners[modalId](false);\n delete activeModalListeners[modalId];\n }\n\n var index = activeModalStack.indexOf(modalId);\n\n if (index !== -1) {\n activeModalStack.splice(index, 1);\n notifyActiveModalListeners();\n }\n}\n\nfunction addActiveModal(modalId, listener) {\n removeActiveModal(modalId);\n activeModalStack.push(modalId);\n activeModalListeners[modalId] = listener;\n notifyActiveModalListeners();\n}\n\nvar Modal = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var animationType = props.animationType,\n children = props.children,\n onDismiss = props.onDismiss,\n onRequestClose = props.onRequestClose,\n onShow = props.onShow,\n transparent = props.transparent,\n _props$visible = props.visible,\n visible = _props$visible === void 0 ? true : _props$visible,\n rest = _objectWithoutPropertiesLoose(props, _excluded); // Set a unique model identifier so we can correctly route\n // dismissals and check the layering of modals.\n\n\n var modalId = React.useMemo(() => uniqueModalIdentifier++, []);\n\n var _React$useState = React.useState(false),\n isActive = _React$useState[0],\n setIsActive = _React$useState[1];\n\n var onDismissCallback = React.useCallback(() => {\n removeActiveModal(modalId);\n\n if (onDismiss) {\n onDismiss();\n }\n }, [modalId, onDismiss]);\n var onShowCallback = React.useCallback(() => {\n addActiveModal(modalId, setIsActive);\n\n if (onShow) {\n onShow();\n }\n }, [modalId, onShow]);\n React.useEffect(() => {\n return () => removeActiveModal(modalId);\n }, [modalId]);\n return /*#__PURE__*/React.createElement(ModalPortal, null, /*#__PURE__*/React.createElement(ModalAnimation, {\n animationType: animationType,\n onDismiss: onDismissCallback,\n onShow: onShowCallback,\n visible: visible\n }, /*#__PURE__*/React.createElement(ModalFocusTrap, {\n active: isActive\n }, /*#__PURE__*/React.createElement(ModalContent, _extends({}, rest, {\n active: isActive,\n onRequestClose: onRequestClose,\n ref: forwardedRef,\n transparent: transparent\n }), children))));\n});\nexport default Modal;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport NativeEventEmitter from '../../vendor/react-native/NativeEventEmitter';\nexport default NativeEventEmitter;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport UIManager from '../UIManager'; // NativeModules shim\n\nvar NativeModules = {\n UIManager\n};\nexport default NativeModules;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport Dimensions from '../Dimensions';\n/**\n * PixelRatio gives access to the device pixel density.\n */\n\nexport default class PixelRatio {\n /**\n * Returns the device pixel density.\n */\n static get() {\n return Dimensions.get('window').scale;\n }\n /**\n * No equivalent for Web\n */\n\n\n static getFontScale() {\n return Dimensions.get('window').fontScale || PixelRatio.get();\n }\n /**\n * Converts a layout size (dp) to pixel size (px).\n * Guaranteed to return an integer number.\n */\n\n\n static getPixelSizeForLayoutSize(layoutSize) {\n return Math.round(layoutSize * PixelRatio.get());\n }\n /**\n * Rounds a layout size (dp) to the nearest layout size that corresponds to\n * an integer number of pixels. For example, on a device with a PixelRatio\n * of 3, `PixelRatio.roundToNearestPixel(8.4) = 8.33`, which corresponds to\n * exactly (8.33 * 3) = 25 pixels.\n */\n\n\n static roundToNearestPixel(layoutSize) {\n var ratio = PixelRatio.get();\n return Math.round(layoutSize * ratio) / ratio;\n }\n\n}","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar Platform = {\n OS: 'web',\n select: obj => 'web' in obj ? obj.web : obj.default,\n\n get isTesting() {\n if (process.env.NODE_ENV === 'test') {\n return true;\n }\n\n return false;\n }\n\n};\nexport default Platform;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\n'use strict';\n\nimport canUseDOM from '../canUseDom';\n\nvar emptyFunction = () => {};\n\nfunction supportsPassiveEvents() {\n var supported = false; // Check if browser supports event with passive listeners\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\n if (canUseDOM) {\n try {\n var options = {};\n Object.defineProperty(options, 'passive', {\n get() {\n supported = true;\n return false;\n }\n\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {}\n }\n\n return supported;\n}\n\nvar canUsePassiveEvents = supportsPassiveEvents();\n\nfunction getOptions(options) {\n if (options == null) {\n return false;\n }\n\n return canUsePassiveEvents ? options : Boolean(options.capture);\n}\n/**\n * Shim generic API compatibility with ReactDOM's synthetic events, without needing the\n * large amount of code ReactDOM uses to do this. Ideally we wouldn't use a synthetic\n * event wrapper at all.\n */\n\n\nfunction isPropagationStopped() {\n return this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n return this.defaultPrevented;\n}\n\nfunction normalizeEvent(event) {\n event.nativeEvent = event;\n event.persist = emptyFunction;\n event.isDefaultPrevented = isDefaultPrevented;\n event.isPropagationStopped = isPropagationStopped;\n return event;\n}\n/**\n *\n */\n\n\nexport default function createEventHandle(type, options) {\n var opts = getOptions(options);\n return function (target, listener) {\n if (target == null || typeof target.addEventListener !== 'function') {\n throw new Error('createEventHandle: called on an invalid target.');\n }\n\n var element = target;\n\n if (listener != null) {\n var compatListener = e => listener(normalizeEvent(e));\n\n element.addEventListener(type, compatListener, opts);\n return function removeListener() {\n if (element != null) {\n element.removeEventListener(type, compatListener, opts);\n }\n };\n } else {\n return emptyFunction;\n }\n };\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport createEventHandle from '../createEventHandle';\nimport canUseDOM from '../canUseDom';\n\nvar supportsPointerEvent = () => !!(typeof window !== 'undefined' && window.PointerEvent != null);\n\nvar activeModality = 'keyboard';\nvar modality = 'keyboard';\nvar previousModality;\nvar previousActiveModality;\nvar isEmulatingMouseEvents = false;\nvar listeners = new Set();\nvar KEYBOARD = 'keyboard';\nvar MOUSE = 'mouse';\nvar TOUCH = 'touch';\nvar BLUR = 'blur';\nvar CONTEXTMENU = 'contextmenu';\nvar FOCUS = 'focus';\nvar KEYDOWN = 'keydown';\nvar MOUSEDOWN = 'mousedown';\nvar MOUSEMOVE = 'mousemove';\nvar MOUSEUP = 'mouseup';\nvar POINTERDOWN = 'pointerdown';\nvar POINTERMOVE = 'pointermove';\nvar SCROLL = 'scroll';\nvar SELECTIONCHANGE = 'selectionchange';\nvar TOUCHCANCEL = 'touchcancel';\nvar TOUCHMOVE = 'touchmove';\nvar TOUCHSTART = 'touchstart';\nvar VISIBILITYCHANGE = 'visibilitychange';\nvar bubbleOptions = {\n passive: true\n};\nvar captureOptions = {\n capture: true,\n passive: true\n}; // Window events\n\nvar addBlurListener = createEventHandle(BLUR, bubbleOptions);\nvar addFocusListener = createEventHandle(FOCUS, bubbleOptions); // Must be capture phase because 'stopPropagation' might prevent these\n// events bubbling to the document.\n\nvar addVisibilityChangeListener = createEventHandle(VISIBILITYCHANGE, captureOptions);\nvar addKeyDownListener = createEventHandle(KEYDOWN, captureOptions);\nvar addPointerDownListener = createEventHandle(POINTERDOWN, captureOptions);\nvar addPointerMoveListener = createEventHandle(POINTERMOVE, captureOptions); // Fallback events\n\nvar addContextMenuListener = createEventHandle(CONTEXTMENU, captureOptions);\nvar addMouseDownListener = createEventHandle(MOUSEDOWN, captureOptions);\nvar addMouseMoveListener = createEventHandle(MOUSEMOVE, captureOptions);\nvar addMouseUpListener = createEventHandle(MOUSEUP, captureOptions);\nvar addScrollListener = createEventHandle(SCROLL, captureOptions);\nvar addSelectiomChangeListener = createEventHandle(SELECTIONCHANGE, captureOptions);\nvar addTouchCancelListener = createEventHandle(TOUCHCANCEL, captureOptions);\nvar addTouchMoveListener = createEventHandle(TOUCHMOVE, captureOptions);\nvar addTouchStartListener = createEventHandle(TOUCHSTART, captureOptions);\n\nfunction restoreModality() {\n if (previousModality != null || previousActiveModality != null) {\n if (previousModality != null) {\n modality = previousModality;\n previousModality = null;\n }\n\n if (previousActiveModality != null) {\n activeModality = previousActiveModality;\n previousActiveModality = null;\n }\n\n callListeners();\n }\n}\n\nfunction onBlurWindow() {\n previousModality = modality;\n previousActiveModality = activeModality;\n activeModality = KEYBOARD;\n modality = KEYBOARD;\n callListeners(); // for fallback events\n\n isEmulatingMouseEvents = false;\n}\n\nfunction onFocusWindow() {\n restoreModality();\n}\n\nfunction onKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n if (modality !== KEYBOARD) {\n modality = KEYBOARD;\n activeModality = KEYBOARD;\n callListeners();\n }\n}\n\nfunction onVisibilityChange() {\n if (document.visibilityState !== 'hidden') {\n restoreModality();\n }\n}\n\nfunction onPointerish(event) {\n var eventType = event.type;\n\n if (supportsPointerEvent()) {\n if (eventType === POINTERDOWN) {\n if (activeModality !== event.pointerType) {\n modality = event.pointerType;\n activeModality = event.pointerType;\n callListeners();\n }\n\n return;\n }\n\n if (eventType === POINTERMOVE) {\n if (modality !== event.pointerType) {\n modality = event.pointerType;\n callListeners();\n }\n\n return;\n }\n } // Fallback for non-PointerEvent environment\n else {\n if (!isEmulatingMouseEvents) {\n if (eventType === MOUSEDOWN) {\n if (activeModality !== MOUSE) {\n modality = MOUSE;\n activeModality = MOUSE;\n callListeners();\n }\n }\n\n if (eventType === MOUSEMOVE) {\n if (modality !== MOUSE) {\n modality = MOUSE;\n callListeners();\n }\n }\n } // Flag when browser may produce emulated events\n\n\n if (eventType === TOUCHSTART) {\n isEmulatingMouseEvents = true;\n\n if (event.touches && event.touches.length > 1) {\n isEmulatingMouseEvents = false;\n }\n\n if (activeModality !== TOUCH) {\n modality = TOUCH;\n activeModality = TOUCH;\n callListeners();\n }\n\n return;\n } // Remove flag after emulated events are finished or cancelled, and if an\n // event occurs that cuts short a touch event sequence.\n\n\n if (eventType === CONTEXTMENU || eventType === MOUSEUP || eventType === SELECTIONCHANGE || eventType === SCROLL || eventType === TOUCHCANCEL || eventType === TOUCHMOVE) {\n isEmulatingMouseEvents = false;\n }\n }\n}\n\nif (canUseDOM) {\n addBlurListener(window, onBlurWindow);\n addFocusListener(window, onFocusWindow);\n addKeyDownListener(document, onKeyDown);\n addPointerDownListener(document, onPointerish);\n addPointerMoveListener(document, onPointerish);\n addVisibilityChangeListener(document, onVisibilityChange); // fallbacks\n\n addContextMenuListener(document, onPointerish);\n addMouseDownListener(document, onPointerish);\n addMouseMoveListener(document, onPointerish);\n addMouseUpListener(document, onPointerish);\n addTouchCancelListener(document, onPointerish);\n addTouchMoveListener(document, onPointerish);\n addTouchStartListener(document, onPointerish);\n addSelectiomChangeListener(document, onPointerish);\n addScrollListener(document, onPointerish);\n}\n\nfunction callListeners() {\n var value = {\n activeModality,\n modality\n };\n listeners.forEach(listener => {\n listener(value);\n });\n}\n\nexport function getActiveModality() {\n return activeModality;\n}\nexport function getModality() {\n return modality;\n}\nexport function addModalityListener(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\nexport function testOnly_resetActiveModality() {\n isEmulatingMouseEvents = false;\n activeModality = KEYBOARD;\n modality = KEYBOARD;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport createEventHandle from '../createEventHandle';\nimport useLayoutEffect from '../useLayoutEffect';\nimport useStable from '../useStable';\n\n/**\n * This can be used with any event type include custom events.\n *\n * const click = useEvent('click', options);\n * useEffect(() => {\n * click.setListener(target, onClick);\n * return () => click.clear();\n * }).\n */\nexport default function useEvent(event, options) {\n var targetListeners = useStable(() => new Map());\n var addListener = useStable(() => {\n var addEventListener = createEventHandle(event, options);\n return (target, callback) => {\n var removeTargetListener = targetListeners.get(target);\n\n if (removeTargetListener != null) {\n removeTargetListener();\n }\n\n if (callback == null) {\n targetListeners.delete(target);\n }\n\n var removeEventListener = addEventListener(target, callback);\n targetListeners.set(target, removeEventListener);\n return removeEventListener;\n };\n });\n useLayoutEffect(() => {\n return () => {\n targetListeners.forEach(removeListener => {\n removeListener();\n });\n targetListeners.clear();\n };\n }, [targetListeners]);\n return addListener;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport { getModality } from '../modality';\nimport useEvent from '../useEvent';\nimport useLayoutEffect from '../useLayoutEffect';\n/**\n * Types\n */\n\n/**\n * Implementation\n */\nvar emptyObject = {};\nvar opts = {\n passive: true\n};\nvar lockEventType = 'react-gui:hover:lock';\nvar unlockEventType = 'react-gui:hover:unlock';\n\nvar supportsPointerEvent = () => !!(typeof window !== 'undefined' && window.PointerEvent != null);\n\nfunction dispatchCustomEvent(target, type, payload) {\n var event = document.createEvent('CustomEvent');\n\n var _ref = payload || emptyObject,\n _ref$bubbles = _ref.bubbles,\n bubbles = _ref$bubbles === void 0 ? true : _ref$bubbles,\n _ref$cancelable = _ref.cancelable,\n cancelable = _ref$cancelable === void 0 ? true : _ref$cancelable,\n detail = _ref.detail;\n\n event.initCustomEvent(type, bubbles, cancelable, detail);\n target.dispatchEvent(event);\n} // This accounts for the non-PointerEvent fallback events.\n\n\nfunction getPointerType(event) {\n var pointerType = event.pointerType;\n return pointerType != null ? pointerType : getModality();\n}\n\nexport default function useHover(targetRef, config) {\n var contain = config.contain,\n disabled = config.disabled,\n onHoverStart = config.onHoverStart,\n onHoverChange = config.onHoverChange,\n onHoverUpdate = config.onHoverUpdate,\n onHoverEnd = config.onHoverEnd;\n var canUsePE = supportsPointerEvent();\n var addMoveListener = useEvent(canUsePE ? 'pointermove' : 'mousemove', opts);\n var addEnterListener = useEvent(canUsePE ? 'pointerenter' : 'mouseenter', opts);\n var addLeaveListener = useEvent(canUsePE ? 'pointerleave' : 'mouseleave', opts); // These custom events are used to implement the \"contain\" prop.\n\n var addLockListener = useEvent(lockEventType, opts);\n var addUnlockListener = useEvent(unlockEventType, opts);\n useLayoutEffect(() => {\n var target = targetRef.current;\n\n if (target !== null) {\n /**\n * End the hover gesture\n */\n var hoverEnd = function hoverEnd(e) {\n if (onHoverEnd != null) {\n onHoverEnd(e);\n }\n\n if (onHoverChange != null) {\n onHoverChange(false);\n } // Remove the listeners once finished.\n\n\n addMoveListener(target, null);\n addLeaveListener(target, null);\n };\n /**\n * Leave element\n */\n\n\n var leaveListener = function leaveListener(e) {\n var target = targetRef.current;\n\n if (target != null && getPointerType(e) !== 'touch') {\n if (contain) {\n dispatchCustomEvent(target, unlockEventType);\n }\n\n hoverEnd(e);\n }\n };\n /**\n * Move within element\n */\n\n\n var moveListener = function moveListener(e) {\n if (getPointerType(e) !== 'touch') {\n if (onHoverUpdate != null) {\n // Not all browsers have these properties\n if (e.x == null) {\n e.x = e.clientX;\n }\n\n if (e.y == null) {\n e.y = e.clientY;\n }\n\n onHoverUpdate(e);\n }\n }\n };\n /**\n * Start the hover gesture\n */\n\n\n var hoverStart = function hoverStart(e) {\n if (onHoverStart != null) {\n onHoverStart(e);\n }\n\n if (onHoverChange != null) {\n onHoverChange(true);\n } // Set the listeners needed for the rest of the hover gesture.\n\n\n if (onHoverUpdate != null) {\n addMoveListener(target, !disabled ? moveListener : null);\n }\n\n addLeaveListener(target, !disabled ? leaveListener : null);\n };\n /**\n * Enter element\n */\n\n\n var enterListener = function enterListener(e) {\n var target = targetRef.current;\n\n if (target != null && getPointerType(e) !== 'touch') {\n if (contain) {\n dispatchCustomEvent(target, lockEventType);\n }\n\n hoverStart(e);\n\n var lockListener = function lockListener(lockEvent) {\n if (lockEvent.target !== target) {\n hoverEnd(e);\n }\n };\n\n var unlockListener = function unlockListener(lockEvent) {\n if (lockEvent.target !== target) {\n hoverStart(e);\n }\n };\n\n addLockListener(target, !disabled ? lockListener : null);\n addUnlockListener(target, !disabled ? unlockListener : null);\n }\n };\n\n addEnterListener(target, !disabled ? enterListener : null);\n }\n }, [addEnterListener, addMoveListener, addLeaveListener, addLockListener, addUnlockListener, contain, disabled, onHoverStart, onHoverChange, onHoverUpdate, onHoverEnd, targetRef]);\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"delayLongPress\", \"delayPressIn\", \"delayPressOut\", \"disabled\", \"focusable\", \"onBlur\", \"onContextMenu\", \"onFocus\", \"onHoverIn\", \"onHoverOut\", \"onKeyDown\", \"onLongPress\", \"onPress\", \"onPressMove\", \"onPressIn\", \"onPressOut\", \"style\", \"testOnly_hovered\", \"testOnly_pressed\"];\nimport * as React from 'react';\nimport { forwardRef, memo, useMemo, useState, useRef } from 'react';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport useHover from '../../modules/useHover';\nimport usePressEvents from '../../modules/usePressEvents';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\n\n/**\n * Component used to build display components that should respond to whether the\n * component is currently pressed or not.\n */\nfunction Pressable(props, forwardedRef) {\n var children = props.children,\n delayLongPress = props.delayLongPress,\n delayPressIn = props.delayPressIn,\n delayPressOut = props.delayPressOut,\n disabled = props.disabled,\n focusable = props.focusable,\n onBlur = props.onBlur,\n onContextMenu = props.onContextMenu,\n onFocus = props.onFocus,\n onHoverIn = props.onHoverIn,\n onHoverOut = props.onHoverOut,\n onKeyDown = props.onKeyDown,\n onLongPress = props.onLongPress,\n onPress = props.onPress,\n onPressMove = props.onPressMove,\n onPressIn = props.onPressIn,\n onPressOut = props.onPressOut,\n style = props.style,\n testOnly_hovered = props.testOnly_hovered,\n testOnly_pressed = props.testOnly_pressed,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var _useForceableState = useForceableState(testOnly_hovered === true),\n hovered = _useForceableState[0],\n setHovered = _useForceableState[1];\n\n var _useForceableState2 = useForceableState(false),\n focused = _useForceableState2[0],\n setFocused = _useForceableState2[1];\n\n var _useForceableState3 = useForceableState(testOnly_pressed === true),\n pressed = _useForceableState3[0],\n setPressed = _useForceableState3[1];\n\n var hostRef = useRef(null);\n var setRef = useMergeRefs(forwardedRef, hostRef);\n var pressConfig = useMemo(() => ({\n delayLongPress,\n delayPressStart: delayPressIn,\n delayPressEnd: delayPressOut,\n disabled,\n onLongPress,\n onPress,\n onPressChange: setPressed,\n onPressStart: onPressIn,\n onPressMove,\n onPressEnd: onPressOut\n }), [delayLongPress, delayPressIn, delayPressOut, disabled, onLongPress, onPress, onPressIn, onPressMove, onPressOut, setPressed]);\n var pressEventHandlers = usePressEvents(hostRef, pressConfig);\n var onContextMenuPress = pressEventHandlers.onContextMenu,\n onKeyDownPress = pressEventHandlers.onKeyDown;\n useHover(hostRef, {\n contain: true,\n disabled,\n onHoverChange: setHovered,\n onHoverStart: onHoverIn,\n onHoverEnd: onHoverOut\n });\n var interactionState = {\n hovered,\n focused,\n pressed\n };\n var blurHandler = React.useCallback(e => {\n if (e.nativeEvent.target === hostRef.current) {\n setFocused(false);\n\n if (onBlur != null) {\n onBlur(e);\n }\n }\n }, [hostRef, setFocused, onBlur]);\n var focusHandler = React.useCallback(e => {\n if (e.nativeEvent.target === hostRef.current) {\n setFocused(true);\n\n if (onFocus != null) {\n onFocus(e);\n }\n }\n }, [hostRef, setFocused, onFocus]);\n var contextMenuHandler = React.useCallback(e => {\n if (onContextMenuPress != null) {\n onContextMenuPress(e);\n }\n\n if (onContextMenu != null) {\n onContextMenu(e);\n }\n }, [onContextMenu, onContextMenuPress]);\n var keyDownHandler = React.useCallback(e => {\n if (onKeyDownPress != null) {\n onKeyDownPress(e);\n }\n\n if (onKeyDown != null) {\n onKeyDown(e);\n }\n }, [onKeyDown, onKeyDownPress]);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, pressEventHandlers, {\n accessibilityDisabled: disabled,\n focusable: !disabled && focusable !== false,\n onBlur: blurHandler,\n onContextMenu: contextMenuHandler,\n onFocus: focusHandler,\n onKeyDown: keyDownHandler,\n pointerEvents: disabled ? 'none' : rest.pointerEvents,\n ref: setRef,\n style: [!disabled && styles.root, typeof style === 'function' ? style(interactionState) : style]\n }), typeof children === 'function' ? children(interactionState) : children);\n}\n\nfunction useForceableState(forced) {\n var _useState = useState(false),\n bool = _useState[0],\n setBool = _useState[1];\n\n return [bool || forced, setBool];\n}\n\nvar styles = StyleSheet.create({\n root: {\n cursor: 'pointer',\n touchAction: 'manipulation'\n }\n});\nvar MemoedPressable = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(Pressable));\nMemoedPressable.displayName = 'Pressable';\nexport default MemoedPressable;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"colors\", \"enabled\", \"onRefresh\", \"progressBackgroundColor\", \"progressViewOffset\", \"refreshing\", \"size\", \"tintColor\", \"title\", \"titleColor\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport View from '../View';\nimport React from 'react';\n\nfunction RefreshControl(props) {\n var colors = props.colors,\n enabled = props.enabled,\n onRefresh = props.onRefresh,\n progressBackgroundColor = props.progressBackgroundColor,\n progressViewOffset = props.progressViewOffset,\n refreshing = props.refreshing,\n size = props.size,\n tintColor = props.tintColor,\n title = props.title,\n titleColor = props.titleColor,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(View, rest);\n}\n\nexport default RefreshControl;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport Dimensions from '../../exports/Dimensions';\nimport findNodeHandle from '../../exports/findNodeHandle';\nimport invariant from 'fbjs/lib/invariant';\nimport Platform from '../../exports/Platform';\nimport TextInputState from '../TextInputState';\nimport UIManager from '../../exports/UIManager';\nimport warning from 'fbjs/lib/warning';\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... physical touch starts ...\n * 2. `onTouchStartCapture` (when you press down to stop the scroll)\n * 3. `onTouchStart` (same, but bubble phase)\n * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... bounce begins ...\n * ... some time elapses ...\n * ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart` (same, but bubble phase)\n * 5. `onTouchEnd` (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n * this.props.onKeyboardWillShow\n * this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n * this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n * this.props.onKeyboardWillHide\n * this.props.onKeyboardDidHide\n */\n\nvar emptyObject = {};\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\nvar ScrollResponderMixin = {\n // mixins: [Subscribable.Mixin],\n scrollResponderMixinGetInitialState: function scrollResponderMixinGetInitialState() {\n return {\n isTouching: false,\n lastMomentumScrollBeginTime: 0,\n lastMomentumScrollEndTime: 0,\n // Reset to false every time becomes responder. This is used to:\n // - Determine if the scroll view has been scrolled and therefore should\n // refuse to give up its responder lock.\n // - Determine if releasing should dismiss the keyboard when we are in\n // tap-to-dismiss mode (!this.props.keyboardShouldPersistTaps).\n observedScrollSinceBecomingResponder: false,\n becameResponderWhileAnimating: false\n };\n },\n\n /**\n * Invoke this from an `onScroll` event.\n */\n scrollResponderHandleScrollShouldSetResponder: function scrollResponderHandleScrollShouldSetResponder() {\n return this.state.isTouching;\n },\n\n /**\n * Merely touch starting is not sufficient for a scroll view to become the\n * responder. Being the \"responder\" means that the very next touch move/end\n * event will result in an action/movement.\n *\n * Invoke this from an `onStartShouldSetResponder` event.\n *\n * `onStartShouldSetResponder` is used when the next move/end will trigger\n * some UI movement/action, but when you want to yield priority to views\n * nested inside of the view.\n *\n * There may be some cases where scroll views actually should return `true`\n * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n * that gives priority to nested views.\n *\n * - If a single tap on the scroll view triggers an action such as\n * recentering a map style view yet wants to give priority to interaction\n * views inside (such as dropped pins or labels), then we would return true\n * from this method when there is a single touch.\n *\n * - Similar to the previous case, if a two finger \"tap\" should trigger a\n * zoom, we would check the `touches` count, and if `>= 2`, we would return\n * true.\n *\n */\n scrollResponderHandleStartShouldSetResponder: function scrollResponderHandleStartShouldSetResponder() {\n return false;\n },\n\n /**\n * There are times when the scroll view wants to become the responder\n * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n * that *doesn't* give priority to nested views (hence the capture phase):\n *\n * - Currently animating.\n * - Tapping anywhere that is not the focused input, while the keyboard is\n * up (which should dismiss the keyboard).\n *\n * Invoke this from an `onStartShouldSetResponderCapture` event.\n */\n scrollResponderHandleStartShouldSetResponderCapture: function scrollResponderHandleStartShouldSetResponderCapture(e) {\n // First see if we want to eat taps while the keyboard is up\n // var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n // if (!this.props.keyboardShouldPersistTaps &&\n // currentlyFocusedTextInput != null &&\n // e.target !== currentlyFocusedTextInput) {\n // return true;\n // }\n return this.scrollResponderIsAnimating();\n },\n\n /**\n * Invoke this from an `onResponderReject` event.\n *\n * Some other element is not yielding its role as responder. Normally, we'd\n * just disable the `UIScrollView`, but a touch has already began on it, the\n * `UIScrollView` will not accept being disabled after that. The easiest\n * solution for now is to accept the limitation of disallowing this\n * altogether. To improve this, find a way to disable the `UIScrollView` after\n * a touch has already started.\n */\n scrollResponderHandleResponderReject: function scrollResponderHandleResponderReject() {\n warning(false, \"ScrollView doesn't take rejection well - scrolls anyway\");\n },\n\n /**\n * We will allow the scroll view to give up its lock iff it acquired the lock\n * during an animation. This is a very useful default that happens to satisfy\n * many common user experiences.\n *\n * - Stop a scroll on the left edge, then turn that into an outer view's\n * backswipe.\n * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n * view dismiss.\n * - However, without catching the scroll view mid-bounce (while it is\n * motionless), if you drag far enough for the scroll view to become\n * responder (and therefore drag the scroll view a bit), any backswipe\n * navigation of a swipe gesture higher in the view hierarchy, should be\n * rejected.\n */\n scrollResponderHandleTerminationRequest: function scrollResponderHandleTerminationRequest() {\n return !this.state.observedScrollSinceBecomingResponder;\n },\n\n /**\n * Invoke this from an `onTouchEnd` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchEnd: function scrollResponderHandleTouchEnd(e) {\n var nativeEvent = e.nativeEvent;\n this.state.isTouching = nativeEvent.touches.length !== 0;\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n },\n\n /**\n * Invoke this from an `onResponderRelease` event.\n */\n scrollResponderHandleResponderRelease: function scrollResponderHandleResponderRelease(e) {\n this.props.onResponderRelease && this.props.onResponderRelease(e); // By default scroll views will unfocus a textField\n // if another touch occurs outside of it\n\n var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n\n if (!this.props.keyboardShouldPersistTaps && currentlyFocusedTextInput != null && e.target !== currentlyFocusedTextInput && !this.state.observedScrollSinceBecomingResponder && !this.state.becameResponderWhileAnimating) {\n this.props.onScrollResponderKeyboardDismissed && this.props.onScrollResponderKeyboardDismissed(e);\n TextInputState.blurTextInput(currentlyFocusedTextInput);\n }\n },\n scrollResponderHandleScroll: function scrollResponderHandleScroll(e) {\n this.state.observedScrollSinceBecomingResponder = true;\n this.props.onScroll && this.props.onScroll(e);\n },\n\n /**\n * Invoke this from an `onResponderGrant` event.\n */\n scrollResponderHandleResponderGrant: function scrollResponderHandleResponderGrant(e) {\n this.state.observedScrollSinceBecomingResponder = false;\n this.props.onResponderGrant && this.props.onResponderGrant(e);\n this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n },\n\n /**\n * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n * animation, and there's not an easy way to distinguish a drag vs. stopping\n * momentum.\n *\n * Invoke this from an `onScrollBeginDrag` event.\n */\n scrollResponderHandleScrollBeginDrag: function scrollResponderHandleScrollBeginDrag(e) {\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n },\n\n /**\n * Invoke this from an `onScrollEndDrag` event.\n */\n scrollResponderHandleScrollEndDrag: function scrollResponderHandleScrollEndDrag(e) {\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollBegin` event.\n */\n scrollResponderHandleMomentumScrollBegin: function scrollResponderHandleMomentumScrollBegin(e) {\n this.state.lastMomentumScrollBeginTime = Date.now();\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollEnd` event.\n */\n scrollResponderHandleMomentumScrollEnd: function scrollResponderHandleMomentumScrollEnd(e) {\n this.state.lastMomentumScrollEndTime = Date.now();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchStart` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchStart: function scrollResponderHandleTouchStart(e) {\n this.state.isTouching = true;\n this.props.onTouchStart && this.props.onTouchStart(e);\n },\n\n /**\n * Invoke this from an `onTouchMove` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchMove: function scrollResponderHandleTouchMove(e) {\n this.props.onTouchMove && this.props.onTouchMove(e);\n },\n\n /**\n * A helper function for this class that lets us quickly determine if the\n * view is currently animating. This is particularly useful to know when\n * a touch has just started or ended.\n */\n scrollResponderIsAnimating: function scrollResponderIsAnimating() {\n var now = Date.now();\n var timeSinceLastMomentumScrollEnd = now - this.state.lastMomentumScrollEndTime;\n var isAnimating = timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || this.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\n return isAnimating;\n },\n\n /**\n * Returns the node that represents native view that can be scrolled.\n * Components can pass what node to use by defining a `getScrollableNode`\n * function otherwise `this` is used.\n */\n scrollResponderGetScrollableNode: function scrollResponderGetScrollableNode() {\n return this.getScrollableNode ? this.getScrollableNode() : findNodeHandle(this);\n },\n\n /**\n * A helper function to scroll to a specific point in the scrollview.\n * This is currently used to help focus on child textviews, but can also\n * be used to quickly scroll to any element we want to focus. Syntax:\n *\n * scrollResponderScrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})\n *\n * Note: The weird argument signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as as alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollResponderScrollTo: function scrollResponderScrollTo(x, y, animated) {\n if (typeof x === 'number') {\n console.warn('`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.');\n } else {\n var _ref = x || emptyObject;\n\n x = _ref.x;\n y = _ref.y;\n animated = _ref.animated;\n }\n\n var node = this.scrollResponderGetScrollableNode();\n var left = x || 0;\n var top = y || 0;\n\n if (typeof node.scroll === 'function') {\n node.scroll({\n top,\n left,\n behavior: !animated ? 'auto' : 'smooth'\n });\n } else {\n node.scrollLeft = left;\n node.scrollTop = top;\n }\n },\n\n /**\n * A helper function to zoom to a specific rect in the scrollview. The argument has the shape\n * {x: number; y: number; width: number; height: number; animated: boolean = true}\n *\n * @platform ios\n */\n scrollResponderZoomTo: function scrollResponderZoomTo(rect, animated) {\n if (Platform.OS !== 'ios') {\n invariant('zoomToRect is not implemented');\n }\n },\n\n /**\n * Displays the scroll indicators momentarily.\n */\n scrollResponderFlashScrollIndicators: function scrollResponderFlashScrollIndicators() {},\n\n /**\n * This method should be used as the callback to onFocus in a TextInputs'\n * parent view. Note that any module using this mixin needs to return\n * the parent view's ref in getScrollViewRef() in order to use this method.\n * @param {any} nodeHandle The TextInput node handle\n * @param {number} additionalOffset The scroll view's top \"contentInset\".\n * Default is 0.\n * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n * down to make it meet the keyboard's top. Default is false.\n */\n scrollResponderScrollNativeHandleToKeyboard: function scrollResponderScrollNativeHandleToKeyboard(nodeHandle, additionalOffset, preventNegativeScrollOffset) {\n this.additionalScrollOffset = additionalOffset || 0;\n this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n UIManager.measureLayout(nodeHandle, findNodeHandle(this.getInnerViewNode()), this.scrollResponderTextInputFocusError, this.scrollResponderInputMeasureAndScrollToKeyboard);\n },\n\n /**\n * The calculations performed here assume the scroll view takes up the entire\n * screen - even if has some content inset. We then measure the offsets of the\n * keyboard, and compensate both for the scroll view's \"contentInset\".\n *\n * @param {number} left Position of input w.r.t. table view.\n * @param {number} top Position of input w.r.t. table view.\n * @param {number} width Width of the text input.\n * @param {number} height Height of the text input.\n */\n scrollResponderInputMeasureAndScrollToKeyboard: function scrollResponderInputMeasureAndScrollToKeyboard(left, top, width, height) {\n var keyboardScreenY = Dimensions.get('window').height;\n\n if (this.keyboardWillOpenTo) {\n keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY;\n }\n\n var scrollOffsetY = top - keyboardScreenY + height + this.additionalScrollOffset; // By default, this can scroll with negative offset, pulling the content\n // down so that the target component's bottom meets the keyboard's top.\n // If requested otherwise, cap the offset at 0 minimum to avoid content\n // shifting down.\n\n if (this.preventNegativeScrollOffset) {\n scrollOffsetY = Math.max(0, scrollOffsetY);\n }\n\n this.scrollResponderScrollTo({\n x: 0,\n y: scrollOffsetY,\n animated: true\n });\n this.additionalOffset = 0;\n this.preventNegativeScrollOffset = false;\n },\n scrollResponderTextInputFocusError: function scrollResponderTextInputFocusError(e) {\n console.error('Error measuring text field: ', e);\n },\n\n /**\n * `componentWillMount` is the closest thing to a standard \"constructor\" for\n * React components.\n *\n * The `keyboardWillShow` is called before input focus.\n */\n UNSAFE_componentWillMount: function UNSAFE_componentWillMount() {\n this.keyboardWillOpenTo = null;\n this.additionalScrollOffset = 0; // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillShow', this.scrollResponderKeyboardWillShow);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillHide', this.scrollResponderKeyboardWillHide);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidShow', this.scrollResponderKeyboardDidShow);\n // this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidHide', this.scrollResponderKeyboardDidHide);\n },\n\n /**\n * Warning, this may be called several times for a single keyboard opening.\n * It's best to store the information in this method and then take any action\n * at a later point (either in `keyboardDidShow` or other).\n *\n * Here's the order that events occur in:\n * - focus\n * - willShow {startCoordinates, endCoordinates} several times\n * - didShow several times\n * - blur\n * - willHide {startCoordinates, endCoordinates} several times\n * - didHide several times\n *\n * The `ScrollResponder` providesModule callbacks for each of these events.\n * Even though any user could have easily listened to keyboard events\n * themselves, using these `props` callbacks ensures that ordering of events\n * is consistent - and not dependent on the order that the keyboard events are\n * subscribed to. This matters when telling the scroll view to scroll to where\n * the keyboard is headed - the scroll responder better have been notified of\n * the keyboard destination before being instructed to scroll to where the\n * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n * will work.\n *\n * WARNING: These callbacks will fire even if a keyboard is displayed in a\n * different navigation pane. Filter out the events to determine if they are\n * relevant to you. (For example, only if you receive these callbacks after\n * you had explicitly focused a node etc).\n */\n scrollResponderKeyboardWillShow: function scrollResponderKeyboardWillShow(e) {\n this.keyboardWillOpenTo = e;\n this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n },\n scrollResponderKeyboardWillHide: function scrollResponderKeyboardWillHide(e) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n },\n scrollResponderKeyboardDidShow: function scrollResponderKeyboardDidShow(e) {\n // TODO(7693961): The event for DidShow is not available on iOS yet.\n // Use the one from WillShow and do not assign.\n if (e) {\n this.keyboardWillOpenTo = e;\n }\n\n this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e);\n },\n scrollResponderKeyboardDidHide: function scrollResponderKeyboardDidHide(e) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e);\n }\n};\nvar ScrollResponder = {\n Mixin: ScrollResponderMixin\n};\nexport default ScrollResponder;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onScroll\", \"onTouchMove\", \"onWheel\", \"scrollEnabled\", \"scrollEventThrottle\", \"showsHorizontalScrollIndicator\", \"showsVerticalScrollIndicator\", \"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nimport useMergeRefs from '../../modules/useMergeRefs';\n\nfunction normalizeScrollEvent(e) {\n return {\n nativeEvent: {\n contentOffset: {\n get x() {\n return e.target.scrollLeft;\n },\n\n get y() {\n return e.target.scrollTop;\n }\n\n },\n contentSize: {\n get height() {\n return e.target.scrollHeight;\n },\n\n get width() {\n return e.target.scrollWidth;\n }\n\n },\n layoutMeasurement: {\n get height() {\n return e.target.offsetHeight;\n },\n\n get width() {\n return e.target.offsetWidth;\n }\n\n }\n },\n timeStamp: Date.now()\n };\n}\n\nfunction shouldEmitScrollEvent(lastTick, eventThrottle) {\n var timeSinceLastTick = Date.now() - lastTick;\n return eventThrottle > 0 && timeSinceLastTick >= eventThrottle;\n}\n/**\n * Encapsulates the Web-specific scroll throttling and disabling logic\n */\n\n\nvar ScrollViewBase = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var onScroll = props.onScroll,\n onTouchMove = props.onTouchMove,\n onWheel = props.onWheel,\n _props$scrollEnabled = props.scrollEnabled,\n scrollEnabled = _props$scrollEnabled === void 0 ? true : _props$scrollEnabled,\n _props$scrollEventThr = props.scrollEventThrottle,\n scrollEventThrottle = _props$scrollEventThr === void 0 ? 0 : _props$scrollEventThr,\n showsHorizontalScrollIndicator = props.showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator = props.showsVerticalScrollIndicator,\n style = props.style,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var scrollState = React.useRef({\n isScrolling: false,\n scrollLastTick: 0\n });\n var scrollTimeout = React.useRef(null);\n var scrollRef = React.useRef(null);\n\n function createPreventableScrollHandler(handler) {\n return e => {\n if (scrollEnabled) {\n if (handler) {\n handler(e);\n }\n }\n };\n }\n\n function handleScroll(e) {\n e.stopPropagation();\n\n if (e.target === scrollRef.current) {\n e.persist(); // A scroll happened, so the scroll resets the scrollend timeout.\n\n if (scrollTimeout.current != null) {\n clearTimeout(scrollTimeout.current);\n }\n\n scrollTimeout.current = setTimeout(() => {\n handleScrollEnd(e);\n }, 100);\n\n if (scrollState.current.isScrolling) {\n // Scroll last tick may have changed, check if we need to notify\n if (shouldEmitScrollEvent(scrollState.current.scrollLastTick, scrollEventThrottle)) {\n handleScrollTick(e);\n }\n } else {\n // Weren't scrolling, so we must have just started\n handleScrollStart(e);\n }\n }\n }\n\n function handleScrollStart(e) {\n scrollState.current.isScrolling = true;\n handleScrollTick(e);\n }\n\n function handleScrollTick(e) {\n scrollState.current.scrollLastTick = Date.now();\n\n if (onScroll) {\n onScroll(normalizeScrollEvent(e));\n }\n }\n\n function handleScrollEnd(e) {\n scrollState.current.isScrolling = false;\n\n if (onScroll) {\n onScroll(normalizeScrollEvent(e));\n }\n }\n\n var hideScrollbar = showsHorizontalScrollIndicator === false || showsVerticalScrollIndicator === false;\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, {\n onScroll: handleScroll,\n onTouchMove: createPreventableScrollHandler(onTouchMove),\n onWheel: createPreventableScrollHandler(onWheel),\n ref: useMergeRefs(scrollRef, forwardedRef),\n style: [style, !scrollEnabled && styles.scrollDisabled, hideScrollbar && styles.hideScrollbar]\n }));\n}); // Chrome doesn't support e.preventDefault in this case; touch-action must be\n// used to disable scrolling.\n// https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\nvar styles = StyleSheet.create({\n scrollDisabled: {\n overflowX: 'hidden',\n overflowY: 'hidden',\n touchAction: 'none'\n },\n hideScrollbar: {\n scrollbarWidth: 'none'\n }\n});\nexport default ScrollViewBase;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"contentContainerStyle\", \"horizontal\", \"onContentSizeChange\", \"refreshControl\", \"stickyHeaderIndices\", \"pagingEnabled\", \"forwardedRef\", \"keyboardDismissMode\", \"onScroll\", \"centerContent\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport createReactClass from 'create-react-class';\nimport dismissKeyboard from '../../modules/dismissKeyboard';\nimport invariant from 'fbjs/lib/invariant';\nimport mergeRefs from '../../modules/mergeRefs';\nimport ScrollResponder from '../../modules/ScrollResponder';\nimport ScrollViewBase from './ScrollViewBase';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nimport React from 'react';\nvar emptyObject = {};\n/* eslint-disable react/prefer-es6-class */\n\nvar ScrollView = createReactClass({\n displayName: \"ScrollView\",\n mixins: [ScrollResponder.Mixin],\n\n getInitialState() {\n return this.scrollResponderMixinGetInitialState();\n },\n\n flashScrollIndicators() {\n this.scrollResponderFlashScrollIndicators();\n },\n\n /**\n * Returns a reference to the underlying scroll responder, which supports\n * operations like `scrollTo`. All ScrollView-like components should\n * implement this method so that they can be composed while providing access\n * to the underlying scroll responder's methods.\n */\n getScrollResponder() {\n return this;\n },\n\n getScrollableNode() {\n return this._scrollNodeRef;\n },\n\n getInnerViewRef() {\n return this._innerViewRef;\n },\n\n getInnerViewNode() {\n return this._innerViewRef;\n },\n\n getNativeScrollRef() {\n return this._scrollNodeRef;\n },\n\n /**\n * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n * Syntax:\n *\n * scrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})\n *\n * Note: The weird argument signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as as alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollTo(y, x, animated) {\n if (typeof y === 'number') {\n console.warn('`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.');\n } else {\n var _ref = y || emptyObject;\n\n x = _ref.x;\n y = _ref.y;\n animated = _ref.animated;\n }\n\n this.getScrollResponder().scrollResponderScrollTo({\n x: x || 0,\n y: y || 0,\n animated: animated !== false\n });\n },\n\n /**\n * If this is a vertical ScrollView scrolls to the bottom.\n * If this is a horizontal ScrollView scrolls to the right.\n *\n * Use `scrollToEnd({ animated: true })` for smooth animated scrolling,\n * `scrollToEnd({ animated: false })` for immediate scrolling.\n * If no options are passed, `animated` defaults to true.\n */\n scrollToEnd(options) {\n // Default to true\n var animated = (options && options.animated) !== false;\n var horizontal = this.props.horizontal;\n var scrollResponder = this.getScrollResponder();\n var scrollResponderNode = scrollResponder.scrollResponderGetScrollableNode();\n var x = horizontal ? scrollResponderNode.scrollWidth : 0;\n var y = horizontal ? 0 : scrollResponderNode.scrollHeight;\n scrollResponder.scrollResponderScrollTo({\n x,\n y,\n animated\n });\n },\n\n render() {\n var _this$props = this.props,\n contentContainerStyle = _this$props.contentContainerStyle,\n horizontal = _this$props.horizontal,\n onContentSizeChange = _this$props.onContentSizeChange,\n refreshControl = _this$props.refreshControl,\n stickyHeaderIndices = _this$props.stickyHeaderIndices,\n pagingEnabled = _this$props.pagingEnabled,\n forwardedRef = _this$props.forwardedRef,\n keyboardDismissMode = _this$props.keyboardDismissMode,\n onScroll = _this$props.onScroll,\n centerContent = _this$props.centerContent,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n if (process.env.NODE_ENV !== 'production' && this.props.style) {\n var style = StyleSheet.flatten(this.props.style);\n var childLayoutProps = ['alignItems', 'justifyContent'].filter(prop => style && style[prop] !== undefined);\n invariant(childLayoutProps.length === 0, \"ScrollView child layout (\" + JSON.stringify(childLayoutProps) + \") \" + 'must be applied through the contentContainerStyle prop.');\n }\n\n var contentSizeChangeProps = {};\n\n if (onContentSizeChange) {\n contentSizeChangeProps = {\n onLayout: this._handleContentOnLayout\n };\n }\n\n var hasStickyHeaderIndices = !horizontal && Array.isArray(stickyHeaderIndices);\n var children = hasStickyHeaderIndices || pagingEnabled ? React.Children.map(this.props.children, (child, i) => {\n var isSticky = hasStickyHeaderIndices && stickyHeaderIndices.indexOf(i) > -1;\n\n if (child != null && (isSticky || pagingEnabled)) {\n return /*#__PURE__*/React.createElement(View, {\n style: StyleSheet.compose(isSticky && styles.stickyHeader, pagingEnabled && styles.pagingEnabledChild)\n }, child);\n } else {\n return child;\n }\n }) : this.props.children;\n var contentContainer = /*#__PURE__*/React.createElement(View, _extends({}, contentSizeChangeProps, {\n children: children,\n collapsable: false,\n ref: this._setInnerViewRef,\n style: [horizontal && styles.contentContainerHorizontal, centerContent && styles.contentContainerCenterContent, contentContainerStyle]\n }));\n var baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n var pagingEnabledStyle = horizontal ? styles.pagingEnabledHorizontal : styles.pagingEnabledVertical;\n\n var props = _objectSpread(_objectSpread({}, other), {}, {\n style: [baseStyle, pagingEnabled && pagingEnabledStyle, this.props.style],\n onTouchStart: this.scrollResponderHandleTouchStart,\n onTouchMove: this.scrollResponderHandleTouchMove,\n onTouchEnd: this.scrollResponderHandleTouchEnd,\n onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag,\n onScrollEndDrag: this.scrollResponderHandleScrollEndDrag,\n onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin,\n onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd,\n onStartShouldSetResponder: this.scrollResponderHandleStartShouldSetResponder,\n onStartShouldSetResponderCapture: this.scrollResponderHandleStartShouldSetResponderCapture,\n onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,\n onScroll: this._handleScroll,\n onResponderGrant: this.scrollResponderHandleResponderGrant,\n onResponderTerminationRequest: this.scrollResponderHandleTerminationRequest,\n onResponderTerminate: this.scrollResponderHandleTerminate,\n onResponderRelease: this.scrollResponderHandleResponderRelease,\n onResponderReject: this.scrollResponderHandleResponderReject\n });\n\n var ScrollViewClass = ScrollViewBase;\n invariant(ScrollViewClass !== undefined, 'ScrollViewClass must not be undefined');\n var scrollView = /*#__PURE__*/React.createElement(ScrollViewClass, _extends({}, props, {\n ref: this._setScrollNodeRef\n }), contentContainer);\n\n if (refreshControl) {\n return /*#__PURE__*/React.cloneElement(refreshControl, {\n style: props.style\n }, scrollView);\n }\n\n return scrollView;\n },\n\n _handleContentOnLayout(e) {\n var _e$nativeEvent$layout = e.nativeEvent.layout,\n width = _e$nativeEvent$layout.width,\n height = _e$nativeEvent$layout.height;\n this.props.onContentSizeChange(width, height);\n },\n\n _handleScroll(e) {\n if (process.env.NODE_ENV !== 'production') {\n if (this.props.onScroll && this.props.scrollEventThrottle == null) {\n console.log('You specified `onScroll` on a but not ' + '`scrollEventThrottle`. You will only receive one event. ' + 'Using `16` you get all the events but be aware that it may ' + \"cause frame drops, use a bigger number if you don't need as \" + 'much precision.');\n }\n }\n\n if (this.props.keyboardDismissMode === 'on-drag') {\n dismissKeyboard();\n }\n\n this.scrollResponderHandleScroll(e);\n },\n\n _setInnerViewRef(node) {\n this._innerViewRef = node;\n },\n\n _setScrollNodeRef(node) {\n this._scrollNodeRef = node; // ScrollView needs to add more methods to the hostNode in addition to those\n // added by `usePlatformMethods`. This is temporarily until an API like\n // `ScrollView.scrollTo(hostNode, { x, y })` is added to React Native.\n\n if (node != null) {\n node.getScrollResponder = this.getScrollResponder;\n node.getInnerViewNode = this.getInnerViewNode;\n node.getInnerViewRef = this.getInnerViewRef;\n node.getNativeScrollRef = this.getNativeScrollRef;\n node.getScrollableNode = this.getScrollableNode;\n node.scrollTo = this.scrollTo;\n node.scrollToEnd = this.scrollToEnd;\n node.flashScrollIndicators = this.flashScrollIndicators;\n node.scrollResponderZoomTo = this.scrollResponderZoomTo;\n node.scrollResponderScrollNativeHandleToKeyboard = this.scrollResponderScrollNativeHandleToKeyboard;\n }\n\n var ref = mergeRefs(this.props.forwardedRef);\n ref(node);\n }\n\n});\nvar commonStyle = {\n flexGrow: 1,\n flexShrink: 1,\n // Enable hardware compositing in modern browsers.\n // Creates a new layer with its own backing surface that can significantly\n // improve scroll performance.\n transform: [{\n translateZ: 0\n }],\n // iOS native scrolling\n WebkitOverflowScrolling: 'touch'\n};\nvar styles = StyleSheet.create({\n baseVertical: _objectSpread(_objectSpread({}, commonStyle), {}, {\n flexDirection: 'column',\n overflowX: 'hidden',\n overflowY: 'auto'\n }),\n baseHorizontal: _objectSpread(_objectSpread({}, commonStyle), {}, {\n flexDirection: 'row',\n overflowX: 'auto',\n overflowY: 'hidden'\n }),\n contentContainerHorizontal: {\n flexDirection: 'row'\n },\n contentContainerCenterContent: {\n justifyContent: 'center',\n flexGrow: 1\n },\n stickyHeader: {\n position: 'sticky',\n top: 0,\n zIndex: 10\n },\n pagingEnabledHorizontal: {\n scrollSnapType: 'x mandatory'\n },\n pagingEnabledVertical: {\n scrollSnapType: 'y mandatory'\n },\n pagingEnabledChild: {\n scrollSnapAlign: 'start'\n }\n});\nvar ForwardedScrollView = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n return /*#__PURE__*/React.createElement(ScrollView, _extends({}, props, {\n forwardedRef: forwardedRef\n }));\n});\nForwardedScrollView.displayName = 'ScrollView';\nexport default ForwardedScrollView;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nvar _excluded = [\"ItemSeparatorComponent\", \"SectionSeparatorComponent\", \"renderItem\", \"renderSectionFooter\", \"renderSectionHeader\", \"sections\", \"stickySectionHeadersEnabled\"];\nimport { keyExtractor as defaultKeyExtractor } from '../VirtualizeUtils';\nimport View from '../../../exports/View';\nimport VirtualizedList from '../VirtualizedList';\nimport * as React from 'react';\nimport invariant from 'fbjs/lib/invariant';\n\n/**\n * Right now this just flattens everything into one list and uses VirtualizedList under the\n * hood. The only operation that might not scale well is concatting the data arrays of all the\n * sections when new props are received, which should be plenty fast for up to ~10,000 items.\n */\nclass VirtualizedSectionList extends React.PureComponent {\n constructor() {\n super(...arguments);\n\n this._keyExtractor = (item, index) => {\n var info = this._subExtractor(index);\n\n return info && info.key || String(index);\n };\n\n this._convertViewable = viewable => {\n var _info$index;\n\n invariant(viewable.index != null, 'Received a broken ViewToken');\n\n var info = this._subExtractor(viewable.index);\n\n if (!info) {\n return null;\n }\n\n var keyExtractorWithNullableIndex = info.section.keyExtractor;\n var keyExtractorWithNonNullableIndex = this.props.keyExtractor || defaultKeyExtractor;\n var key = keyExtractorWithNullableIndex != null ? keyExtractorWithNullableIndex(viewable.item, info.index) : keyExtractorWithNonNullableIndex(viewable.item, (_info$index = info.index) !== null && _info$index !== void 0 ? _info$index : 0);\n return _objectSpread(_objectSpread({}, viewable), {}, {\n index: info.index,\n key,\n section: info.section\n });\n };\n\n this._onViewableItemsChanged = _ref => {\n var viewableItems = _ref.viewableItems,\n changed = _ref.changed;\n var onViewableItemsChanged = this.props.onViewableItemsChanged;\n\n if (onViewableItemsChanged != null) {\n onViewableItemsChanged({\n viewableItems: viewableItems.map(this._convertViewable, this).filter(Boolean),\n changed: changed.map(this._convertViewable, this).filter(Boolean)\n });\n }\n };\n\n this._renderItem = listItemCount => _ref2 => {\n var item = _ref2.item,\n index = _ref2.index;\n\n var info = this._subExtractor(index);\n\n if (!info) {\n return null;\n }\n\n var infoIndex = info.index;\n\n if (infoIndex == null) {\n var section = info.section;\n\n if (info.header === true) {\n var renderSectionHeader = this.props.renderSectionHeader;\n return renderSectionHeader ? renderSectionHeader({\n section\n }) : null;\n } else {\n var renderSectionFooter = this.props.renderSectionFooter;\n return renderSectionFooter ? renderSectionFooter({\n section\n }) : null;\n }\n } else {\n var renderItem = info.section.renderItem || this.props.renderItem;\n\n var SeparatorComponent = this._getSeparatorComponent(index, info, listItemCount);\n\n invariant(renderItem, 'no renderItem!');\n return /*#__PURE__*/React.createElement(ItemWithSeparator, {\n SeparatorComponent: SeparatorComponent,\n LeadingSeparatorComponent: infoIndex === 0 ? this.props.SectionSeparatorComponent : undefined,\n cellKey: info.key,\n index: infoIndex,\n item: item,\n leadingItem: info.leadingItem,\n leadingSection: info.leadingSection,\n prevCellKey: (this._subExtractor(index - 1) || {}).key // Callback to provide updateHighlight for this item\n ,\n setSelfHighlightCallback: this._setUpdateHighlightFor,\n setSelfUpdatePropsCallback: this._setUpdatePropsFor // Provide child ability to set highlight/updateProps for previous item using prevCellKey\n ,\n updateHighlightFor: this._updateHighlightFor,\n updatePropsFor: this._updatePropsFor,\n renderItem: renderItem,\n section: info.section,\n trailingItem: info.trailingItem,\n trailingSection: info.trailingSection,\n inverted: !!this.props.inverted\n });\n }\n };\n\n this._updatePropsFor = (cellKey, value) => {\n var updateProps = this._updatePropsMap[cellKey];\n\n if (updateProps != null) {\n updateProps(value);\n }\n };\n\n this._updateHighlightFor = (cellKey, value) => {\n var updateHighlight = this._updateHighlightMap[cellKey];\n\n if (updateHighlight != null) {\n updateHighlight(value);\n }\n };\n\n this._setUpdateHighlightFor = (cellKey, updateHighlightFn) => {\n if (updateHighlightFn != null) {\n this._updateHighlightMap[cellKey] = updateHighlightFn;\n } else {\n delete this._updateHighlightFor[cellKey];\n }\n };\n\n this._setUpdatePropsFor = (cellKey, updatePropsFn) => {\n if (updatePropsFn != null) {\n this._updatePropsMap[cellKey] = updatePropsFn;\n } else {\n delete this._updatePropsMap[cellKey];\n }\n };\n\n this._updateHighlightMap = {};\n this._updatePropsMap = {};\n\n this._captureRef = ref => {\n this._listRef = ref;\n };\n }\n\n scrollToLocation(params) {\n var index = params.itemIndex;\n\n for (var i = 0; i < params.sectionIndex; i++) {\n index += this.props.getItemCount(this.props.sections[i].data) + 2;\n }\n\n var viewOffset = params.viewOffset || 0;\n\n if (this._listRef == null) {\n return;\n }\n\n if (params.itemIndex > 0 && this.props.stickySectionHeadersEnabled) {\n // $FlowFixMe[prop-missing] Cannot access private property\n var frame = this._listRef._getFrameMetricsApprox(index - params.itemIndex);\n\n viewOffset += frame.length;\n }\n\n var toIndexParams = _objectSpread(_objectSpread({}, params), {}, {\n viewOffset,\n index\n });\n\n this._listRef.scrollToIndex(toIndexParams);\n }\n\n getListRef() {\n return this._listRef;\n }\n\n render() {\n var _this$props = this.props,\n ItemSeparatorComponent = _this$props.ItemSeparatorComponent,\n SectionSeparatorComponent = _this$props.SectionSeparatorComponent,\n _renderItem = _this$props.renderItem,\n renderSectionFooter = _this$props.renderSectionFooter,\n renderSectionHeader = _this$props.renderSectionHeader,\n _sections = _this$props.sections,\n stickySectionHeadersEnabled = _this$props.stickySectionHeadersEnabled,\n passThroughProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var listHeaderOffset = this.props.ListHeaderComponent ? 1 : 0;\n var stickyHeaderIndices = this.props.stickySectionHeadersEnabled ? [] : undefined;\n var itemCount = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(this.props.sections), _step; !(_step = _iterator()).done;) {\n var section = _step.value;\n\n // Track the section header indices\n if (stickyHeaderIndices != null) {\n stickyHeaderIndices.push(itemCount + listHeaderOffset);\n } // Add two for the section header and footer.\n\n\n itemCount += 2;\n itemCount += this.props.getItemCount(section.data);\n }\n\n var renderItem = this._renderItem(itemCount);\n\n return /*#__PURE__*/React.createElement(VirtualizedList, _extends({}, passThroughProps, {\n keyExtractor: this._keyExtractor,\n stickyHeaderIndices: stickyHeaderIndices,\n renderItem: renderItem,\n data: this.props.sections,\n getItem: (sections, index) => this._getItem(this.props, sections, index),\n getItemCount: () => itemCount,\n onViewableItemsChanged: this.props.onViewableItemsChanged ? this._onViewableItemsChanged : undefined,\n ref: this._captureRef\n }));\n }\n\n _getItem(props, sections, index) {\n if (!sections) {\n return null;\n }\n\n var itemIdx = index - 1;\n\n for (var i = 0; i < sections.length; i++) {\n var section = sections[i];\n var sectionData = section.data;\n var itemCount = props.getItemCount(sectionData);\n\n if (itemIdx === -1 || itemIdx === itemCount) {\n // We intend for there to be overflow by one on both ends of the list.\n // This will be for headers and footers. When returning a header or footer\n // item the section itself is the item.\n return section;\n } else if (itemIdx < itemCount) {\n // If we are in the bounds of the list's data then return the item.\n return props.getItem(sectionData, itemIdx);\n } else {\n itemIdx -= itemCount + 2; // Add two for the header and footer\n }\n }\n\n return null;\n }\n\n _subExtractor(index) {\n var itemIndex = index;\n var _this$props2 = this.props,\n getItem = _this$props2.getItem,\n getItemCount = _this$props2.getItemCount,\n keyExtractor = _this$props2.keyExtractor,\n sections = _this$props2.sections;\n\n for (var i = 0; i < sections.length; i++) {\n var section = sections[i];\n var sectionData = section.data;\n var key = section.key || String(i);\n itemIndex -= 1; // The section adds an item for the header\n\n if (itemIndex >= getItemCount(sectionData) + 1) {\n itemIndex -= getItemCount(sectionData) + 1; // The section adds an item for the footer.\n } else if (itemIndex === -1) {\n return {\n section,\n key: key + ':header',\n index: null,\n header: true,\n trailingSection: sections[i + 1]\n };\n } else if (itemIndex === getItemCount(sectionData)) {\n return {\n section,\n key: key + ':footer',\n index: null,\n header: false,\n trailingSection: sections[i + 1]\n };\n } else {\n var extractor = section.keyExtractor || keyExtractor || defaultKeyExtractor;\n return {\n section,\n key: key + ':' + extractor(getItem(sectionData, itemIndex), itemIndex),\n index: itemIndex,\n leadingItem: getItem(sectionData, itemIndex - 1),\n leadingSection: sections[i - 1],\n trailingItem: getItem(sectionData, itemIndex + 1),\n trailingSection: sections[i + 1]\n };\n }\n }\n }\n\n _getSeparatorComponent(index, info, listItemCount) {\n info = info || this._subExtractor(index);\n\n if (!info) {\n return null;\n }\n\n var ItemSeparatorComponent = info.section.ItemSeparatorComponent || this.props.ItemSeparatorComponent;\n var SectionSeparatorComponent = this.props.SectionSeparatorComponent;\n var isLastItemInList = index === listItemCount - 1;\n var isLastItemInSection = info.index === this.props.getItemCount(info.section.data) - 1;\n\n if (SectionSeparatorComponent && isLastItemInSection) {\n return SectionSeparatorComponent;\n }\n\n if (ItemSeparatorComponent && !isLastItemInSection && !isLastItemInList) {\n return ItemSeparatorComponent;\n }\n\n return null;\n }\n\n}\n\nfunction ItemWithSeparator(props) {\n var LeadingSeparatorComponent = props.LeadingSeparatorComponent,\n SeparatorComponent = props.SeparatorComponent,\n cellKey = props.cellKey,\n prevCellKey = props.prevCellKey,\n setSelfHighlightCallback = props.setSelfHighlightCallback,\n updateHighlightFor = props.updateHighlightFor,\n setSelfUpdatePropsCallback = props.setSelfUpdatePropsCallback,\n updatePropsFor = props.updatePropsFor,\n item = props.item,\n index = props.index,\n section = props.section,\n inverted = props.inverted;\n\n var _React$useState = React.useState(false),\n leadingSeparatorHiglighted = _React$useState[0],\n setLeadingSeparatorHighlighted = _React$useState[1];\n\n var _React$useState2 = React.useState(false),\n separatorHighlighted = _React$useState2[0],\n setSeparatorHighlighted = _React$useState2[1];\n\n var _React$useState3 = React.useState({\n leadingItem: props.leadingItem,\n leadingSection: props.leadingSection,\n section: props.section,\n trailingItem: props.item,\n trailingSection: props.trailingSection\n }),\n leadingSeparatorProps = _React$useState3[0],\n setLeadingSeparatorProps = _React$useState3[1];\n\n var _React$useState4 = React.useState({\n leadingItem: props.item,\n leadingSection: props.leadingSection,\n section: props.section,\n trailingItem: props.trailingItem,\n trailingSection: props.trailingSection\n }),\n separatorProps = _React$useState4[0],\n setSeparatorProps = _React$useState4[1];\n\n React.useEffect(() => {\n setSelfHighlightCallback(cellKey, setSeparatorHighlighted);\n setSelfUpdatePropsCallback(cellKey, setSeparatorProps);\n return () => {\n setSelfUpdatePropsCallback(cellKey, null);\n setSelfHighlightCallback(cellKey, null);\n };\n }, [cellKey, setSelfHighlightCallback, setSeparatorProps, setSelfUpdatePropsCallback]);\n var separators = {\n highlight: () => {\n setLeadingSeparatorHighlighted(true);\n setSeparatorHighlighted(true);\n\n if (prevCellKey != null) {\n updateHighlightFor(prevCellKey, true);\n }\n },\n unhighlight: () => {\n setLeadingSeparatorHighlighted(false);\n setSeparatorHighlighted(false);\n\n if (prevCellKey != null) {\n updateHighlightFor(prevCellKey, false);\n }\n },\n updateProps: (select, newProps) => {\n if (select === 'leading') {\n if (LeadingSeparatorComponent != null) {\n setLeadingSeparatorProps(_objectSpread(_objectSpread({}, leadingSeparatorProps), newProps));\n } else if (prevCellKey != null) {\n // update the previous item's separator\n updatePropsFor(prevCellKey, _objectSpread(_objectSpread({}, leadingSeparatorProps), newProps));\n }\n } else if (select === 'trailing' && SeparatorComponent != null) {\n setSeparatorProps(_objectSpread(_objectSpread({}, separatorProps), newProps));\n }\n }\n };\n var element = props.renderItem({\n item,\n index,\n section,\n separators\n });\n var leadingSeparator = LeadingSeparatorComponent != null && /*#__PURE__*/React.createElement(LeadingSeparatorComponent, _extends({\n highlighted: leadingSeparatorHiglighted\n }, leadingSeparatorProps));\n var separator = SeparatorComponent != null && /*#__PURE__*/React.createElement(SeparatorComponent, _extends({\n highlighted: separatorHighlighted\n }, separatorProps));\n return leadingSeparator || separator ? /*#__PURE__*/React.createElement(View, null, inverted === false ? leadingSeparator : separator, element, inverted === false ? separator : leadingSeparator) : element;\n}\n\nexport default VirtualizedSectionList;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"stickySectionHeadersEnabled\"];\nimport Platform from '../../../exports/Platform';\nimport * as React from 'react';\nimport VirtualizedSectionList from '../VirtualizedSectionList';\n\n/**\n * A performant interface for rendering sectioned lists, supporting the most handy features:\n *\n * - Fully cross-platform.\n * - Configurable viewability callbacks.\n * - List header support.\n * - List footer support.\n * - Item separator support.\n * - Section header support.\n * - Section separator support.\n * - Heterogeneous data and item rendering support.\n * - Pull to Refresh.\n * - Scroll loading.\n *\n * If you don't need section support and want a simpler interface, use\n * [``](https://reactnative.dev/docs/flatlist).\n *\n * Simple Examples:\n *\n * }\n * renderSectionHeader={({section}) =>
}\n * sections={[ // homogeneous rendering between sections\n * {data: [...], title: ...},\n * {data: [...], title: ...},\n * {data: [...], title: ...},\n * ]}\n * />\n *\n * \n *\n * This is a convenience wrapper around [``](docs/virtualizedlist),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate and momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nexport default class SectionList extends React.PureComponent {\n constructor() {\n super(...arguments);\n\n this._captureRef = ref => {\n this._wrapperListRef = ref;\n };\n }\n\n /**\n * Scrolls to the item at the specified `sectionIndex` and `itemIndex` (within the section)\n * positioned in the viewable area such that `viewPosition` 0 places it at the top (and may be\n * covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle. `viewOffset` is a\n * fixed number of pixels to offset the final target position, e.g. to compensate for sticky\n * headers.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n scrollToLocation(params) {\n if (this._wrapperListRef != null) {\n this._wrapperListRef.scrollToLocation(params);\n }\n }\n /**\n * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n * taps on items or by navigation actions.\n */\n\n\n recordInteraction() {\n var listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n\n listRef && listRef.recordInteraction();\n }\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n\n\n flashScrollIndicators() {\n var listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n\n listRef && listRef.flashScrollIndicators();\n }\n /**\n * Provides a handle to the underlying scroll responder.\n */\n\n\n getScrollResponder() {\n var listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n\n if (listRef) {\n return listRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n var listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n\n if (listRef) {\n return listRef.getScrollableNode();\n }\n }\n\n setNativeProps(props) {\n var listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n\n if (listRef) {\n listRef.setNativeProps(props);\n }\n }\n\n render() {\n var _this$props = this.props,\n _stickySectionHeadersEnabled = _this$props.stickySectionHeadersEnabled,\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var stickySectionHeadersEnabled = _stickySectionHeadersEnabled !== null && _stickySectionHeadersEnabled !== void 0 ? _stickySectionHeadersEnabled : Platform.OS === 'ios';\n return /*#__PURE__*/React.createElement(VirtualizedSectionList, _extends({}, restProps, {\n stickySectionHeadersEnabled: stickySectionHeadersEnabled,\n ref: this._captureRef,\n getItemCount: items => items.length,\n getItem: (items, index) => items[index]\n }));\n }\n\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport SectionList from '../../vendor/react-native/SectionList';\nexport default SectionList;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar emptyFunction = () => {};\n\nfunction StatusBar() {\n return null;\n}\n\nStatusBar.setBackgroundColor = emptyFunction;\nStatusBar.setBarStyle = emptyFunction;\nStatusBar.setHidden = emptyFunction;\nStatusBar.setNetworkActivityIndicatorVisible = emptyFunction;\nStatusBar.setTranslucent = emptyFunction;\nexport default StatusBar;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar isWebColor = color => color === 'currentcolor' || color === 'currentColor' || color === 'inherit' || color.indexOf('var(') === 0;\n\nexport default isWebColor;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport isWebColor from '../../../modules/isWebColor';\nimport processColor from '../../../exports/processColor';\n\nvar normalizeColor = function normalizeColor(color, opacity) {\n if (opacity === void 0) {\n opacity = 1;\n }\n\n if (color == null) return;\n\n if (typeof color === 'string' && isWebColor(color)) {\n return color;\n }\n\n var colorInt = processColor(color);\n\n if (colorInt != null) {\n var r = colorInt >> 16 & 255;\n var g = colorInt >> 8 & 255;\n var b = colorInt & 255;\n var a = (colorInt >> 24 & 255) / 255;\n var alpha = (a * opacity).toFixed(2);\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + alpha + \")\";\n }\n};\n\nexport default normalizeColor;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar unitlessNumbers = {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexOrder: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowGap: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnGap: true,\n gridColumnStart: true,\n lineClamp: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n // transform types\n scale: true,\n scaleX: true,\n scaleY: true,\n scaleZ: true,\n // RN properties\n shadowOpacity: true\n};\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\nvar prefixes = ['ms', 'Moz', 'O', 'Webkit'];\n\nvar prefixKey = (prefix, key) => {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n};\n\nObject.keys(unitlessNumbers).forEach(prop => {\n prefixes.forEach(prefix => {\n unitlessNumbers[prefixKey(prefix, prop)] = unitlessNumbers[prop];\n });\n});\nexport default unitlessNumbers;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport unitlessNumbers from './unitlessNumbers';\nimport normalizeColor from './normalizeColor';\nvar colorProps = {\n backgroundColor: true,\n borderColor: true,\n borderTopColor: true,\n borderRightColor: true,\n borderBottomColor: true,\n borderLeftColor: true,\n color: true,\n shadowColor: true,\n textDecorationColor: true,\n textShadowColor: true\n};\nexport default function normalizeValueWithProperty(value, property) {\n var returnValue = value;\n\n if ((property == null || !unitlessNumbers[property]) && typeof value === 'number') {\n returnValue = value + \"px\";\n } else if (property != null && colorProps[property]) {\n returnValue = normalizeColor(value);\n }\n\n return returnValue;\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport canUseDOM from '../../../modules/canUseDom'; // $FlowFixMe: HTMLStyleElement is incorrectly typed - https://github.com/facebook/flow/issues/2696\n\nexport default function createCSSStyleSheet(id, rootNode, textContent) {\n if (canUseDOM) {\n var root = rootNode != null ? rootNode : document;\n var element = root.getElementById(id);\n\n if (element == null) {\n element = document.createElement('style');\n element.setAttribute('id', id);\n\n if (typeof textContent === 'string') {\n element.appendChild(document.createTextNode(textContent));\n }\n\n if (root instanceof ShadowRoot) {\n root.insertBefore(element, root.firstChild);\n } else {\n var head = root.head;\n\n if (head) {\n head.insertBefore(element, head.firstChild);\n }\n }\n } // $FlowFixMe: HTMLElement is incorrectly typed\n\n\n return element.sheet;\n } else {\n return null;\n }\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar slice = Array.prototype.slice;\n/**\n * Order-based insertion of CSS.\n *\n * Each rule is associated with a numerically defined group.\n * Groups are ordered within the style sheet according to their number, with the\n * lowest first.\n *\n * Groups are implemented using marker rules. The selector of the first rule of\n * each group is used only to encode the group number for hydration. An\n * alternative implementation could rely on CSSMediaRule, allowing groups to be\n * treated as a sub-sheet, but the Edge implementation of CSSMediaRule is\n * broken.\n * https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule\n * https://gist.github.com/necolas/aa0c37846ad6bd3b05b727b959e82674\n */\n\nexport default function createOrderedCSSStyleSheet(sheet) {\n var groups = {};\n var selectors = {};\n /**\n * Hydrate approximate record from any existing rules in the sheet.\n */\n\n if (sheet != null) {\n var group;\n slice.call(sheet.cssRules).forEach((cssRule, i) => {\n var cssText = cssRule.cssText; // Create record of existing selectors and rules\n\n if (cssText.indexOf('stylesheet-group') > -1) {\n group = decodeGroupRule(cssRule);\n groups[group] = {\n start: i,\n rules: [cssText]\n };\n } else {\n var selectorText = getSelectorText(cssText);\n\n if (selectorText != null) {\n selectors[selectorText] = true;\n groups[group].rules.push(cssText);\n }\n }\n });\n }\n\n function sheetInsert(sheet, group, text) {\n var orderedGroups = getOrderedGroups(groups);\n var groupIndex = orderedGroups.indexOf(group);\n var nextGroupIndex = groupIndex + 1;\n var nextGroup = orderedGroups[nextGroupIndex]; // Insert rule before the next group, or at the end of the stylesheet\n\n var position = nextGroup != null && groups[nextGroup].start != null ? groups[nextGroup].start : sheet.cssRules.length;\n var isInserted = insertRuleAt(sheet, text, position);\n\n if (isInserted) {\n // Set the starting index of the new group\n if (groups[group].start == null) {\n groups[group].start = position;\n } // Increment the starting index of all subsequent groups\n\n\n for (var i = nextGroupIndex; i < orderedGroups.length; i += 1) {\n var groupNumber = orderedGroups[i];\n var previousStart = groups[groupNumber].start || 0;\n groups[groupNumber].start = previousStart + 1;\n }\n }\n\n return isInserted;\n }\n\n var OrderedCSSStyleSheet = {\n /**\n * The textContent of the style sheet.\n */\n getTextContent() {\n return getOrderedGroups(groups).map(group => {\n var rules = groups[group].rules; // Sorting provides deterministic order of styles in group for\n // build-time extraction of the style sheet.\n\n var marker = rules.shift();\n rules.sort();\n rules.unshift(marker);\n return rules.join('\\n');\n }).join('\\n');\n },\n\n /**\n * Insert a rule into the style sheet\n */\n insert(cssText, groupValue) {\n var group = Number(groupValue); // Create a new group.\n\n if (groups[group] == null) {\n var markerRule = encodeGroupRule(group); // Create the internal record.\n\n groups[group] = {\n start: null,\n rules: [markerRule]\n }; // Update CSSOM.\n\n if (sheet != null) {\n sheetInsert(sheet, group, markerRule);\n }\n } // selectorText is more reliable than cssText for insertion checks. The\n // browser excludes vendor-prefixed properties and rewrites certain values\n // making cssText more likely to be different from what was inserted.\n\n\n var selectorText = getSelectorText(cssText);\n\n if (selectorText != null && selectors[selectorText] == null) {\n // Update the internal records.\n selectors[selectorText] = true;\n groups[group].rules.push(cssText); // Update CSSOM.\n\n if (sheet != null) {\n var isInserted = sheetInsert(sheet, group, cssText);\n\n if (!isInserted) {\n // Revert internal record change if a rule was rejected (e.g.,\n // unrecognized pseudo-selector)\n groups[group].rules.pop();\n }\n }\n }\n }\n\n };\n return OrderedCSSStyleSheet;\n}\n/**\n * Helper functions\n */\n\nfunction encodeGroupRule(group) {\n return \"[stylesheet-group=\\\"\" + group + \"\\\"]{}\";\n}\n\nvar groupPattern = /[\"']/g;\n\nfunction decodeGroupRule(cssRule) {\n return Number(cssRule.selectorText.split(groupPattern)[1]);\n}\n\nfunction getOrderedGroups(obj) {\n return Object.keys(obj).map(Number).sort((a, b) => a > b ? 1 : -1);\n}\n\nvar selectorPattern = /\\s*([,])\\s*/g;\n\nfunction getSelectorText(cssText) {\n var selector = cssText.split('{')[0].trim();\n return selector !== '' ? selector.replace(selectorPattern, '$1') : null;\n}\n\nfunction insertRuleAt(root, cssText, position) {\n try {\n // $FlowFixMe: Flow is missing CSSOM types needed to type 'root'.\n root.insertRule(cssText, position);\n return true;\n } catch (e) {\n // JSDOM doesn't support `CSSSMediaRule#insertRule`.\n // Also ignore errors that occur from attempting to insert vendor-prefixed selectors.\n return false;\n }\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport canUseDOM from '../../../modules/canUseDom';\nimport createCSSStyleSheet from './createCSSStyleSheet';\nimport createOrderedCSSStyleSheet from './createOrderedCSSStyleSheet';\nvar defaultId = 'react-native-stylesheet';\nvar roots = new WeakMap();\nvar sheets = [];\nvar initialRules = [// minimal top-level reset\n'html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}', 'body{margin:0;}', // minimal form pseudo-element reset\n'button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}', 'input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}'];\nexport function createSheet(root, id) {\n if (id === void 0) {\n id = defaultId;\n }\n\n var sheet;\n\n if (canUseDOM) {\n var rootNode = root != null ? root.getRootNode() : document; // Create the initial style sheet\n\n if (sheets.length === 0) {\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id));\n initialRules.forEach(rule => {\n sheet.insert(rule, 0);\n });\n roots.set(rootNode, sheets.length);\n sheets.push(sheet);\n } else {\n var index = roots.get(rootNode);\n\n if (index == null) {\n var initialSheet = sheets[0]; // If we're creating a new sheet, populate it with existing styles\n\n var textContent = initialSheet != null ? initialSheet.getTextContent() : ''; // Cast rootNode to 'any' because Flow types for getRootNode are wrong\n\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id, rootNode, textContent));\n roots.set(rootNode, sheets.length);\n sheets.push(sheet);\n } else {\n sheet = sheets[index];\n }\n }\n } else {\n // Create the initial style sheet\n if (sheets.length === 0) {\n sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(id));\n initialRules.forEach(rule => {\n sheet.insert(rule, 0);\n });\n sheets.push(sheet);\n } else {\n sheet = sheets[0];\n }\n }\n\n return {\n getTextContent() {\n return sheet.getTextContent();\n },\n\n id,\n\n insert(cssText, groupValue) {\n sheets.forEach(s => {\n s.insert(cssText, groupValue);\n });\n }\n\n };\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport normalizeValueWithProperty from './normalizeValueWithProperty';\nimport canUseDOM from '../../../modules/canUseDom';\n\n/**\n * The browser implements the CSS cascade, where the order of properties is a\n * factor in determining which styles to paint. React Native is different. It\n * gives giving precedence to the more specific style property. For example,\n * the value of `paddingTop` takes precedence over that of `padding`.\n *\n * This module creates mutally exclusive style declarations by expanding all of\n * React Native's supported shortform properties (e.g. `padding`) to their\n * longfrom equivalents.\n */\nvar emptyObject = {};\nvar supportsCSS3TextDecoration = !canUseDOM || window.CSS != null && window.CSS.supports != null && (window.CSS.supports('text-decoration-line', 'none') || window.CSS.supports('-webkit-text-decoration-line', 'none'));\nvar ignoredProps = {\n elevation: true,\n overlayColor: true,\n resizeMode: true,\n tintColor: true\n};\nvar MONOSPACE_FONT_STACK = 'monospace,monospace';\nvar SYSTEM_FONT_STACK = '-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif';\nvar STYLE_SHORT_FORM_EXPANSIONS = {\n borderColor: ['borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor'],\n borderRadius: ['borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomRightRadius', 'borderBottomLeftRadius'],\n borderStyle: ['borderTopStyle', 'borderRightStyle', 'borderBottomStyle', 'borderLeftStyle'],\n borderWidth: ['borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth'],\n marginHorizontal: ['marginRight', 'marginLeft'],\n marginVertical: ['marginTop', 'marginBottom'],\n overflow: ['overflowX', 'overflowY'],\n overscrollBehavior: ['overscrollBehaviorX', 'overscrollBehaviorY'],\n paddingHorizontal: ['paddingRight', 'paddingLeft'],\n paddingVertical: ['paddingTop', 'paddingBottom']\n};\n/**\n * Transform\n */\n// { scale: 2 } => 'scale(2)'\n// { translateX: 20 } => 'translateX(20px)'\n// { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'\n\nvar mapTransform = transform => {\n var type = Object.keys(transform)[0];\n var value = transform[type];\n\n if (type === 'matrix' || type === 'matrix3d') {\n return type + \"(\" + value.join(',') + \")\";\n } else {\n var normalizedValue = normalizeValueWithProperty(value, type);\n return type + \"(\" + normalizedValue + \")\";\n }\n};\n\nexport var createTransformValue = style => {\n var transform = style.transform;\n\n if (Array.isArray(style.transform)) {\n transform = style.transform.map(mapTransform).join(' ');\n }\n\n return transform;\n};\n/**\n * Reducer\n */\n\nvar createReactDOMStyle = (style, isInline) => {\n if (!style) {\n return emptyObject;\n }\n\n var resolvedStyle = {};\n\n for (var prop in style) {\n var value = style[prop];\n\n if ( // Ignore everything with a null value\n value == null || // Ignore some React Native styles\n ignoredProps[prop]) {\n continue;\n }\n\n if (prop === 'aspectRatio') {\n resolvedStyle[prop] = value.toString();\n } else if (prop === 'backgroundClip') {\n // TODO: remove once this issue is fixed\n // https://github.com/rofrischmann/inline-style-prefixer/issues/159\n if (value === 'text') {\n resolvedStyle.backgroundClip = value;\n resolvedStyle.WebkitBackgroundClip = value;\n }\n } else if (prop === 'flex') {\n if (value === -1) {\n resolvedStyle.flexGrow = 0;\n resolvedStyle.flexShrink = 1;\n resolvedStyle.flexBasis = 'auto';\n } else {\n resolvedStyle.flex = value;\n }\n } else if (prop === 'font') {\n resolvedStyle[prop] = value.replace('System', SYSTEM_FONT_STACK);\n } else if (prop === 'fontFamily') {\n if (value.indexOf('System') > -1) {\n var stack = value.split(/,\\s*/);\n stack[stack.indexOf('System')] = SYSTEM_FONT_STACK;\n resolvedStyle[prop] = stack.join(',');\n } else if (value === 'monospace') {\n resolvedStyle[prop] = MONOSPACE_FONT_STACK;\n } else {\n resolvedStyle[prop] = value;\n }\n } else if (prop === 'fontVariant') {\n if (Array.isArray(value) && value.length > 0) {\n resolvedStyle.fontVariant = value.join(' ');\n }\n } else if (prop === 'textAlignVertical') {\n resolvedStyle.verticalAlign = value === 'center' ? 'middle' : value;\n } else if (prop === 'textDecorationLine') {\n // use 'text-decoration' for browsers that only support CSS2\n // text-decoration (e.g., IE, Edge)\n if (!supportsCSS3TextDecoration) {\n resolvedStyle.textDecoration = value;\n } else {\n resolvedStyle.textDecorationLine = value;\n }\n } else if (prop === 'transform' || prop === 'transformMatrix') {\n resolvedStyle.transform = createTransformValue(style);\n } else if (prop === 'writingDirection') {\n resolvedStyle.direction = value;\n } else {\n (function () {\n var value = normalizeValueWithProperty(style[prop], prop);\n var longFormProperties = STYLE_SHORT_FORM_EXPANSIONS[prop];\n\n if (isInline && prop === 'margin') {\n if (style.marginHorizontal == null) {\n resolvedStyle.marginLeft = value;\n resolvedStyle.marginRight = value;\n }\n\n if (style.marginVertical == null) {\n resolvedStyle.marginTop = value;\n resolvedStyle.marginBottom = value;\n }\n } else if (isInline && prop === 'padding') {\n if (style.paddingHorizontal == null) {\n resolvedStyle.paddingLeft = value;\n resolvedStyle.paddingRight = value;\n }\n\n if (style.paddingVertical == null) {\n resolvedStyle.paddingTop = value;\n resolvedStyle.paddingBottom = value;\n }\n } else if (longFormProperties) {\n longFormProperties.forEach((longForm, i) => {\n // The value of any longform property in the original styles takes\n // precedence over the shortform's value.\n if (style[longForm] == null) {\n resolvedStyle[longForm] = value;\n }\n });\n } else {\n resolvedStyle[prop] = Array.isArray(value) ? value.join(',') : value;\n }\n })();\n }\n }\n\n return resolvedStyle;\n};\n\nexport default createReactDOMStyle;","/* eslint-disable */\n\n/**\n * JS Implementation of MurmurHash2\n *\n * @author Gary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n *\n * \n */\nfunction murmurhash2_32_gc(str, seed) {\n var l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return h >>> 0;\n}\n\nvar hash = str => murmurhash2_32_gc(str, 1).toString(36);\n\nexport default hash;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\n\nfunction hyphenateStyleName(name) {\n if (name in cache) {\n return cache[name];\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\n\nexport default hyphenateStyleName;","import backgroundClip from 'inline-style-prefixer/lib/plugins/backgroundClip';\nimport crossFade from 'inline-style-prefixer/lib/plugins/crossFade';\nimport cursor from 'inline-style-prefixer/lib/plugins/cursor';\nimport filter from 'inline-style-prefixer/lib/plugins/filter';\nimport imageSet from 'inline-style-prefixer/lib/plugins/imageSet';\nimport logical from 'inline-style-prefixer/lib/plugins/logical';\nimport position from 'inline-style-prefixer/lib/plugins/position';\nimport sizing from 'inline-style-prefixer/lib/plugins/sizing';\nimport transition from 'inline-style-prefixer/lib/plugins/transition';\nvar w = ['Webkit'];\nvar m = ['Moz'];\nvar wm = ['Webkit', 'Moz'];\nvar wms = ['Webkit', 'ms'];\nvar wmms = ['Webkit', 'Moz', 'ms'];\nexport default {\n plugins: [backgroundClip, crossFade, cursor, filter, imageSet, logical, position, sizing, transition],\n prefixMap: {\n appearance: wmms,\n userSelect: wm,\n textEmphasisPosition: wms,\n textEmphasis: wms,\n textEmphasisStyle: wms,\n textEmphasisColor: wms,\n boxDecorationBreak: wms,\n clipPath: w,\n maskImage: wms,\n maskMode: wms,\n maskRepeat: wms,\n maskPosition: wms,\n maskClip: wms,\n maskOrigin: wms,\n maskSize: wms,\n maskComposite: wms,\n mask: wms,\n maskBorderSource: wms,\n maskBorderMode: wms,\n maskBorderSlice: wms,\n maskBorderWidth: wms,\n maskBorderOutset: wms,\n maskBorderRepeat: wms,\n maskBorder: wms,\n maskType: wms,\n textDecorationStyle: w,\n textDecorationSkip: w,\n textDecorationLine: w,\n textDecorationColor: w,\n filter: w,\n breakAfter: w,\n breakBefore: w,\n breakInside: w,\n columnCount: w,\n columnFill: w,\n columnGap: w,\n columnRule: w,\n columnRuleColor: w,\n columnRuleStyle: w,\n columnRuleWidth: w,\n columns: w,\n columnSpan: w,\n columnWidth: w,\n backdropFilter: w,\n hyphens: w,\n flowInto: w,\n flowFrom: w,\n regionFragment: w,\n textOrientation: w,\n tabSize: m,\n fontKerning: w,\n textSizeAdjust: w\n }\n};","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport createPrefixer from 'inline-style-prefixer/lib/createPrefixer';\nimport staticData from './static';\nvar prefixAll = createPrefixer(staticData);\nexport default prefixAll;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"animationKeyframes\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport createReactDOMStyle from './createReactDOMStyle';\nimport hash from './hash';\nimport hyphenateStyleName from './hyphenateStyleName';\nimport normalizeValueWithProperty from './normalizeValueWithProperty';\nimport prefixStyles from '../../../modules/prefixStyles';\nvar cache = new Map();\nvar emptyObject = {};\nvar classicGroup = 1;\nvar atomicGroup = 2.2;\nvar customGroup = {\n borderColor: 2,\n borderRadius: 2,\n borderStyle: 2,\n borderWidth: 2,\n display: 2,\n flex: 2,\n margin: 2,\n overflow: 2,\n overscrollBehavior: 2,\n padding: 2,\n marginHorizontal: 2.1,\n marginVertical: 2.1,\n paddingHorizontal: 2.1,\n paddingVertical: 2.1\n};\nvar borderTopLeftRadius = 'borderTopLeftRadius';\nvar borderTopRightRadius = 'borderTopRightRadius';\nvar borderBottomLeftRadius = 'borderBottomLeftRadius';\nvar borderBottomRightRadius = 'borderBottomRightRadius';\nvar borderLeftColor = 'borderLeftColor';\nvar borderLeftStyle = 'borderLeftStyle';\nvar borderLeftWidth = 'borderLeftWidth';\nvar borderRightColor = 'borderRightColor';\nvar borderRightStyle = 'borderRightStyle';\nvar borderRightWidth = 'borderRightWidth';\nvar right = 'right';\nvar marginLeft = 'marginLeft';\nvar marginRight = 'marginRight';\nvar paddingLeft = 'paddingLeft';\nvar paddingRight = 'paddingRight';\nvar left = 'left'; // Map of LTR property names to their BiDi equivalent.\n\nvar PROPERTIES_FLIP = {\n [borderTopLeftRadius]: borderTopRightRadius,\n [borderTopRightRadius]: borderTopLeftRadius,\n [borderBottomLeftRadius]: borderBottomRightRadius,\n [borderBottomRightRadius]: borderBottomLeftRadius,\n [borderLeftColor]: borderRightColor,\n [borderLeftStyle]: borderRightStyle,\n [borderLeftWidth]: borderRightWidth,\n [borderRightColor]: borderLeftColor,\n [borderRightStyle]: borderLeftStyle,\n [borderRightWidth]: borderLeftWidth,\n [left]: right,\n [marginLeft]: marginRight,\n [marginRight]: marginLeft,\n [paddingLeft]: paddingRight,\n [paddingRight]: paddingLeft,\n [right]: left\n}; // Map of I18N property names to their LTR equivalent.\n\nvar PROPERTIES_I18N = {\n borderTopStartRadius: borderTopLeftRadius,\n borderTopEndRadius: borderTopRightRadius,\n borderBottomStartRadius: borderBottomLeftRadius,\n borderBottomEndRadius: borderBottomRightRadius,\n borderStartColor: borderLeftColor,\n borderStartStyle: borderLeftStyle,\n borderStartWidth: borderLeftWidth,\n borderEndColor: borderRightColor,\n borderEndStyle: borderRightStyle,\n borderEndWidth: borderRightWidth,\n end: right,\n marginStart: marginLeft,\n marginEnd: marginRight,\n paddingStart: paddingLeft,\n paddingEnd: paddingRight,\n start: left\n};\nvar PROPERTIES_VALUE = ['clear', 'float', 'textAlign'];\nexport function atomic(style) {\n var compiledStyle = {\n $$css: true\n };\n var compiledRules = [];\n\n function atomicCompile(prop, value) {\n var valueString = stringifyValueWithProperty(value, prop);\n var cacheKey = prop + valueString;\n var cachedResult = cache.get(cacheKey);\n var identifier;\n\n if (cachedResult != null) {\n identifier = cachedResult[0];\n compiledRules.push(cachedResult[1]);\n } else {\n identifier = createIdentifier('r', prop, value);\n var order = customGroup[prop] || atomicGroup;\n var rules = createAtomicRules(identifier, prop, value);\n var orderedRules = [rules, order];\n compiledRules.push(orderedRules);\n cache.set(cacheKey, [identifier, orderedRules]);\n }\n\n return identifier;\n }\n\n Object.keys(style).sort().forEach(prop => {\n var value = style[prop];\n\n if (value != null) {\n var localizeableValue; // BiDi flip values\n\n if (PROPERTIES_VALUE.indexOf(prop) > -1) {\n var _left = atomicCompile(prop, 'left');\n\n var _right = atomicCompile(prop, 'right');\n\n if (value === 'start') {\n localizeableValue = [_left, _right];\n } else if (value === 'end') {\n localizeableValue = [_right, _left];\n }\n } // BiDi flip properties\n\n\n var propPolyfill = PROPERTIES_I18N[prop];\n\n if (propPolyfill != null) {\n var ltr = atomicCompile(propPolyfill, value);\n var rtl = atomicCompile(PROPERTIES_FLIP[propPolyfill], value);\n localizeableValue = [ltr, rtl];\n } // BiDi flip transitionProperty value\n\n\n if (prop === 'transitionProperty') {\n var values = Array.isArray(value) ? value : [value];\n var polyfillIndices = [];\n\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n\n if (typeof val === 'string' && PROPERTIES_I18N[val] != null) {\n polyfillIndices.push(i);\n }\n }\n\n if (polyfillIndices.length > 0) {\n var ltrPolyfillValues = [...values];\n var rtlPolyfillValues = [...values];\n polyfillIndices.forEach(i => {\n var ltrVal = ltrPolyfillValues[i];\n\n if (typeof ltrVal === 'string') {\n var ltrPolyfill = PROPERTIES_I18N[ltrVal];\n var rtlPolyfill = PROPERTIES_FLIP[ltrPolyfill];\n ltrPolyfillValues[i] = ltrPolyfill;\n rtlPolyfillValues[i] = rtlPolyfill;\n\n var _ltr = atomicCompile(prop, ltrPolyfillValues);\n\n var _rtl = atomicCompile(prop, rtlPolyfillValues);\n\n localizeableValue = [_ltr, _rtl];\n }\n });\n }\n }\n\n if (localizeableValue == null) {\n localizeableValue = atomicCompile(prop, value);\n } else {\n compiledStyle['$$css$localize'] = true;\n }\n\n compiledStyle[prop] = localizeableValue;\n }\n });\n return [compiledStyle, compiledRules];\n}\n/**\n * Compile simple style object to classic CSS rules.\n * No support for 'placeholderTextColor', 'scrollbarWidth', or 'pointerEvents'.\n */\n\nexport function classic(style, name) {\n var compiledStyle = {\n $$css: true\n };\n var compiledRules = [];\n\n var animationKeyframes = style.animationKeyframes,\n rest = _objectWithoutPropertiesLoose(style, _excluded);\n\n var identifier = createIdentifier('css', name, style);\n var selector = \".\" + identifier;\n var animationName;\n\n if (animationKeyframes != null) {\n var _processKeyframesValu = processKeyframesValue(animationKeyframes),\n animationNames = _processKeyframesValu[0],\n keyframesRules = _processKeyframesValu[1];\n\n animationName = animationNames.join(',');\n compiledRules.push(...keyframesRules);\n }\n\n var block = createDeclarationBlock(_objectSpread(_objectSpread({}, rest), {}, {\n animationName\n }));\n compiledRules.push(\"\" + selector + block);\n compiledStyle[identifier] = identifier;\n return [compiledStyle, [[compiledRules, classicGroup]]];\n}\n/**\n * Compile simple style object to inline DOM styles.\n * No support for 'animationKeyframes', 'placeholderTextColor', 'scrollbarWidth', or 'pointerEvents'.\n */\n\nexport function inline(originalStyle, isRTL) {\n var style = originalStyle || emptyObject;\n var frozenProps = {};\n var nextStyle = {};\n\n for (var originalProp in style) {\n var originalValue = style[originalProp];\n var prop = originalProp;\n var value = originalValue;\n\n if (!Object.prototype.hasOwnProperty.call(style, originalProp) || originalValue == null) {\n continue;\n } // BiDi flip values\n\n\n if (PROPERTIES_VALUE.indexOf(originalProp) > -1) {\n if (originalValue === 'start') {\n value = isRTL ? 'right' : 'left';\n } else if (originalValue === 'end') {\n value = isRTL ? 'left' : 'right';\n }\n } // BiDi flip properties\n\n\n var propPolyfill = PROPERTIES_I18N[originalProp];\n\n if (propPolyfill != null) {\n prop = isRTL ? PROPERTIES_FLIP[propPolyfill] : propPolyfill;\n } // BiDi flip transitionProperty value\n\n\n if (originalProp === 'transitionProperty') {\n (function () {\n // $FlowFixMe\n var originalValues = Array.isArray(originalValue) ? originalValue : [originalValue];\n originalValues.forEach((val, i) => {\n if (typeof val === 'string') {\n var valuePolyfill = PROPERTIES_I18N[val];\n\n if (valuePolyfill != null) {\n originalValues[i] = isRTL ? PROPERTIES_FLIP[valuePolyfill] : valuePolyfill;\n }\n }\n });\n })();\n } // Create finalized style\n\n\n if (!frozenProps[prop]) {\n nextStyle[prop] = value;\n }\n\n if (PROPERTIES_I18N.hasOwnProperty(originalProp)) {\n frozenProps[prop] = true;\n }\n }\n\n return createReactDOMStyle(nextStyle, true);\n}\n/**\n * Create a value string that normalizes different input values with a common\n * output.\n */\n\nexport function stringifyValueWithProperty(value, property) {\n // e.g., 0 => '0px', 'black' => 'rgba(0,0,0,1)'\n var normalizedValue = normalizeValueWithProperty(value, property);\n return typeof normalizedValue !== 'string' ? JSON.stringify(normalizedValue || '') : normalizedValue;\n}\n/**\n * Create the Atomic CSS rules needed for a given StyleSheet rule.\n * Translates StyleSheet declarations to CSS.\n */\n\nfunction createAtomicRules(identifier, property, value) {\n var rules = [];\n var selector = \".\" + identifier; // Handle non-standard properties and object values that require multiple\n // CSS rules to be created.\n\n switch (property) {\n case 'animationKeyframes':\n {\n var _processKeyframesValu2 = processKeyframesValue(value),\n animationNames = _processKeyframesValu2[0],\n keyframesRules = _processKeyframesValu2[1];\n\n var block = createDeclarationBlock({\n animationName: animationNames.join(',')\n });\n rules.push(\"\" + selector + block, ...keyframesRules);\n break;\n }\n // Equivalent to using '::placeholder'\n\n case 'placeholderTextColor':\n {\n var _block = createDeclarationBlock({\n color: value,\n opacity: 1\n });\n\n rules.push(selector + \"::-webkit-input-placeholder\" + _block, selector + \"::-moz-placeholder\" + _block, selector + \":-ms-input-placeholder\" + _block, selector + \"::placeholder\" + _block);\n break;\n }\n // Polyfill for additional 'pointer-events' values\n // See d13f78622b233a0afc0c7a200c0a0792c8ca9e58\n\n case 'pointerEvents':\n {\n var finalValue = value;\n\n if (value === 'auto' || value === 'box-only') {\n finalValue = 'auto!important';\n\n if (value === 'box-only') {\n var _block3 = createDeclarationBlock({\n pointerEvents: 'none'\n });\n\n rules.push(selector + \">*\" + _block3);\n }\n } else if (value === 'none' || value === 'box-none') {\n finalValue = 'none!important';\n\n if (value === 'box-none') {\n var _block4 = createDeclarationBlock({\n pointerEvents: 'auto'\n });\n\n rules.push(selector + \">*\" + _block4);\n }\n }\n\n var _block2 = createDeclarationBlock({\n pointerEvents: finalValue\n });\n\n rules.push(\"\" + selector + _block2);\n break;\n }\n // Polyfill for draft spec\n // https://drafts.csswg.org/css-scrollbars-1/\n\n case 'scrollbarWidth':\n {\n if (value === 'none') {\n rules.push(selector + \"::-webkit-scrollbar{display:none}\");\n }\n\n var _block5 = createDeclarationBlock({\n scrollbarWidth: value\n });\n\n rules.push(\"\" + selector + _block5);\n break;\n }\n\n default:\n {\n var _block6 = createDeclarationBlock({\n [property]: value\n });\n\n rules.push(\"\" + selector + _block6);\n break;\n }\n }\n\n return rules;\n}\n/**\n * Creates a CSS declaration block from a StyleSheet object.\n */\n\n\nfunction createDeclarationBlock(style) {\n var domStyle = prefixStyles(createReactDOMStyle(style));\n var declarationsString = Object.keys(domStyle).map(property => {\n var value = domStyle[property];\n var prop = hyphenateStyleName(property); // The prefixer may return an array of values:\n // { display: [ '-webkit-flex', 'flex' ] }\n // to represent \"fallback\" declarations\n // { display: -webkit-flex; display: flex; }\n\n if (Array.isArray(value)) {\n return value.map(v => prop + \":\" + v).join(';');\n } else {\n return prop + \":\" + value;\n }\n }) // Once properties are hyphenated, this will put the vendor\n // prefixed and short-form properties first in the list.\n .sort().join(';');\n return \"{\" + declarationsString + \";}\";\n}\n/**\n * An identifier is associated with a unique set of styles.\n */\n\n\nfunction createIdentifier(prefix, name, value) {\n var hashedString = hash(name + stringifyValueWithProperty(value, name));\n return process.env.NODE_ENV !== 'production' ? prefix + \"-\" + name + \"-\" + hashedString : prefix + \"-\" + hashedString;\n}\n/**\n * Create individual CSS keyframes rules.\n */\n\n\nfunction createKeyframes(keyframes) {\n var prefixes = ['-webkit-', ''];\n var identifier = createIdentifier('r', 'animation', keyframes);\n var steps = '{' + Object.keys(keyframes).map(stepName => {\n var rule = keyframes[stepName];\n var block = createDeclarationBlock(rule);\n return \"\" + stepName + block;\n }).join('') + '}';\n var rules = prefixes.map(prefix => {\n return \"@\" + prefix + \"keyframes \" + identifier + steps;\n });\n return [identifier, rules];\n}\n/**\n * Create CSS keyframes rules and names from a StyleSheet keyframes object.\n */\n\n\nfunction processKeyframesValue(keyframesValue) {\n if (typeof keyframesValue === 'number') {\n throw new Error(\"Invalid CSS keyframes type: \" + typeof keyframesValue);\n }\n\n var animationNames = [];\n var rules = [];\n var value = Array.isArray(keyframesValue) ? keyframesValue : [keyframesValue];\n value.forEach(keyframes => {\n if (typeof keyframes === 'string') {\n // Support external animation libraries (identifiers only)\n animationNames.push(keyframes);\n } else {\n // Create rules for each of the keyframes\n var _createKeyframes = createKeyframes(keyframes),\n identifier = _createKeyframes[0],\n keyframesRules = _createKeyframes[1];\n\n animationNames.push(identifier);\n rules.push(...keyframesRules);\n }\n });\n return [animationNames, rules];\n}","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport { atomic, classic, inline } from './compiler';\nimport { createSheet } from './dom';\nimport { localizeStyle } from 'styleq/transform-localize-style';\nimport { preprocess } from './preprocess';\nimport { styleq } from 'styleq';\nimport { validate } from './validate';\nimport canUseDOM from '../../modules/canUseDom';\nvar staticStyleMap = new WeakMap();\nvar sheet = createSheet();\n\nfunction customStyleq(styles, isRTL) {\n return styleq.factory({\n transform(style) {\n var compiledStyle = staticStyleMap.get(style);\n\n if (compiledStyle != null) {\n return localizeStyle(compiledStyle, isRTL);\n }\n\n return style;\n }\n\n })(styles);\n}\n\nfunction insertRules(compiledOrderedRules) {\n compiledOrderedRules.forEach(_ref => {\n var rules = _ref[0],\n order = _ref[1];\n\n if (sheet != null) {\n rules.forEach(rule => {\n sheet.insert(rule, order);\n });\n }\n });\n}\n\nfunction compileAndInsertAtomic(style) {\n var _atomic = atomic(preprocess(style)),\n compiledStyle = _atomic[0],\n compiledOrderedRules = _atomic[1];\n\n insertRules(compiledOrderedRules);\n return compiledStyle;\n}\n\nfunction compileAndInsertReset(style, key) {\n var _classic = classic(style, key),\n compiledStyle = _classic[0],\n compiledOrderedRules = _classic[1];\n\n insertRules(compiledOrderedRules);\n return compiledStyle;\n}\n/* ----- API ----- */\n\n\nvar absoluteFillObject = {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n};\nvar absoluteFill = create({\n x: _objectSpread({}, absoluteFillObject)\n}).x;\n/**\n * create\n */\n\nfunction create(styles) {\n Object.keys(styles).forEach(key => {\n var styleObj = styles[key]; // Only compile at runtime if the style is not already compiled\n\n if (styleObj != null && styleObj.$$css !== true) {\n var compiledStyles;\n\n if (key.indexOf('$raw') > -1) {\n compiledStyles = compileAndInsertReset(styleObj, key.split('$raw')[0]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n validate(styleObj);\n styles[key] = Object.freeze(styleObj);\n }\n\n compiledStyles = compileAndInsertAtomic(styleObj);\n }\n\n staticStyleMap.set(styleObj, compiledStyles);\n }\n });\n return styles;\n}\n/**\n * compose\n */\n\n\nfunction compose(style1, style2) {\n if (process.env.NODE_ENV !== 'production') {\n /* eslint-disable prefer-rest-params */\n var len = arguments.length;\n\n if (len > 2) {\n var readableStyles = [...arguments].map(a => flatten(a));\n throw new Error(\"StyleSheet.compose() only accepts 2 arguments, received \" + len + \": \" + JSON.stringify(readableStyles));\n }\n /* eslint-enable prefer-rest-params */\n\n }\n\n if (style1 && style2) {\n return [style1, style2];\n } else {\n return style1 || style2;\n }\n}\n/**\n * flatten\n */\n\n\nfunction flatten() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var flatArray = styles.flat(Infinity);\n var result = {};\n\n for (var i = 0; i < flatArray.length; i++) {\n var style = flatArray[i];\n\n if (style != null && typeof style === 'object') {\n // $FlowFixMe\n Object.assign(result, style);\n }\n }\n\n return result;\n}\n/**\n * getSheet\n */\n\n\nfunction getSheet() {\n return {\n id: sheet.id,\n textContent: sheet.getTextContent()\n };\n}\n/**\n * resolve\n */\n\n\nfunction StyleSheet(styles, options) {\n var isRTL = options != null && options.writingDirection === 'rtl';\n var styleProps = customStyleq(styles, isRTL);\n\n if (Array.isArray(styleProps) && styleProps[1] != null) {\n styleProps[1] = inline(preprocess(styleProps[1]), isRTL);\n }\n\n return styleProps;\n}\n\nStyleSheet.absoluteFill = absoluteFill;\nStyleSheet.absoluteFillObject = absoluteFillObject;\nStyleSheet.create = create;\nStyleSheet.compose = compose;\nStyleSheet.flatten = flatten;\nStyleSheet.getSheet = getSheet; // `hairlineWidth` is not implemented using screen density as browsers may\n// round sub-pixel values down to `0`, causing the line not to be rendered.\n\nStyleSheet.hairlineWidth = 1;\n\nif (canUseDOM && window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n window.__REACT_DEVTOOLS_GLOBAL_HOOK__.resolveRNStyle = StyleSheet.flatten;\n}\n\nvar stylesheet = StyleSheet;\nexport default stylesheet;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport normalizeColor from './compiler/normalizeColor';\nimport normalizeValueWithProperty from './compiler/normalizeValueWithProperty';\nvar emptyObject = {};\n/**\n * Shadows\n */\n\nvar defaultOffset = {\n height: 0,\n width: 0\n};\nexport var createBoxShadowValue = style => {\n var shadowColor = style.shadowColor,\n shadowOffset = style.shadowOffset,\n shadowOpacity = style.shadowOpacity,\n shadowRadius = style.shadowRadius;\n\n var _ref = shadowOffset || defaultOffset,\n height = _ref.height,\n width = _ref.width;\n\n var offsetX = normalizeValueWithProperty(width);\n var offsetY = normalizeValueWithProperty(height);\n var blurRadius = normalizeValueWithProperty(shadowRadius || 0);\n var color = normalizeColor(shadowColor || 'black', shadowOpacity);\n\n if (color != null && offsetX != null && offsetY != null && blurRadius != null) {\n return offsetX + \" \" + offsetY + \" \" + blurRadius + \" \" + color;\n }\n};\nexport var createTextShadowValue = style => {\n var textShadowColor = style.textShadowColor,\n textShadowOffset = style.textShadowOffset,\n textShadowRadius = style.textShadowRadius;\n\n var _ref2 = textShadowOffset || defaultOffset,\n height = _ref2.height,\n width = _ref2.width;\n\n var radius = textShadowRadius || 0;\n var offsetX = normalizeValueWithProperty(width);\n var offsetY = normalizeValueWithProperty(height);\n var blurRadius = normalizeValueWithProperty(radius);\n var color = normalizeValueWithProperty(textShadowColor, 'textShadowColor');\n\n if (color && (height !== 0 || width !== 0 || radius !== 0) && offsetX != null && offsetY != null && blurRadius != null) {\n return offsetX + \" \" + offsetY + \" \" + blurRadius + \" \" + color;\n }\n};\n/**\n * Preprocess styles\n */\n\nexport var preprocess = originalStyle => {\n var style = originalStyle || emptyObject;\n var nextStyle = {};\n\n for (var originalProp in style) {\n var originalValue = style[originalProp];\n var prop = originalProp;\n var value = originalValue;\n\n if (!Object.prototype.hasOwnProperty.call(style, originalProp) || originalValue == null) {\n continue;\n } // Convert shadow styles\n\n\n if (prop === 'shadowColor' || prop === 'shadowOffset' || prop === 'shadowOpacity' || prop === 'shadowRadius') {\n var boxShadowValue = createBoxShadowValue(style);\n\n if (boxShadowValue != null && nextStyle.boxShadow == null) {\n var boxShadow = style.boxShadow;\n prop = 'boxShadow';\n value = boxShadow ? boxShadow + \", \" + boxShadowValue : boxShadowValue;\n } else {\n continue;\n }\n } // Convert text shadow styles\n\n\n if (prop === 'textShadowColor' || prop === 'textShadowOffset' || prop === 'textShadowRadius') {\n var textShadowValue = createTextShadowValue(style);\n\n if (textShadowValue != null && nextStyle.textShadow == null) {\n var textShadow = style.textShadow;\n prop = 'textShadow';\n value = textShadow ? textShadow + \", \" + textShadowValue : textShadowValue;\n } else {\n continue;\n }\n }\n\n nextStyle[prop] = value;\n } // $FlowIgnore\n\n\n return nextStyle;\n};\nexport default preprocess;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar CSS_UNIT_RE = /^[+-]?\\d*(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?(%|\\w*)/;\n\nvar getUnit = str => str.match(CSS_UNIT_RE)[1];\n\nvar isNumeric = n => {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nvar multiplyStyleLengthValue = (value, multiple) => {\n if (typeof value === 'string') {\n var number = parseFloat(value) * multiple;\n var unit = getUnit(value);\n return \"\" + number + unit;\n } else if (isNumeric(value)) {\n return value * multiple;\n }\n};\n\nexport default multiplyStyleLengthValue;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"accessibilityLabel\", \"activeThumbColor\", \"activeTrackColor\", \"disabled\", \"onValueChange\", \"style\", \"thumbColor\", \"trackColor\", \"value\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport multiplyStyleLengthValue from '../../modules/multiplyStyleLengthValue';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nvar emptyObject = {};\nvar thumbDefaultBoxShadow = '0px 1px 3px rgba(0,0,0,0.5)';\nvar thumbFocusedBoxShadow = thumbDefaultBoxShadow + \", 0 0 0 10px rgba(0,0,0,0.1)\";\nvar defaultActiveTrackColor = '#A3D3CF';\nvar defaultTrackColor = '#939393';\nvar defaultDisabledTrackColor = '#D5D5D5';\nvar defaultActiveThumbColor = '#009688';\nvar defaultThumbColor = '#FAFAFA';\nvar defaultDisabledThumbColor = '#BDBDBD';\nvar Switch = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var accessibilityLabel = props.accessibilityLabel,\n activeThumbColor = props.activeThumbColor,\n activeTrackColor = props.activeTrackColor,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n onValueChange = props.onValueChange,\n _props$style = props.style,\n style = _props$style === void 0 ? emptyObject : _props$style,\n thumbColor = props.thumbColor,\n trackColor = props.trackColor,\n _props$value = props.value,\n value = _props$value === void 0 ? false : _props$value,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n var thumbRef = React.useRef(null);\n\n function handleChange(event) {\n if (onValueChange != null) {\n onValueChange(event.nativeEvent.target.checked);\n }\n }\n\n function handleFocusState(event) {\n var isFocused = event.nativeEvent.type === 'focus';\n var boxShadow = isFocused ? thumbFocusedBoxShadow : thumbDefaultBoxShadow;\n\n if (thumbRef.current != null) {\n thumbRef.current.style.boxShadow = boxShadow;\n }\n }\n\n var _StyleSheet$flatten = StyleSheet.flatten(style),\n styleHeight = _StyleSheet$flatten.height,\n styleWidth = _StyleSheet$flatten.width;\n\n var height = styleHeight || '20px';\n var minWidth = multiplyStyleLengthValue(height, 2);\n var width = styleWidth > minWidth ? styleWidth : minWidth;\n var trackBorderRadius = multiplyStyleLengthValue(height, 0.5);\n\n var trackCurrentColor = function () {\n if (value === true) {\n if (trackColor != null && typeof trackColor === 'object') {\n return trackColor.true;\n } else {\n return activeTrackColor !== null && activeTrackColor !== void 0 ? activeTrackColor : defaultActiveTrackColor;\n }\n } else {\n if (trackColor != null && typeof trackColor === 'object') {\n return trackColor.false;\n } else {\n return trackColor !== null && trackColor !== void 0 ? trackColor : defaultTrackColor;\n }\n }\n }();\n\n var thumbCurrentColor = value ? activeThumbColor !== null && activeThumbColor !== void 0 ? activeThumbColor : defaultActiveThumbColor : thumbColor !== null && thumbColor !== void 0 ? thumbColor : defaultThumbColor;\n var thumbHeight = height;\n var thumbWidth = thumbHeight;\n var rootStyle = [styles.root, style, disabled && styles.cursorDefault, {\n height,\n width\n }];\n\n var disabledTrackColor = function () {\n if (value === true) {\n if (typeof activeTrackColor === 'string' && activeTrackColor != null || typeof trackColor === 'object' && trackColor != null && trackColor.true) {\n return trackCurrentColor;\n } else {\n return defaultDisabledTrackColor;\n }\n } else {\n if (typeof trackColor === 'string' && trackColor != null || typeof trackColor === 'object' && trackColor != null && trackColor.false) {\n return trackCurrentColor;\n } else {\n return defaultDisabledTrackColor;\n }\n }\n }();\n\n var disabledThumbColor = function () {\n if (value === true) {\n if (activeThumbColor == null) {\n return defaultDisabledThumbColor;\n } else {\n return thumbCurrentColor;\n }\n } else {\n if (thumbColor == null) {\n return defaultDisabledThumbColor;\n } else {\n return thumbCurrentColor;\n }\n }\n }();\n\n var trackStyle = [styles.track, {\n backgroundColor: disabled ? disabledTrackColor : trackCurrentColor,\n borderRadius: trackBorderRadius\n }];\n var thumbStyle = [styles.thumb, value && styles.thumbActive, {\n backgroundColor: disabled ? disabledThumbColor : thumbCurrentColor,\n height: thumbHeight,\n marginStart: value ? multiplyStyleLengthValue(thumbWidth, -1) : 0,\n width: thumbWidth\n }];\n var nativeControl = createElement('input', {\n accessibilityLabel,\n checked: value,\n disabled: disabled,\n onBlur: handleFocusState,\n onChange: handleChange,\n onFocus: handleFocusState,\n ref: forwardedRef,\n style: [styles.nativeControl, styles.cursorInherit],\n type: 'checkbox',\n role: 'switch'\n });\n return /*#__PURE__*/React.createElement(View, _extends({}, other, {\n style: rootStyle\n }), /*#__PURE__*/React.createElement(View, {\n style: trackStyle\n }), /*#__PURE__*/React.createElement(View, {\n ref: thumbRef,\n style: thumbStyle\n }), nativeControl);\n});\nSwitch.displayName = 'Switch';\nvar styles = StyleSheet.create({\n root: {\n cursor: 'pointer',\n userSelect: 'none'\n },\n cursorDefault: {\n cursor: 'default'\n },\n cursorInherit: {\n cursor: 'inherit'\n },\n track: _objectSpread(_objectSpread({\n forcedColorAdjust: 'none'\n }, StyleSheet.absoluteFillObject), {}, {\n height: '70%',\n margin: 'auto',\n transitionDuration: '0.1s',\n width: '100%'\n }),\n thumb: {\n forcedColorAdjust: 'none',\n alignSelf: 'flex-start',\n borderRadius: '100%',\n boxShadow: thumbDefaultBoxShadow,\n start: '0%',\n transform: [{\n translateZ: 0\n }],\n transitionDuration: '0.1s'\n },\n thumbActive: {\n start: '100%'\n },\n nativeControl: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n height: '100%',\n margin: 0,\n appearance: 'none',\n padding: 0,\n width: '100%'\n })\n});\nexport default Switch;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport { createContext } from 'react';\nvar TextAncestorContext = /*#__PURE__*/createContext(false);\nexport default TextAncestorContext;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"hrefAttrs\", \"numberOfLines\", \"onClick\", \"onLayout\", \"onPress\", \"onMoveShouldSetResponder\", \"onMoveShouldSetResponderCapture\", \"onResponderEnd\", \"onResponderGrant\", \"onResponderMove\", \"onResponderReject\", \"onResponderRelease\", \"onResponderStart\", \"onResponderTerminate\", \"onResponderTerminationRequest\", \"onScrollShouldSetResponder\", \"onScrollShouldSetResponderCapture\", \"onSelectionChangeShouldSetResponder\", \"onSelectionChangeShouldSetResponderCapture\", \"onStartShouldSetResponder\", \"onStartShouldSetResponderCapture\", \"selectable\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport * as forwardedProps from '../../modules/forwardedProps';\nimport pick from '../../modules/pick';\nimport useElementLayout from '../../modules/useElementLayout';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport useResponderEvents from '../../modules/useResponderEvents';\nimport StyleSheet from '../StyleSheet';\nimport TextAncestorContext from './TextAncestorContext';\nimport { useLocaleContext, getLocaleDirection } from '../../modules/useLocale';\nvar forwardPropsList = Object.assign({}, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.focusProps, forwardedProps.keyboardProps, forwardedProps.mouseProps, forwardedProps.touchProps, forwardedProps.styleProps, {\n href: true,\n lang: true,\n pointerEvents: true\n});\n\nvar pickProps = props => pick(props, forwardPropsList);\n\nvar Text = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var hrefAttrs = props.hrefAttrs,\n numberOfLines = props.numberOfLines,\n onClick = props.onClick,\n onLayout = props.onLayout,\n onPress = props.onPress,\n onMoveShouldSetResponder = props.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = props.onMoveShouldSetResponderCapture,\n onResponderEnd = props.onResponderEnd,\n onResponderGrant = props.onResponderGrant,\n onResponderMove = props.onResponderMove,\n onResponderReject = props.onResponderReject,\n onResponderRelease = props.onResponderRelease,\n onResponderStart = props.onResponderStart,\n onResponderTerminate = props.onResponderTerminate,\n onResponderTerminationRequest = props.onResponderTerminationRequest,\n onScrollShouldSetResponder = props.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = props.onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder = props.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = props.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = props.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = props.onStartShouldSetResponderCapture,\n selectable = props.selectable,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var hasTextAncestor = React.useContext(TextAncestorContext);\n var hostRef = React.useRef(null);\n\n var _useLocaleContext = useLocaleContext(),\n contextDirection = _useLocaleContext.direction;\n\n useElementLayout(hostRef, onLayout);\n useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture\n });\n var handleClick = React.useCallback(e => {\n if (onClick != null) {\n onClick(e);\n } else if (onPress != null) {\n e.stopPropagation();\n onPress(e);\n }\n }, [onClick, onPress]);\n var component = hasTextAncestor ? 'span' : 'div';\n var langDirection = props.lang != null ? getLocaleDirection(props.lang) : null;\n var componentDirection = props.dir || langDirection;\n var writingDirection = componentDirection || contextDirection;\n var supportedProps = pickProps(rest);\n supportedProps.dir = componentDirection; // 'auto' by default allows browsers to infer writing direction (root elements only)\n\n if (!hasTextAncestor) {\n supportedProps.dir = componentDirection != null ? componentDirection : 'auto';\n }\n\n if (onClick || onPress) {\n supportedProps.onClick = handleClick;\n }\n\n supportedProps.style = [numberOfLines != null && numberOfLines > 1 && {\n WebkitLineClamp: numberOfLines\n }, hasTextAncestor === true ? styles.textHasAncestor$raw : styles.text$raw, numberOfLines === 1 && styles.textOneLine, numberOfLines != null && numberOfLines > 1 && styles.textMultiLine, props.style, selectable === true && styles.selectable, selectable === false && styles.notSelectable, onPress && styles.pressable];\n\n if (props.href != null) {\n component = 'a';\n\n if (hrefAttrs != null) {\n var download = hrefAttrs.download,\n rel = hrefAttrs.rel,\n target = hrefAttrs.target;\n\n if (download != null) {\n supportedProps.download = download;\n }\n\n if (rel != null) {\n supportedProps.rel = rel;\n }\n\n if (typeof target === 'string') {\n supportedProps.target = target.charAt(0) !== '_' ? '_' + target : target;\n }\n }\n }\n\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);\n supportedProps.ref = setRef;\n var element = createElement(component, supportedProps, {\n writingDirection\n });\n return hasTextAncestor ? element : /*#__PURE__*/React.createElement(TextAncestorContext.Provider, {\n value: true\n }, element);\n});\nText.displayName = 'Text';\nvar textStyle = {\n backgroundColor: 'transparent',\n border: '0 solid black',\n boxSizing: 'border-box',\n color: 'black',\n display: 'inline',\n font: '14px System',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n textAlign: 'inherit',\n textDecoration: 'none',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word'\n};\nvar styles = StyleSheet.create({\n text$raw: textStyle,\n textHasAncestor$raw: _objectSpread(_objectSpread({}, textStyle), {}, {\n color: 'inherit',\n font: 'inherit',\n whiteSpace: 'inherit'\n }),\n textOneLine: {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n wordWrap: 'normal'\n },\n // See #13\n textMultiLine: {\n display: '-webkit-box',\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical'\n },\n notSelectable: {\n userSelect: 'none'\n },\n selectable: {\n userSelect: 'text'\n },\n pressable: {\n cursor: 'pointer'\n }\n});\nexport default Text;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport * as forwardedProps from '../../modules/forwardedProps';\nimport pick from '../../modules/pick';\nimport useElementLayout from '../../modules/useElementLayout';\nimport useLayoutEffect from '../../modules/useLayoutEffect';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport useResponderEvents from '../../modules/useResponderEvents';\nimport { getLocaleDirection, useLocaleContext } from '../../modules/useLocale';\nimport StyleSheet from '../StyleSheet';\nimport TextInputState from '../../modules/TextInputState';\n/**\n * Determines whether a 'selection' prop differs from a node's existing\n * selection state.\n */\n\nvar isSelectionStale = (node, selection) => {\n var selectionEnd = node.selectionEnd,\n selectionStart = node.selectionStart;\n var start = selection.start,\n end = selection.end;\n return start !== selectionStart || end !== selectionEnd;\n};\n/**\n * Certain input types do no support 'selectSelectionRange' and will throw an\n * error.\n */\n\n\nvar setSelection = (node, selection) => {\n if (isSelectionStale(node, selection)) {\n var start = selection.start,\n end = selection.end;\n\n try {\n node.setSelectionRange(start, end || start);\n } catch (e) {}\n }\n};\n\nvar forwardPropsList = Object.assign({}, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.focusProps, forwardedProps.keyboardProps, forwardedProps.mouseProps, forwardedProps.touchProps, forwardedProps.styleProps, {\n autoCapitalize: true,\n autoComplete: true,\n autoCorrect: true,\n autoFocus: true,\n defaultValue: true,\n disabled: true,\n lang: true,\n maxLength: true,\n onChange: true,\n onScroll: true,\n placeholder: true,\n pointerEvents: true,\n readOnly: true,\n rows: true,\n spellCheck: true,\n value: true,\n type: true\n});\n\nvar pickProps = props => pick(props, forwardPropsList); // If an Input Method Editor is processing key input, the 'keyCode' is 229.\n// https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n\n\nfunction isEventComposing(nativeEvent) {\n return nativeEvent.isComposing || nativeEvent.keyCode === 229;\n}\n\nvar focusTimeout = null;\nvar TextInput = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var _props$autoCapitalize = props.autoCapitalize,\n autoCapitalize = _props$autoCapitalize === void 0 ? 'sentences' : _props$autoCapitalize,\n autoComplete = props.autoComplete,\n autoCompleteType = props.autoCompleteType,\n _props$autoCorrect = props.autoCorrect,\n autoCorrect = _props$autoCorrect === void 0 ? true : _props$autoCorrect,\n blurOnSubmit = props.blurOnSubmit,\n clearTextOnFocus = props.clearTextOnFocus,\n dir = props.dir,\n _props$editable = props.editable,\n editable = _props$editable === void 0 ? true : _props$editable,\n _props$keyboardType = props.keyboardType,\n keyboardType = _props$keyboardType === void 0 ? 'default' : _props$keyboardType,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$numberOfLines = props.numberOfLines,\n numberOfLines = _props$numberOfLines === void 0 ? 1 : _props$numberOfLines,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onChangeText = props.onChangeText,\n onContentSizeChange = props.onContentSizeChange,\n onFocus = props.onFocus,\n onKeyPress = props.onKeyPress,\n onLayout = props.onLayout,\n onMoveShouldSetResponder = props.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = props.onMoveShouldSetResponderCapture,\n onResponderEnd = props.onResponderEnd,\n onResponderGrant = props.onResponderGrant,\n onResponderMove = props.onResponderMove,\n onResponderReject = props.onResponderReject,\n onResponderRelease = props.onResponderRelease,\n onResponderStart = props.onResponderStart,\n onResponderTerminate = props.onResponderTerminate,\n onResponderTerminationRequest = props.onResponderTerminationRequest,\n onScrollShouldSetResponder = props.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = props.onScrollShouldSetResponderCapture,\n onSelectionChange = props.onSelectionChange,\n onSelectionChangeShouldSetResponder = props.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = props.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = props.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = props.onStartShouldSetResponderCapture,\n onSubmitEditing = props.onSubmitEditing,\n placeholderTextColor = props.placeholderTextColor,\n returnKeyType = props.returnKeyType,\n _props$secureTextEntr = props.secureTextEntry,\n secureTextEntry = _props$secureTextEntr === void 0 ? false : _props$secureTextEntr,\n selection = props.selection,\n selectTextOnFocus = props.selectTextOnFocus,\n spellCheck = props.spellCheck;\n var type;\n var inputMode;\n\n switch (keyboardType) {\n case 'email-address':\n type = 'email';\n break;\n\n case 'number-pad':\n case 'numeric':\n inputMode = 'numeric';\n break;\n\n case 'decimal-pad':\n inputMode = 'decimal';\n break;\n\n case 'phone-pad':\n type = 'tel';\n break;\n\n case 'search':\n case 'web-search':\n type = 'search';\n break;\n\n case 'url':\n type = 'url';\n break;\n\n default:\n type = 'text';\n }\n\n if (secureTextEntry) {\n type = 'password';\n }\n\n var dimensions = React.useRef({\n height: null,\n width: null\n });\n var hostRef = React.useRef(null);\n var handleContentSizeChange = React.useCallback(hostNode => {\n if (multiline && onContentSizeChange && hostNode != null) {\n var newHeight = hostNode.scrollHeight;\n var newWidth = hostNode.scrollWidth;\n\n if (newHeight !== dimensions.current.height || newWidth !== dimensions.current.width) {\n dimensions.current.height = newHeight;\n dimensions.current.width = newWidth;\n onContentSizeChange({\n nativeEvent: {\n contentSize: {\n height: dimensions.current.height,\n width: dimensions.current.width\n }\n }\n });\n }\n }\n }, [multiline, onContentSizeChange]);\n var imperativeRef = React.useMemo(() => hostNode => {\n // TextInput needs to add more methods to the hostNode in addition to those\n // added by `usePlatformMethods`. This is temporarily until an API like\n // `TextInput.clear(hostRef)` is added to React Native.\n if (hostNode != null) {\n hostNode.clear = function () {\n if (hostNode != null) {\n hostNode.value = '';\n }\n };\n\n hostNode.isFocused = function () {\n return hostNode != null && TextInputState.currentlyFocusedField() === hostNode;\n };\n\n handleContentSizeChange(hostNode);\n }\n }, [handleContentSizeChange]);\n\n function handleBlur(e) {\n TextInputState._currentlyFocusedNode = null;\n\n if (onBlur) {\n e.nativeEvent.text = e.target.value;\n onBlur(e);\n }\n }\n\n function handleChange(e) {\n var hostNode = e.target;\n var text = hostNode.value;\n e.nativeEvent.text = text;\n handleContentSizeChange(hostNode);\n\n if (onChange) {\n onChange(e);\n }\n\n if (onChangeText) {\n onChangeText(text);\n }\n }\n\n function handleFocus(e) {\n var hostNode = e.target;\n\n if (onFocus) {\n e.nativeEvent.text = hostNode.value;\n onFocus(e);\n }\n\n if (hostNode != null) {\n TextInputState._currentlyFocusedNode = hostNode;\n\n if (clearTextOnFocus) {\n hostNode.value = '';\n }\n\n if (selectTextOnFocus) {\n // Safari requires selection to occur in a setTimeout\n if (focusTimeout != null) {\n clearTimeout(focusTimeout);\n }\n\n focusTimeout = setTimeout(() => {\n if (hostNode != null) {\n hostNode.select();\n }\n }, 0);\n }\n }\n }\n\n function handleKeyDown(e) {\n var hostNode = e.target; // Prevent key events bubbling (see #612)\n\n e.stopPropagation();\n var blurOnSubmitDefault = !multiline;\n var shouldBlurOnSubmit = blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit;\n var nativeEvent = e.nativeEvent;\n var isComposing = isEventComposing(nativeEvent);\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (e.key === 'Enter' && !e.shiftKey && // Do not call submit if composition is occuring.\n !isComposing && !e.isDefaultPrevented()) {\n if ((blurOnSubmit || !multiline) && onSubmitEditing) {\n // prevent \"Enter\" from inserting a newline or submitting a form\n e.preventDefault();\n nativeEvent.text = e.target.value;\n onSubmitEditing(e);\n }\n\n if (shouldBlurOnSubmit && hostNode != null) {\n setTimeout(() => hostNode.blur(), 0);\n }\n }\n }\n\n function handleSelectionChange(e) {\n if (onSelectionChange) {\n try {\n var node = e.target;\n var selectionStart = node.selectionStart,\n selectionEnd = node.selectionEnd;\n e.nativeEvent.selection = {\n start: selectionStart,\n end: selectionEnd\n };\n e.nativeEvent.text = e.target.value;\n onSelectionChange(e);\n } catch (e) {}\n }\n }\n\n useLayoutEffect(() => {\n var node = hostRef.current;\n\n if (node != null && selection != null) {\n setSelection(node, selection);\n }\n\n if (document.activeElement === node) {\n TextInputState._currentlyFocusedNode = node;\n }\n }, [hostRef, selection]);\n var component = multiline ? 'textarea' : 'input';\n useElementLayout(hostRef, onLayout);\n useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture\n });\n\n var _useLocaleContext = useLocaleContext(),\n contextDirection = _useLocaleContext.direction;\n\n var supportedProps = pickProps(props);\n supportedProps.autoCapitalize = autoCapitalize;\n supportedProps.autoComplete = autoComplete || autoCompleteType || 'on';\n supportedProps.autoCorrect = autoCorrect ? 'on' : 'off'; // 'auto' by default allows browsers to infer writing direction\n\n supportedProps.dir = dir !== undefined ? dir : 'auto';\n supportedProps.enterKeyHint = returnKeyType;\n supportedProps.inputMode = inputMode;\n supportedProps.onBlur = handleBlur;\n supportedProps.onChange = handleChange;\n supportedProps.onFocus = handleFocus;\n supportedProps.onKeyDown = handleKeyDown;\n supportedProps.onSelect = handleSelectionChange;\n supportedProps.readOnly = !editable;\n supportedProps.rows = multiline ? numberOfLines : undefined;\n supportedProps.spellCheck = spellCheck != null ? spellCheck : autoCorrect;\n supportedProps.style = [{\n '--placeholderTextColor': placeholderTextColor\n }, styles.textinput$raw, styles.placeholder, props.style];\n supportedProps.type = multiline ? undefined : type;\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, imperativeRef, forwardedRef);\n supportedProps.ref = setRef;\n var langDirection = props.lang != null ? getLocaleDirection(props.lang) : null;\n var componentDirection = props.dir || langDirection;\n var writingDirection = componentDirection || contextDirection;\n var element = createElement(component, supportedProps, {\n writingDirection\n });\n return element;\n});\nTextInput.displayName = 'TextInput'; // $FlowFixMe\n\nTextInput.State = TextInputState;\nvar styles = StyleSheet.create({\n textinput$raw: {\n MozAppearance: 'textfield',\n WebkitAppearance: 'none',\n backgroundColor: 'transparent',\n border: '0 solid black',\n borderRadius: 0,\n boxSizing: 'border-box',\n font: '14px System',\n margin: 0,\n padding: 0,\n resize: 'none'\n },\n placeholder: {\n placeholderTextColor: 'var(--placeholderTextColor)'\n }\n});\nexport default TextInput;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"activeOpacity\", \"children\", \"delayPressIn\", \"delayPressOut\", \"delayLongPress\", \"disabled\", \"focusable\", \"onHideUnderlay\", \"onLongPress\", \"onPress\", \"onPressIn\", \"onPressOut\", \"onShowUnderlay\", \"rejectResponderTermination\", \"style\", \"testOnly_pressed\", \"underlayColor\"];\nimport * as React from 'react';\nimport { useCallback, useMemo, useState, useRef } from 'react';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePressEvents from '../../modules/usePressEvents';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\n\nfunction createExtraStyles(activeOpacity, underlayColor) {\n return {\n child: {\n opacity: activeOpacity !== null && activeOpacity !== void 0 ? activeOpacity : 0.85\n },\n underlay: {\n backgroundColor: underlayColor === undefined ? 'black' : underlayColor\n }\n };\n}\n\nfunction hasPressHandler(props) {\n return props.onPress != null || props.onPressIn != null || props.onPressOut != null || props.onLongPress != null;\n}\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view.\n *\n * The underlay comes from wrapping the child in a new View, which can affect\n * layout, and sometimes cause unwanted visual artifacts if not used correctly,\n * for example if the backgroundColor of the wrapped view isn't explicitly set\n * to an opaque color.\n *\n * TouchableHighlight must have one child (not zero or more than one).\n * If you wish to have several child components, wrap them in a View.\n */\n\n\nfunction TouchableHighlight(props, forwardedRef) {\n var activeOpacity = props.activeOpacity,\n children = props.children,\n delayPressIn = props.delayPressIn,\n delayPressOut = props.delayPressOut,\n delayLongPress = props.delayLongPress,\n disabled = props.disabled,\n focusable = props.focusable,\n onHideUnderlay = props.onHideUnderlay,\n onLongPress = props.onLongPress,\n onPress = props.onPress,\n onPressIn = props.onPressIn,\n onPressOut = props.onPressOut,\n onShowUnderlay = props.onShowUnderlay,\n rejectResponderTermination = props.rejectResponderTermination,\n style = props.style,\n testOnly_pressed = props.testOnly_pressed,\n underlayColor = props.underlayColor,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var hostRef = useRef(null);\n var setRef = useMergeRefs(forwardedRef, hostRef);\n\n var _useState = useState(testOnly_pressed === true ? createExtraStyles(activeOpacity, underlayColor) : null),\n extraStyles = _useState[0],\n setExtraStyles = _useState[1];\n\n var showUnderlay = useCallback(() => {\n if (!hasPressHandler(props)) {\n return;\n }\n\n setExtraStyles(createExtraStyles(activeOpacity, underlayColor));\n\n if (onShowUnderlay != null) {\n onShowUnderlay();\n }\n }, [activeOpacity, onShowUnderlay, props, underlayColor]);\n var hideUnderlay = useCallback(() => {\n if (testOnly_pressed === true) {\n return;\n }\n\n if (hasPressHandler(props)) {\n setExtraStyles(null);\n\n if (onHideUnderlay != null) {\n onHideUnderlay();\n }\n }\n }, [onHideUnderlay, props, testOnly_pressed]);\n var pressConfig = useMemo(() => ({\n cancelable: !rejectResponderTermination,\n disabled,\n delayLongPress,\n delayPressStart: delayPressIn,\n delayPressEnd: delayPressOut,\n onLongPress,\n onPress,\n\n onPressStart(event) {\n showUnderlay();\n\n if (onPressIn != null) {\n onPressIn(event);\n }\n },\n\n onPressEnd(event) {\n hideUnderlay();\n\n if (onPressOut != null) {\n onPressOut(event);\n }\n }\n\n }), [delayLongPress, delayPressIn, delayPressOut, disabled, onLongPress, onPress, onPressIn, onPressOut, rejectResponderTermination, showUnderlay, hideUnderlay]);\n var pressEventHandlers = usePressEvents(hostRef, pressConfig);\n var child = React.Children.only(children);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, pressEventHandlers, {\n accessibilityDisabled: disabled,\n focusable: !disabled && focusable !== false,\n pointerEvents: disabled ? 'none' : undefined,\n ref: setRef,\n style: [styles.root, style, !disabled && styles.actionable, extraStyles && extraStyles.underlay]\n }), /*#__PURE__*/React.cloneElement(child, {\n style: StyleSheet.compose(child.props.style, extraStyles && extraStyles.child)\n }));\n}\n\nvar styles = StyleSheet.create({\n root: {\n userSelect: 'none'\n },\n actionable: {\n cursor: 'pointer',\n touchAction: 'manipulation'\n }\n});\nvar MemoedTouchableHighlight = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(TouchableHighlight));\nMemoedTouchableHighlight.displayName = 'TouchableHighlight';\nexport default MemoedTouchableHighlight;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"activeOpacity\", \"delayPressIn\", \"delayPressOut\", \"delayLongPress\", \"disabled\", \"focusable\", \"onLongPress\", \"onPress\", \"onPressIn\", \"onPressOut\", \"rejectResponderTermination\", \"style\"];\nimport * as React from 'react';\nimport { useCallback, useMemo, useState, useRef } from 'react';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePressEvents from '../../modules/usePressEvents';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n */\nfunction TouchableOpacity(props, forwardedRef) {\n var activeOpacity = props.activeOpacity,\n delayPressIn = props.delayPressIn,\n delayPressOut = props.delayPressOut,\n delayLongPress = props.delayLongPress,\n disabled = props.disabled,\n focusable = props.focusable,\n onLongPress = props.onLongPress,\n onPress = props.onPress,\n onPressIn = props.onPressIn,\n onPressOut = props.onPressOut,\n rejectResponderTermination = props.rejectResponderTermination,\n style = props.style,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var hostRef = useRef(null);\n var setRef = useMergeRefs(forwardedRef, hostRef);\n\n var _useState = useState('0s'),\n duration = _useState[0],\n setDuration = _useState[1];\n\n var _useState2 = useState(null),\n opacityOverride = _useState2[0],\n setOpacityOverride = _useState2[1];\n\n var setOpacityTo = useCallback((value, duration) => {\n setOpacityOverride(value);\n setDuration(duration ? duration / 1000 + \"s\" : '0s');\n }, [setOpacityOverride, setDuration]);\n var setOpacityActive = useCallback(duration => {\n setOpacityTo(activeOpacity !== null && activeOpacity !== void 0 ? activeOpacity : 0.2, duration);\n }, [activeOpacity, setOpacityTo]);\n var setOpacityInactive = useCallback(duration => {\n setOpacityTo(null, duration);\n }, [setOpacityTo]);\n var pressConfig = useMemo(() => ({\n cancelable: !rejectResponderTermination,\n disabled,\n delayLongPress,\n delayPressStart: delayPressIn,\n delayPressEnd: delayPressOut,\n onLongPress,\n onPress,\n\n onPressStart(event) {\n var isGrant = event.dispatchConfig != null ? event.dispatchConfig.registrationName === 'onResponderGrant' : event.type === 'keydown';\n setOpacityActive(isGrant ? 0 : 150);\n\n if (onPressIn != null) {\n onPressIn(event);\n }\n },\n\n onPressEnd(event) {\n setOpacityInactive(250);\n\n if (onPressOut != null) {\n onPressOut(event);\n }\n }\n\n }), [delayLongPress, delayPressIn, delayPressOut, disabled, onLongPress, onPress, onPressIn, onPressOut, rejectResponderTermination, setOpacityActive, setOpacityInactive]);\n var pressEventHandlers = usePressEvents(hostRef, pressConfig);\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, pressEventHandlers, {\n accessibilityDisabled: disabled,\n focusable: !disabled && focusable !== false,\n pointerEvents: disabled ? 'none' : undefined,\n ref: setRef,\n style: [styles.root, !disabled && styles.actionable, style, opacityOverride != null && {\n opacity: opacityOverride\n }, {\n transitionDuration: duration\n }]\n }));\n}\n\nvar styles = StyleSheet.create({\n root: {\n transitionProperty: 'opacity',\n transitionDuration: '0.15s',\n userSelect: 'none'\n },\n actionable: {\n cursor: 'pointer',\n touchAction: 'manipulation'\n }\n});\nvar MemoedTouchableOpacity = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(TouchableOpacity));\nMemoedTouchableOpacity.displayName = 'TouchableOpacity';\nexport default MemoedTouchableOpacity;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport pick from '../../modules/pick';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePressEvents from '../../modules/usePressEvents';\nvar forwardPropsList = {\n accessibilityDisabled: true,\n accessibilityLabel: true,\n accessibilityLiveRegion: true,\n accessibilityRole: true,\n accessibilityState: true,\n accessibilityValue: true,\n children: true,\n disabled: true,\n focusable: true,\n nativeID: true,\n onBlur: true,\n onFocus: true,\n onLayout: true,\n testID: true\n};\n\nvar pickProps = props => pick(props, forwardPropsList);\n\nfunction TouchableWithoutFeedback(props, forwardedRef) {\n var delayPressIn = props.delayPressIn,\n delayPressOut = props.delayPressOut,\n delayLongPress = props.delayLongPress,\n disabled = props.disabled,\n focusable = props.focusable,\n onLongPress = props.onLongPress,\n onPress = props.onPress,\n onPressIn = props.onPressIn,\n onPressOut = props.onPressOut,\n rejectResponderTermination = props.rejectResponderTermination;\n var hostRef = useRef(null);\n var pressConfig = useMemo(() => ({\n cancelable: !rejectResponderTermination,\n disabled,\n delayLongPress,\n delayPressStart: delayPressIn,\n delayPressEnd: delayPressOut,\n onLongPress,\n onPress,\n onPressStart: onPressIn,\n onPressEnd: onPressOut\n }), [disabled, delayPressIn, delayPressOut, delayLongPress, onLongPress, onPress, onPressIn, onPressOut, rejectResponderTermination]);\n var pressEventHandlers = usePressEvents(hostRef, pressConfig);\n var element = React.Children.only(props.children);\n var children = [element.props.children];\n var supportedProps = pickProps(props);\n supportedProps.accessibilityDisabled = disabled;\n supportedProps.focusable = !disabled && focusable !== false;\n supportedProps.ref = useMergeRefs(forwardedRef, hostRef, element.ref);\n var elementProps = Object.assign(supportedProps, pressEventHandlers);\n return /*#__PURE__*/React.cloneElement(element, elementProps, ...children);\n}\n\nvar MemoedTouchableWithoutFeedback = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(TouchableWithoutFeedback));\nMemoedTouchableWithoutFeedback.displayName = 'TouchableWithoutFeedback';\nexport default MemoedTouchableWithoutFeedback;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar unitlessNumbers = {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexOrder: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowGap: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnGap: true,\n gridColumnStart: true,\n lineClamp: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n // transform types\n scale: true,\n scaleX: true,\n scaleY: true,\n scaleZ: true,\n // RN properties\n shadowOpacity: true\n};\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\nvar prefixes = ['ms', 'Moz', 'O', 'Webkit'];\n\nvar prefixKey = (prefix, key) => {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n};\n\nObject.keys(unitlessNumbers).forEach(prop => {\n prefixes.forEach(prefix => {\n unitlessNumbers[prefixKey(prefix, prop)] = unitlessNumbers[prop];\n });\n});\nexport default unitlessNumbers;","/* eslint-disable */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * From React 16.0.0\n * \n */\nimport isUnitlessNumber from '../unitlessNumbers';\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n if (isEmpty) {\n return '';\n }\n\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return ('' + value).trim();\n}\n\nexport default dangerousStyleValue;","/* eslint-disable */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * From React 16.3.0\n * \n */\nimport dangerousStyleValue from './dangerousStyleValue';\n/**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n var style = node.style;\n\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n if (styleName === 'float') {\n styleName = 'cssFloat';\n }\n\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else {\n style[styleName] = styleValue;\n }\n }\n}\n\nexport default setValueForStyles;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport getBoundingClientRect from '../../modules/getBoundingClientRect';\nimport setValueForStyles from '../../modules/setValueForStyles';\n\nvar getRect = node => {\n // Unlike the DOM's getBoundingClientRect, React Native layout measurements\n // for \"height\" and \"width\" ignore scale transforms.\n // https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements\n var _getBoundingClientRec = getBoundingClientRect(node),\n x = _getBoundingClientRec.x,\n y = _getBoundingClientRec.y,\n top = _getBoundingClientRec.top,\n left = _getBoundingClientRec.left;\n\n var width = node.offsetWidth;\n var height = node.offsetHeight;\n return {\n x,\n y,\n width,\n height,\n top,\n left\n };\n};\n\nvar measureLayout = (node, relativeToNativeNode, callback) => {\n var relativeNode = relativeToNativeNode || node && node.parentNode;\n\n if (node && relativeNode) {\n setTimeout(() => {\n var relativeRect = getBoundingClientRect(relativeNode);\n\n var _getRect = getRect(node),\n height = _getRect.height,\n left = _getRect.left,\n top = _getRect.top,\n width = _getRect.width;\n\n var x = left - relativeRect.left;\n var y = top - relativeRect.top;\n callback(x, y, width, height, left, top);\n }, 0);\n }\n};\n\nvar focusableElements = {\n A: true,\n INPUT: true,\n SELECT: true,\n TEXTAREA: true\n};\nvar UIManager = {\n blur(node) {\n try {\n node.blur();\n } catch (err) {}\n },\n\n focus(node) {\n try {\n var name = node.nodeName; // A tabIndex of -1 allows element to be programmatically focused but\n // prevents keyboard focus, so we don't want to set the value on elements\n // that support keyboard focus by default.\n\n if (node.getAttribute('tabIndex') == null && focusableElements[name] == null) {\n node.setAttribute('tabIndex', '-1');\n }\n\n node.focus();\n } catch (err) {}\n },\n\n measure(node, callback) {\n measureLayout(node, null, callback);\n },\n\n measureInWindow(node, callback) {\n if (node) {\n setTimeout(() => {\n var _getRect2 = getRect(node),\n height = _getRect2.height,\n left = _getRect2.left,\n top = _getRect2.top,\n width = _getRect2.width;\n\n callback(left, top, width, height);\n }, 0);\n }\n },\n\n measureLayout(node, relativeToNativeNode, onFail, onSuccess) {\n measureLayout(node, relativeToNativeNode, onSuccess);\n },\n\n updateView(node, props) {\n for (var prop in props) {\n if (!Object.prototype.hasOwnProperty.call(props, prop)) {\n continue;\n }\n\n var value = props[prop];\n\n switch (prop) {\n case 'style':\n {\n setValueForStyles(node, value);\n break;\n }\n\n case 'class':\n case 'className':\n {\n node.setAttribute('class', value);\n break;\n }\n\n case 'text':\n case 'value':\n // native platforms use `text` prop to replace text input value\n node.value = value;\n break;\n\n default:\n node.setAttribute(prop, value);\n }\n }\n },\n\n configureNextLayoutAnimation(config, onAnimationDidEnd) {\n onAnimationDidEnd();\n },\n\n // mocks\n setLayoutAnimationEnabledExperimental() {}\n\n};\nexport default UIManager;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"hrefAttrs\", \"onLayout\", \"onMoveShouldSetResponder\", \"onMoveShouldSetResponderCapture\", \"onResponderEnd\", \"onResponderGrant\", \"onResponderMove\", \"onResponderReject\", \"onResponderRelease\", \"onResponderStart\", \"onResponderTerminate\", \"onResponderTerminationRequest\", \"onScrollShouldSetResponder\", \"onScrollShouldSetResponderCapture\", \"onSelectionChangeShouldSetResponder\", \"onSelectionChangeShouldSetResponderCapture\", \"onStartShouldSetResponder\", \"onStartShouldSetResponderCapture\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport * as forwardedProps from '../../modules/forwardedProps';\nimport pick from '../../modules/pick';\nimport useElementLayout from '../../modules/useElementLayout';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport useResponderEvents from '../../modules/useResponderEvents';\nimport StyleSheet from '../StyleSheet';\nimport TextAncestorContext from '../Text/TextAncestorContext';\nimport { useLocaleContext, getLocaleDirection } from '../../modules/useLocale';\nvar forwardPropsList = Object.assign({}, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.defaultProps, forwardedProps.accessibilityProps, forwardedProps.clickProps, forwardedProps.focusProps, forwardedProps.keyboardProps, forwardedProps.mouseProps, forwardedProps.touchProps, forwardedProps.styleProps, {\n href: true,\n lang: true,\n onScroll: true,\n onWheel: true,\n pointerEvents: true\n});\n\nvar pickProps = props => pick(props, forwardPropsList);\n\nvar View = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var hrefAttrs = props.hrefAttrs,\n onLayout = props.onLayout,\n onMoveShouldSetResponder = props.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = props.onMoveShouldSetResponderCapture,\n onResponderEnd = props.onResponderEnd,\n onResponderGrant = props.onResponderGrant,\n onResponderMove = props.onResponderMove,\n onResponderReject = props.onResponderReject,\n onResponderRelease = props.onResponderRelease,\n onResponderStart = props.onResponderStart,\n onResponderTerminate = props.onResponderTerminate,\n onResponderTerminationRequest = props.onResponderTerminationRequest,\n onScrollShouldSetResponder = props.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = props.onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder = props.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = props.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = props.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = props.onStartShouldSetResponderCapture,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n React.Children.toArray(props.children).forEach(item => {\n if (typeof item === 'string') {\n console.error(\"Unexpected text node: \" + item + \". A text node cannot be a child of a .\");\n }\n });\n }\n\n var hasTextAncestor = React.useContext(TextAncestorContext);\n var hostRef = React.useRef(null);\n\n var _useLocaleContext = useLocaleContext(),\n contextDirection = _useLocaleContext.direction;\n\n useElementLayout(hostRef, onLayout);\n useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture\n });\n var component = 'div';\n var langDirection = props.lang != null ? getLocaleDirection(props.lang) : null;\n var componentDirection = props.dir || langDirection;\n var writingDirection = componentDirection || contextDirection;\n var supportedProps = pickProps(rest);\n supportedProps.dir = componentDirection;\n supportedProps.style = [styles.view$raw, hasTextAncestor && styles.inline, props.style];\n\n if (props.href != null) {\n component = 'a';\n\n if (hrefAttrs != null) {\n var download = hrefAttrs.download,\n rel = hrefAttrs.rel,\n target = hrefAttrs.target;\n\n if (download != null) {\n supportedProps.download = download;\n }\n\n if (rel != null) {\n supportedProps.rel = rel;\n }\n\n if (typeof target === 'string') {\n supportedProps.target = target.charAt(0) !== '_' ? '_' + target : target;\n }\n }\n }\n\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);\n supportedProps.ref = setRef;\n return createElement(component, supportedProps, {\n writingDirection\n });\n});\nView.displayName = 'View';\nvar styles = StyleSheet.create({\n view$raw: {\n alignItems: 'stretch',\n backgroundColor: 'transparent',\n border: '0 solid black',\n boxSizing: 'border-box',\n display: 'flex',\n flexBasis: 'auto',\n flexDirection: 'column',\n flexShrink: 0,\n listStyle: 'none',\n margin: 0,\n minHeight: 0,\n minWidth: 0,\n padding: 0,\n position: 'relative',\n textDecoration: 'none',\n zIndex: 0\n },\n inline: {\n display: 'inline-flex'\n }\n});\nexport default View;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport AccessibilityUtil from '../../modules/AccessibilityUtil';\nimport createDOMProps from '../../modules/createDOMProps';\nimport React from 'react';\nimport { LocaleProvider } from '../../modules/useLocale';\n\nvar createElement = (component, props, options) => {\n // Use equivalent platform elements where possible.\n var accessibilityComponent;\n\n if (component && component.constructor === String) {\n accessibilityComponent = AccessibilityUtil.propsToAccessibilityComponent(props);\n }\n\n var Component = accessibilityComponent || component;\n var domProps = createDOMProps(Component, props, options);\n var element = /*#__PURE__*/React.createElement(Component, domProps); // Update locale context if element's writing direction prop changes\n\n var elementWithLocaleProvider = domProps.dir ? /*#__PURE__*/React.createElement(LocaleProvider, {\n children: element,\n direction: domProps.dir,\n locale: domProps.lang\n }) : element;\n return elementWithLocaleProvider;\n};\n\nexport default createElement;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport { findDOMNode } from 'react-dom';\n\nvar findNodeHandle = component => {\n var node;\n\n try {\n node = findDOMNode(component);\n } catch (e) {}\n\n return node;\n};\n\nexport default findNodeHandle;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport normalizeColor from 'normalize-css-color';\n\nvar processColor = color => {\n if (color === undefined || color === null) {\n return color;\n } // convert number and hex\n\n\n var int32Color = normalizeColor(color);\n\n if (int32Color === undefined || int32Color === null) {\n return undefined;\n }\n\n int32Color = (int32Color << 24 | int32Color >>> 8) >>> 0;\n return int32Color;\n};\n\nexport default processColor;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nimport Dimensions from '../Dimensions';\nimport { useEffect, useState } from 'react';\nexport default function useWindowDimensions() {\n var _useState = useState(() => Dimensions.get('window')),\n dims = _useState[0],\n setDims = _useState[1];\n\n useEffect(() => {\n function handleChange(_ref) {\n var window = _ref.window;\n\n if (window != null) {\n setDims(window);\n }\n }\n\n Dimensions.addEventListener('change', handleChange); // We might have missed an update between calling `get` in render and\n // `addEventListener` in this handler, so we set it here. If there was\n // no change, React will filter out this update as a no-op.\n\n setDims(Dimensions.get('window'));\n return () => {\n Dimensions.removeEventListener('change', handleChange);\n };\n }, []);\n return dims;\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport { hydrate as domHydrate, render as domRender } from 'react-dom';\nimport { createSheet } from '../StyleSheet/dom';\nexport function hydrate(element, root, callback) {\n createSheet(root);\n return domHydrate(element, root, callback);\n}\nexport default function render(element, root, callback) {\n createSheet(root);\n return domRender(element, root, callback);\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport { unmountComponentAtNode } from 'react-dom';\nexport default unmountComponentAtNode;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport canUseDOM from '../../modules/canUseDom';\n\nfunction isScreenReaderEnabled() {\n return new Promise((resolve, reject) => {\n resolve(true);\n });\n}\n\nvar prefersReducedMotionMedia = canUseDOM && typeof window.matchMedia === 'function' ? window.matchMedia('(prefers-reduced-motion: reduce)') : null;\n\nfunction isReduceMotionEnabled() {\n return new Promise((resolve, reject) => {\n resolve(prefersReducedMotionMedia ? prefersReducedMotionMedia.matches : true);\n });\n}\n\nfunction addChangeListener(fn) {\n if (prefersReducedMotionMedia != null) {\n prefersReducedMotionMedia.addEventListener != null ? prefersReducedMotionMedia.addEventListener('change', fn) : prefersReducedMotionMedia.addListener(fn);\n }\n}\n\nfunction removeChangeListener(fn) {\n if (prefersReducedMotionMedia != null) {\n prefersReducedMotionMedia.removeEventListener != null ? prefersReducedMotionMedia.removeEventListener('change', fn) : prefersReducedMotionMedia.removeListener(fn);\n }\n}\n\nvar handlers = {};\nvar AccessibilityInfo = {\n /**\n * Query whether a screen reader is currently enabled.\n *\n * Returns a promise which resolves to a boolean.\n * The result is `true` when a screen reader is enabled and `false` otherwise.\n */\n isScreenReaderEnabled,\n\n /**\n * Query whether the user prefers reduced motion.\n *\n * Returns a promise which resolves to a boolean.\n * The result is `true` when a screen reader is enabled and `false` otherwise.\n */\n isReduceMotionEnabled,\n\n /**\n * Deprecated\n */\n fetch: isScreenReaderEnabled,\n\n /**\n * Add an event handler. Supported events: reduceMotionChanged\n */\n addEventListener: function addEventListener(eventName, handler) {\n if (eventName === 'reduceMotionChanged') {\n if (!prefersReducedMotionMedia) {\n return;\n }\n\n var listener = event => {\n handler(event.matches);\n };\n\n addChangeListener(listener);\n handlers[handler] = listener;\n }\n\n return {\n remove: () => AccessibilityInfo.removeEventListener(eventName, handler)\n };\n },\n\n /**\n * Set accessibility focus to a react component.\n */\n setAccessibilityFocus: function setAccessibilityFocus(reactTag) {},\n\n /**\n * Post a string to be announced by the screen reader.\n */\n announceForAccessibility: function announceForAccessibility(announcement) {},\n\n /**\n * Remove an event handler.\n */\n removeEventListener: function removeEventListener(eventName, handler) {\n if (eventName === 'reduceMotionChanged') {\n var listener = handlers[handler];\n\n if (!listener || !prefersReducedMotionMedia) {\n return;\n }\n\n removeChangeListener(listener);\n }\n\n return;\n }\n};\nexport default AccessibilityInfo;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nclass Alert {\n static alert() {}\n\n}\n\nexport default Alert;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport canUseDOM from '../../modules/canUseDom';\n\nfunction getQuery() {\n return canUseDOM && window.matchMedia != null ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n}\n\nvar query = getQuery();\nvar listenerMapping = new WeakMap();\nvar Appearance = {\n getColorScheme() {\n return query && query.matches ? 'dark' : 'light';\n },\n\n addChangeListener(listener) {\n var mappedListener = listenerMapping.get(listener);\n\n if (!mappedListener) {\n mappedListener = _ref => {\n var matches = _ref.matches;\n listener({\n colorScheme: matches ? 'dark' : 'light'\n });\n };\n\n listenerMapping.set(listener, mappedListener);\n }\n\n if (query) {\n query.addListener(mappedListener);\n }\n\n function remove() {\n var mappedListener = listenerMapping.get(listener);\n\n if (query && mappedListener) {\n query.removeListener(mappedListener);\n }\n\n listenerMapping.delete(listener);\n }\n\n return {\n remove\n };\n }\n\n};\nexport default Appearance;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nvar RootTagContext = /*#__PURE__*/React.createContext(null);\nexport default function AppContainer(props) {\n var children = props.children,\n WrapperComponent = props.WrapperComponent;\n var innerView = /*#__PURE__*/React.createElement(View, {\n children: children,\n key: 1,\n pointerEvents: \"box-none\",\n style: styles.appContainer\n });\n\n if (WrapperComponent) {\n innerView = /*#__PURE__*/React.createElement(WrapperComponent, null, innerView);\n }\n\n return /*#__PURE__*/React.createElement(RootTagContext.Provider, {\n value: props.rootTag\n }, /*#__PURE__*/React.createElement(View, {\n pointerEvents: \"box-none\",\n style: styles.appContainer\n }, innerView));\n}\nvar styles = StyleSheet.create({\n appContainer: {\n flex: 1\n }\n});","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\nimport unmountComponentAtNode from '../unmountComponentAtNode';\nimport renderApplication, { getApplication as _getApplication } from './renderApplication';\nvar emptyObject = {};\nvar runnables = {};\n\nvar componentProviderInstrumentationHook = component => component();\n\nvar wrapperComponentProvider;\n/**\n * `AppRegistry` is the JS entry point to running all React Native apps.\n */\n\nexport default class AppRegistry {\n static getAppKeys() {\n return Object.keys(runnables);\n }\n\n static getApplication(appKey, appParameters) {\n invariant(runnables[appKey] && runnables[appKey].getApplication, \"Application \" + appKey + \" has not been registered. \" + 'This is either due to an import error during initialization or failure to call AppRegistry.registerComponent.');\n return runnables[appKey].getApplication(appParameters);\n }\n\n static registerComponent(appKey, componentProvider) {\n runnables[appKey] = {\n getApplication: appParameters => _getApplication(componentProviderInstrumentationHook(componentProvider), appParameters ? appParameters.initialProps : emptyObject, wrapperComponentProvider && wrapperComponentProvider(appParameters)),\n run: appParameters => renderApplication(componentProviderInstrumentationHook(componentProvider), wrapperComponentProvider && wrapperComponentProvider(appParameters), appParameters.callback, {\n hydrate: appParameters.hydrate || false,\n initialProps: appParameters.initialProps || emptyObject,\n rootTag: appParameters.rootTag\n })\n };\n return appKey;\n }\n\n static registerConfig(config) {\n config.forEach(_ref => {\n var appKey = _ref.appKey,\n component = _ref.component,\n run = _ref.run;\n\n if (run) {\n AppRegistry.registerRunnable(appKey, run);\n } else {\n invariant(component, 'No component provider passed in');\n AppRegistry.registerComponent(appKey, component);\n }\n });\n } // TODO: fix style sheet creation when using this method\n\n\n static registerRunnable(appKey, run) {\n runnables[appKey] = {\n run\n };\n return appKey;\n }\n\n static runApplication(appKey, appParameters) {\n var isDevelopment = process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test';\n\n if (isDevelopment) {\n var params = _objectSpread({}, appParameters);\n\n params.rootTag = \"#\" + params.rootTag.id;\n console.log(\"Running application \\\"\" + appKey + \"\\\" with appParams:\\n\", params, \"\\nDevelopment-level warnings: \" + (isDevelopment ? 'ON' : 'OFF') + \".\" + (\"\\nPerformance optimizations: \" + (isDevelopment ? 'OFF' : 'ON') + \".\"));\n }\n\n invariant(runnables[appKey] && runnables[appKey].run, \"Application \\\"\" + appKey + \"\\\" has not been registered. \" + 'This is either due to an import error during initialization or failure to call AppRegistry.registerComponent.');\n runnables[appKey].run(appParameters);\n }\n\n static setComponentProviderInstrumentationHook(hook) {\n componentProviderInstrumentationHook = hook;\n }\n\n static setWrapperComponentProvider(provider) {\n wrapperComponentProvider = provider;\n }\n\n static unmountApplicationComponentAtRootTag(rootTag) {\n unmountComponentAtNode(rootTag);\n }\n\n}","import _extends from \"@babel/runtime/helpers/extends\";\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport AppContainer from './AppContainer';\nimport invariant from 'fbjs/lib/invariant';\nimport render, { hydrate } from '../render';\nimport StyleSheet from '../StyleSheet';\nimport React from 'react';\nexport default function renderApplication(RootComponent, WrapperComponent, callback, options) {\n var shouldHydrate = options.hydrate,\n initialProps = options.initialProps,\n rootTag = options.rootTag;\n var renderFn = shouldHydrate ? hydrate : render;\n invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);\n renderFn( /*#__PURE__*/React.createElement(AppContainer, {\n WrapperComponent: WrapperComponent,\n rootTag: rootTag\n }, /*#__PURE__*/React.createElement(RootComponent, initialProps)), rootTag, callback);\n}\nexport function getApplication(RootComponent, initialProps, WrapperComponent) {\n var element = /*#__PURE__*/React.createElement(AppContainer, {\n WrapperComponent: WrapperComponent,\n rootTag: {}\n }, /*#__PURE__*/React.createElement(RootComponent, initialProps)); // Don't escape CSS text\n\n var getStyleElement = props => {\n var sheet = StyleSheet.getSheet();\n return /*#__PURE__*/React.createElement(\"style\", _extends({}, props, {\n dangerouslySetInnerHTML: {\n __html: sheet.textContent\n },\n id: sheet.id\n }));\n };\n\n return {\n element,\n getStyleElement\n };\n}","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\nimport EventEmitter from '../../vendor/react-native/emitter/_EventEmitter';\nimport canUseDOM from '../../modules/canUseDom'; // Android 4.4 browser\n\nvar isPrefixed = canUseDOM && !document.hasOwnProperty('hidden') && document.hasOwnProperty('webkitHidden');\nvar EVENT_TYPES = ['change', 'memoryWarning'];\nvar VISIBILITY_CHANGE_EVENT = isPrefixed ? 'webkitvisibilitychange' : 'visibilitychange';\nvar VISIBILITY_STATE_PROPERTY = isPrefixed ? 'webkitVisibilityState' : 'visibilityState';\nvar AppStates = {\n BACKGROUND: 'background',\n ACTIVE: 'active'\n};\nvar changeEmitter = null;\nexport default class AppState {\n static get currentState() {\n if (!AppState.isAvailable) {\n return AppStates.ACTIVE;\n }\n\n switch (document[VISIBILITY_STATE_PROPERTY]) {\n case 'hidden':\n case 'prerender':\n case 'unloaded':\n return AppStates.BACKGROUND;\n\n default:\n return AppStates.ACTIVE;\n }\n }\n\n static addEventListener(type, handler) {\n if (AppState.isAvailable) {\n invariant(EVENT_TYPES.indexOf(type) !== -1, 'Trying to subscribe to unknown event: \"%s\"', type);\n\n if (type === 'change') {\n if (!changeEmitter) {\n changeEmitter = new EventEmitter();\n document.addEventListener(VISIBILITY_CHANGE_EVENT, () => {\n if (changeEmitter) {\n changeEmitter.emit('change', AppState.currentState);\n }\n }, false);\n }\n\n return changeEmitter.addListener(type, handler);\n }\n }\n }\n\n static removeEventListener(type, handler) {\n if (AppState.isAvailable) {\n console.error(\"AppState.removeListener('\" + type + \"', ...): Method has been \" + 'deprecated. Please instead use `remove()` on the subscription ' + 'returned by `AppState.addEventListener`.');\n invariant(EVENT_TYPES.indexOf(type) !== -1, 'Trying to remove listener for unknown event: \"%s\"', type);\n\n if (type === 'change' && changeEmitter) {\n changeEmitter.removeListener(handler);\n }\n }\n }\n\n}\nAppState.isAvailable = canUseDOM && document[VISIBILITY_STATE_PROPERTY];","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nfunction emptyFunction() {}\n\nvar BackHandler = {\n exitApp: emptyFunction,\n\n addEventListener() {\n return {\n remove: emptyFunction\n };\n },\n\n removeEventListener: emptyFunction\n};\nexport default BackHandler;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar clipboardAvailable;\nexport default class Clipboard {\n static isAvailable() {\n if (clipboardAvailable === undefined) {\n clipboardAvailable = typeof document.queryCommandSupported === 'function' && document.queryCommandSupported('copy');\n }\n\n return clipboardAvailable;\n }\n\n static getString() {\n return Promise.resolve('');\n }\n\n static setString(text) {\n var success = false;\n var body = document.body;\n\n if (body) {\n // add the text to a hidden node\n var node = document.createElement('span');\n node.textContent = text;\n node.style.opacity = '0';\n node.style.position = 'absolute';\n node.style.whiteSpace = 'pre-wrap';\n node.style.userSelect = 'auto';\n body.appendChild(node); // select the text\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n var range = document.createRange();\n range.selectNodeContents(node);\n selection.addRange(range); // attempt to copy\n\n try {\n document.execCommand('copy');\n success = true;\n } catch (e) {} // remove selection and node\n\n\n selection.removeAllRanges();\n body.removeChild(node);\n }\n\n return success;\n }\n\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport Dimensions from '../Dimensions';\nimport canUseDOM from '../../modules/canUseDom';\nvar DeviceInfo = {\n Dimensions: {\n get windowPhysicalPixels() {\n var _Dimensions$get = Dimensions.get('window'),\n width = _Dimensions$get.width,\n height = _Dimensions$get.height,\n fontScale = _Dimensions$get.fontScale,\n scale = _Dimensions$get.scale;\n\n return {\n width: width * scale,\n height: height * scale,\n scale,\n fontScale\n };\n },\n\n get screenPhysicalPixels() {\n var _Dimensions$get2 = Dimensions.get('screen'),\n width = _Dimensions$get2.width,\n height = _Dimensions$get2.height,\n fontScale = _Dimensions$get2.fontScale,\n scale = _Dimensions$get2.scale;\n\n return {\n width: width * scale,\n height: height * scale,\n scale,\n fontScale\n };\n }\n\n },\n\n get locale() {\n if (canUseDOM) {\n if (navigator.languages) {\n return navigator.languages[0];\n } else {\n return navigator.language;\n }\n }\n },\n\n get totalMemory() {\n // $FlowIssue deviceMemory not defined in navigator\n return canUseDOM ? navigator.deviceMemory : undefined;\n },\n\n get userAgent() {\n return canUseDOM ? navigator.userAgent : '';\n }\n\n};\nexport default DeviceInfo;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport Platform from '../../../exports/Platform';\nimport UIManager from '../../../exports/UIManager';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nfunction configureNext(config, onAnimationDidEnd) {\n if (!Platform.isTesting) {\n UIManager.configureNextLayoutAnimation(config, onAnimationDidEnd !== null && onAnimationDidEnd !== void 0 ? onAnimationDidEnd : function () {}, function () {}\n /* unused onError */\n );\n }\n}\n\nfunction create(duration, type, property) {\n return {\n duration,\n create: {\n type,\n property\n },\n update: {\n type\n },\n delete: {\n type,\n property\n }\n };\n}\n\nvar Presets = {\n easeInEaseOut: create(300, 'easeInEaseOut', 'opacity'),\n linear: create(500, 'linear', 'opacity'),\n spring: {\n duration: 700,\n create: {\n type: 'linear',\n property: 'opacity'\n },\n update: {\n type: 'spring',\n springDamping: 0.4\n },\n delete: {\n type: 'linear',\n property: 'opacity'\n }\n }\n};\n/**\n * Automatically animates views to their new positions when the\n * next layout happens.\n *\n * A common way to use this API is to call it before calling `setState`.\n *\n * Note that in order to get this to work on **Android** you need to set the following flags via `UIManager`:\n *\n * UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true);\n */\n\nvar LayoutAnimation = {\n /**\n * Schedules an animation to happen on the next layout.\n *\n * @param config Specifies animation properties:\n *\n * - `duration` in milliseconds\n * - `create`, `AnimationConfig` for animating in new views\n * - `update`, `AnimationConfig` for animating views that have been updated\n *\n * @param onAnimationDidEnd Called when the animation finished.\n * Only supported on iOS.\n * @param onError Called on error. Only supported on iOS.\n */\n configureNext,\n\n /**\n * Helper for creating a config for `configureNext`.\n */\n create,\n Types: Object.freeze({\n spring: 'spring',\n linear: 'linear',\n easeInEaseOut: 'easeInEaseOut',\n easeIn: 'easeIn',\n easeOut: 'easeOut',\n keyboard: 'keyboard'\n }),\n Properties: Object.freeze({\n opacity: 'opacity',\n scaleX: 'scaleX',\n scaleY: 'scaleY',\n scaleXY: 'scaleXY'\n }),\n\n checkConfig() {\n console.error('LayoutAnimation.checkConfig(...) has been disabled.');\n },\n\n Presets,\n easeInEaseOut: configureNext.bind(null, Presets.easeInEaseOut),\n linear: configureNext.bind(null, Presets.linear),\n spring: configureNext.bind(null, Presets.spring)\n};\nexport default LayoutAnimation;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport LayoutAnimation from '../../vendor/react-native/LayoutAnimation';\nexport default LayoutAnimation;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\nimport canUseDOM from '../../modules/canUseDom';\nvar initialURL = canUseDOM ? window.location.href : '';\n\nclass Linking {\n constructor() {\n this._eventCallbacks = {};\n\n this.addEventListener = (event, callback) => {\n if (!this._eventCallbacks[event]) {\n this._eventCallbacks[event] = [callback];\n return;\n }\n\n this._eventCallbacks[event].push(callback);\n };\n\n this.removeEventListener = (event, callback) => {\n var callbacks = this._eventCallbacks[event];\n var filteredCallbacks = callbacks.filter(c => c.toString() !== callback.toString());\n this._eventCallbacks[event] = filteredCallbacks;\n };\n }\n\n _dispatchEvent(event) {\n for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n data[_key - 1] = arguments[_key];\n }\n\n var listeners = this._eventCallbacks[event];\n\n if (listeners != null && Array.isArray(listeners)) {\n listeners.map(listener => {\n listener(...data);\n });\n }\n }\n /**\n * Adds a event listener for the specified event. The callback will be called when the\n * said event is dispatched.\n */\n\n\n canOpenURL() {\n return Promise.resolve(true);\n }\n\n getInitialURL() {\n return Promise.resolve(initialURL);\n }\n /**\n * Try to open the given url in a secure fashion. The method returns a Promise object.\n * If a target is passed (including undefined) that target will be used, otherwise '_blank'.\n * If the url opens, the promise is resolved. If not, the promise is rejected.\n * Dispatches the `onOpen` event if `url` is opened successfully.\n */\n\n\n openURL(url, target) {\n if (arguments.length === 1) {\n target = '_blank';\n }\n\n try {\n open(url, target);\n\n this._dispatchEvent('onOpen', url);\n\n return Promise.resolve();\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n _validateURL(url) {\n invariant(typeof url === 'string', 'Invalid URL: should be a string. Was: ' + url);\n invariant(url, 'Invalid URL: cannot be empty');\n }\n\n}\n\nvar open = (url, target) => {\n if (canUseDOM) {\n var urlToOpen = new URL(url, window.location).toString();\n\n if (urlToOpen.indexOf('tel:') === 0) {\n window.location = urlToOpen;\n } else {\n window.open(urlToOpen, target, 'noopener');\n }\n }\n};\n\nexport default new Linking();","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nvar TouchHistoryMath = {\n /**\n * This code is optimized and not intended to look beautiful. This allows\n * computing of touch centroids that have moved after `touchesChangedAfter`\n * timeStamp. You can compute the current centroid involving all touches\n * moves after `touchesChangedAfter`, or you can compute the previous\n * centroid of all touches that were moved after `touchesChangedAfter`.\n *\n * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n * data.\n * @param {number} touchesChangedAfter timeStamp after which moved touches\n * are considered \"actively moving\" - not just \"active\".\n * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n * @param {boolean} ofCurrent Compute current centroid for actively moving\n * touches vs. previous centroid of now actively moving touches.\n * @return {number} value of centroid in specified dimension.\n */\n centroidDimension: function centroidDimension(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) {\n var touchBank = touchHistory.touchBank;\n var total = 0;\n var count = 0;\n var oneTouchData = touchHistory.numberActiveTouches === 1 ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null;\n\n if (oneTouchData !== null) {\n if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) {\n total += ofCurrent && isXAxis ? oneTouchData.currentPageX : ofCurrent && !isXAxis ? oneTouchData.currentPageY : !ofCurrent && isXAxis ? oneTouchData.previousPageX : oneTouchData.previousPageY;\n count = 1;\n }\n } else {\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrack = touchBank[i];\n\n if (touchTrack !== null && touchTrack !== undefined && touchTrack.touchActive && touchTrack.currentTimeStamp >= touchesChangedAfter) {\n var toAdd = void 0; // Yuck, program temporarily in invalid state.\n\n if (ofCurrent && isXAxis) {\n toAdd = touchTrack.currentPageX;\n } else if (ofCurrent && !isXAxis) {\n toAdd = touchTrack.currentPageY;\n } else if (!ofCurrent && isXAxis) {\n toAdd = touchTrack.previousPageX;\n } else {\n toAdd = touchTrack.previousPageY;\n }\n\n total += toAdd;\n count++;\n }\n }\n }\n\n return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n },\n currentCentroidXOfTouchesChangedAfter: function currentCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis\n true // ofCurrent\n );\n },\n currentCentroidYOfTouchesChangedAfter: function currentCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis\n true // ofCurrent\n );\n },\n previousCentroidXOfTouchesChangedAfter: function previousCentroidXOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis\n false // ofCurrent\n );\n },\n previousCentroidYOfTouchesChangedAfter: function previousCentroidYOfTouchesChangedAfter(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis\n false // ofCurrent\n );\n },\n currentCentroidX: function currentCentroidX(touchHistory) {\n return TouchHistoryMath.centroidDimension(touchHistory, 0, // touchesChangedAfter\n true, // isXAxis\n true // ofCurrent\n );\n },\n currentCentroidY: function currentCentroidY(touchHistory) {\n return TouchHistoryMath.centroidDimension(touchHistory, 0, // touchesChangedAfter\n false, // isXAxis\n true // ofCurrent\n );\n },\n noCentroid: -1\n};\nexport default TouchHistoryMath;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport InteractionManager from '../../../exports/InteractionManager';\nimport TouchHistoryMath from '../TouchHistoryMath';\nvar currentCentroidXOfTouchesChangedAfter = TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter = TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter = TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter = TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX = TouchHistoryMath.currentCentroidX;\nvar currentCentroidY = TouchHistoryMath.currentCentroidY;\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * By default, `PanResponder` holds an `InteractionManager` handle to block\n * long-running JS events from interrupting active gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * native event object:\n *\n * ```\n * onPanResponderMove: (event, gestureState) => {}\n * ```\n *\n * A native event is a synthetic touch event with the following form:\n *\n * - `nativeEvent`\n * + `changedTouches` - Array of all touch events that have changed since the last event\n * + `identifier` - The ID of the touch\n * + `locationX` - The X position of the touch, relative to the element\n * + `locationY` - The Y position of the touch, relative to the element\n * + `pageX` - The X position of the touch, relative to the root element\n * + `pageY` - The Y position of the touch, relative to the root element\n * + `target` - The node id of the element receiving the touch event\n * + `timestamp` - A time identifier for the touch, useful for velocity calculation\n * + `touches` - Array of all current touches on the screen\n *\n * A `gestureState` object has the following:\n *\n * - `stateID` - ID of the gestureState- persisted as long as there at least\n * one touch on screen\n * - `moveX` - the latest screen coordinates of the recently-moved touch\n * - `moveY` - the latest screen coordinates of the recently-moved touch\n * - `x0` - the screen coordinates of the responder grant\n * - `y0` - the screen coordinates of the responder grant\n * - `dx` - accumulated distance of the gesture since the touch started\n * - `dy` - accumulated distance of the gesture since the touch started\n * - `vx` - current velocity of the gesture\n * - `vy` - current velocity of the gesture\n * - `numberActiveTouches` - Number of touches currently on screen\n *\n * ### Basic Usage\n *\n * ```\n * componentWillMount: function() {\n * this._panResponder = PanResponder.create({\n * // Ask to be the responder:\n * onStartShouldSetPanResponder: (evt, gestureState) => true,\n * onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n * onMoveShouldSetPanResponder: (evt, gestureState) => true,\n * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n * onPanResponderGrant: (evt, gestureState) => {\n * // The gesture has started. Show visual feedback so the user knows\n * // what is happening!\n *\n * // gestureState.d{x,y} will be set to zero now\n * },\n * onPanResponderMove: (evt, gestureState) => {\n * // The most recent move distance is gestureState.move{X,Y}\n *\n * // The accumulated gesture distance since becoming responder is\n * // gestureState.d{x,y}\n * },\n * onPanResponderTerminationRequest: (evt, gestureState) => true,\n * onPanResponderRelease: (evt, gestureState) => {\n * // The user has released all touches while this view is the\n * // responder. This typically means a gesture has succeeded\n * },\n * onPanResponderTerminate: (evt, gestureState) => {\n * // Another component has become the responder, so this gesture\n * // should be cancelled\n * },\n * onShouldBlockNativeResponder: (evt, gestureState) => {\n * // Returns whether this component should block native components from becoming the JS\n * // responder. Returns true by default. Is currently only supported on android.\n * return true;\n * },\n * });\n * },\n *\n * render: function() {\n * return (\n * \n * );\n * },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/master/RNTester/js/PanResponderExample.js)\n */\n\nvar PanResponder = {\n /**\n *\n * A graphical explanation of the touch data flow:\n *\n * +----------------------------+ +--------------------------------+\n * | ResponderTouchHistoryStore | |TouchHistoryMath |\n * +----------------------------+ +----------+---------------------+\n * |Global store of touchHistory| |Allocation-less math util |\n * |including activeness, start | |on touch history (centroids |\n * |position, prev/cur position.| |and multitouch movement etc) |\n * | | | |\n * +----^-----------------------+ +----^---------------------------+\n * | |\n * | (records relevant history |\n * | of touches relevant for |\n * | implementing higher level |\n * | gestures) |\n * | |\n * +----+-----------------------+ +----|---------------------------+\n * | ResponderEventPlugin | | | Your App/Component |\n * +----------------------------+ +----|---------------------------+\n * |Negotiates which view gets | Low level | | High level |\n * |onResponderMove events. | events w/ | +-+-------+ events w/ |\n * |Also records history into | touchHistory| | Pan | multitouch + |\n * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n * +----------------------------+ attached to | | | distance and |\n * each event | +---------+ velocity. |\n * | |\n * | |\n * +--------------------------------+\n *\n *\n *\n * Gesture that calculates cumulative movement over time in a way that just\n * \"does the right thing\" for multiple touches. The \"right thing\" is very\n * nuanced. When moving two touches in opposite directions, the cumulative\n * distance is zero in each dimension. When two touches move in parallel five\n * pixels in the same direction, the cumulative distance is five, not ten. If\n * two touches start, one moves five in a direction, then stops and the other\n * touch moves fives in the same direction, the cumulative distance is ten.\n *\n * This logic requires a kind of processing of time \"clusters\" of touch events\n * so that two touch moves that essentially occur in parallel but move every\n * other frame respectively, are considered part of the same movement.\n *\n * Explanation of some of the non-obvious fields:\n *\n * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n * invalid. If a move event has been observed, `(moveX, moveY)` is the\n * centroid of the most recently moved \"cluster\" of active touches.\n * (Currently all move have the same timeStamp, but later we should add some\n * threshold for what is considered to be \"moving\"). If a palm is\n * accidentally counted as a touch, but a finger is moving greatly, the palm\n * will move slightly, but we only want to count the single moving touch.\n * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n * responder.\n * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n * distance. Accounts for touch moves that are clustered together in time,\n * moving the same direction. Only valid when currently responder (otherwise,\n * it only represents the drag distance below the threshold).\n * - vx/vy: Velocity.\n */\n _initializeGestureState(gestureState) {\n gestureState.moveX = 0;\n gestureState.moveY = 0;\n gestureState.x0 = 0;\n gestureState.y0 = 0;\n gestureState.dx = 0;\n gestureState.dy = 0;\n gestureState.vx = 0;\n gestureState.vy = 0;\n gestureState.numberActiveTouches = 0; // All `gestureState` accounts for timeStamps up until:\n\n gestureState._accountsForMovesUpTo = 0;\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove(gestureState, touchHistory) {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);\n var movedAfter = gestureState._accountsForMovesUpTo;\n var prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var nextDX = gestureState.dx + (x - prevX);\n var nextDY = gestureState.dy + (y - prevY); // TODO: This must be filtered intelligently.\n\n var dt = touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\n gestureState.vx = (nextDX - gestureState.dx) / dt;\n gestureState.vy = (nextDY - gestureState.dy) / dt;\n gestureState.dx = nextDX;\n gestureState.dy = nextDY;\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n },\n\n /**\n * @param {object} config Enhanced versions of all of the responder callbacks\n * that provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks. For\n * example, the `config` object would look like:\n *\n * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onPanResponderReject: (e, gestureState) => {...}`\n * - `onPanResponderGrant: (e, gestureState) => {...}`\n * - `onPanResponderStart: (e, gestureState) => {...}`\n * - `onPanResponderEnd: (e, gestureState) => {...}`\n * - `onPanResponderRelease: (e, gestureState) => {...}`\n * - `onPanResponderMove: (e, gestureState) => {...}`\n * - `onPanResponderTerminate: (e, gestureState) => {...}`\n * - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n * - `onShouldBlockNativeResponder: (e, gestureState) => {...}`\n *\n * In general, for events that have capture equivalents, we update the\n * gestureState once in the capture phase and can use it in the bubble phase\n * as well.\n *\n * Be careful with onStartShould* callbacks. They only reflect updated\n * `gestureState` for start/end events that bubble/capture to the Node.\n * Once the node is the responder, you can rely on every start/end event\n * being processed by the gesture and `gestureState` being updated\n * accordingly. (numberActiveTouches) may not be totally accurate unless you\n * are the responder.\n */\n create(config) {\n var interactionState = {\n handle: null,\n shouldCancelClick: false,\n timeout: null\n };\n var gestureState = {\n // Useful for debugging\n stateID: Math.random(),\n moveX: 0,\n moveY: 0,\n x0: 0,\n y0: 0,\n dx: 0,\n dy: 0,\n vx: 0,\n vy: 0,\n numberActiveTouches: 0,\n _accountsForMovesUpTo: 0\n };\n var panHandlers = {\n onStartShouldSetResponder(event) {\n return config.onStartShouldSetPanResponder == null ? false : config.onStartShouldSetPanResponder(event, gestureState);\n },\n\n onMoveShouldSetResponder(event) {\n return config.onMoveShouldSetPanResponder == null ? false : config.onMoveShouldSetPanResponder(event, gestureState);\n },\n\n onStartShouldSetResponderCapture(event) {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (event.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState);\n }\n\n gestureState.numberActiveTouches = event.touchHistory.numberActiveTouches;\n return config.onStartShouldSetPanResponderCapture != null ? config.onStartShouldSetPanResponderCapture(event, gestureState) : false;\n },\n\n onMoveShouldSetResponderCapture(event) {\n var touchHistory = event.touchHistory; // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return false;\n }\n\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n\n return config.onMoveShouldSetPanResponderCapture ? config.onMoveShouldSetPanResponderCapture(event, gestureState) : false;\n },\n\n onResponderGrant(event) {\n if (!interactionState.handle) {\n interactionState.handle = InteractionManager.createInteractionHandle();\n }\n\n if (interactionState.timeout) {\n clearInteractionTimeout(interactionState);\n }\n\n interactionState.shouldCancelClick = true;\n gestureState.x0 = currentCentroidX(event.touchHistory);\n gestureState.y0 = currentCentroidY(event.touchHistory);\n gestureState.dx = 0;\n gestureState.dy = 0;\n\n if (config.onPanResponderGrant) {\n config.onPanResponderGrant(event, gestureState);\n } // TODO: t7467124 investigate if this can be removed\n\n\n return config.onShouldBlockNativeResponder == null ? true : config.onShouldBlockNativeResponder(event, gestureState);\n },\n\n onResponderReject(event) {\n clearInteractionHandle(interactionState, config.onPanResponderReject, event, gestureState);\n },\n\n onResponderRelease(event) {\n clearInteractionHandle(interactionState, config.onPanResponderRelease, event, gestureState);\n setInteractionTimeout(interactionState);\n\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderStart(event) {\n var touchHistory = event.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n\n if (config.onPanResponderStart) {\n config.onPanResponderStart(event, gestureState);\n }\n },\n\n onResponderMove(event) {\n var touchHistory = event.touchHistory; // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return;\n } // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n\n\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n\n if (config.onPanResponderMove) {\n config.onPanResponderMove(event, gestureState);\n }\n },\n\n onResponderEnd(event) {\n var touchHistory = event.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n clearInteractionHandle(interactionState, config.onPanResponderEnd, event, gestureState);\n },\n\n onResponderTerminate(event) {\n clearInteractionHandle(interactionState, config.onPanResponderTerminate, event, gestureState);\n setInteractionTimeout(interactionState);\n\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderTerminationRequest(event) {\n return config.onPanResponderTerminationRequest == null ? true : config.onPanResponderTerminationRequest(event, gestureState);\n },\n\n // We do not want to trigger 'click' activated gestures or native behaviors\n // on any pan target that is under a mouse cursor when it is released.\n // Browsers will natively cancel 'click' events on a target if a non-mouse\n // active pointer moves.\n onClickCapture: event => {\n if (interactionState.shouldCancelClick === true) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n };\n return {\n panHandlers,\n\n getInteractionHandle() {\n return interactionState.handle;\n }\n\n };\n }\n\n};\n\nfunction clearInteractionHandle(interactionState, callback, event, gestureState) {\n if (interactionState.handle) {\n InteractionManager.clearInteractionHandle(interactionState.handle);\n interactionState.handle = null;\n }\n\n if (callback) {\n callback(event, gestureState);\n }\n}\n\nfunction clearInteractionTimeout(interactionState) {\n clearTimeout(interactionState.timeout);\n}\n\nfunction setInteractionTimeout(interactionState) {\n interactionState.timeout = setTimeout(() => {\n interactionState.shouldCancelClick = false;\n }, 250);\n}\n\nexport default PanResponder;","import PanResponder from '../../vendor/react-native/PanResponder';\nexport default PanResponder;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport invariant from 'fbjs/lib/invariant';\n\nclass Share {\n static share(content, options) {\n if (options === void 0) {\n options = {};\n }\n\n invariant(typeof content === 'object' && content !== null, 'Content to share must be a valid object');\n invariant(typeof content.url === 'string' || typeof content.message === 'string', 'At least one of URL and message is required');\n invariant(typeof options === 'object' && options !== null, 'Options must be a valid object');\n invariant(!content.title || typeof content.title === 'string', 'Invalid title: title should be a string.');\n\n if (window.navigator.share !== undefined) {\n return window.navigator.share({\n title: content.title,\n text: content.message,\n url: content.url\n });\n } else {\n return Promise.reject(new Error('Share is not supported in this browser'));\n }\n }\n /**\n * The content was successfully shared.\n */\n\n\n static get sharedAction() {\n return 'sharedAction';\n }\n /**\n * The dialog has been dismissed.\n * @platform ios\n */\n\n\n static get dismissedAction() {\n return 'dismissedAction';\n }\n\n}\n\nexport default Share;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar vibrate = pattern => {\n if ('vibrate' in window.navigator) {\n window.navigator.vibrate(pattern);\n }\n};\n\nvar Vibration = {\n cancel() {\n vibrate(0);\n },\n\n vibrate(pattern) {\n if (pattern === void 0) {\n pattern = 400;\n }\n\n vibrate(pattern);\n }\n\n};\nexport default Vibration;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport TouchableOpacity from '../TouchableOpacity';\nimport Text from '../Text';\nvar Button = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var accessibilityLabel = props.accessibilityLabel,\n color = props.color,\n disabled = props.disabled,\n onPress = props.onPress,\n testID = props.testID,\n title = props.title;\n return /*#__PURE__*/React.createElement(TouchableOpacity, {\n accessibilityLabel: accessibilityLabel,\n accessibilityRole: \"button\",\n disabled: disabled,\n focusable: !disabled,\n onPress: onPress,\n ref: forwardedRef,\n style: [styles.button, color && {\n backgroundColor: color\n }, disabled && styles.buttonDisabled],\n testID: testID\n }, /*#__PURE__*/React.createElement(Text, {\n style: [styles.text, disabled && styles.textDisabled]\n }, title));\n});\nButton.displayName = 'Button';\nvar styles = StyleSheet.create({\n button: {\n backgroundColor: '#2196F3',\n borderRadius: 2\n },\n text: {\n color: '#fff',\n fontWeight: '500',\n padding: 8,\n textAlign: 'center',\n textTransform: 'uppercase'\n },\n buttonDisabled: {\n backgroundColor: '#dfdfdf'\n },\n textDisabled: {\n color: '#a1a1a1'\n }\n});\nexport default Button;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"accessibilityReadOnly\", \"color\", \"disabled\", \"onChange\", \"onValueChange\", \"style\", \"value\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nvar CheckBox = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var accessibilityReadOnly = props.accessibilityReadOnly,\n color = props.color,\n disabled = props.disabled,\n onChange = props.onChange,\n onValueChange = props.onValueChange,\n style = props.style,\n value = props.value,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n function handleChange(event) {\n var value = event.nativeEvent.target.checked;\n event.nativeEvent.value = value;\n onChange && onChange(event);\n onValueChange && onValueChange(value);\n }\n\n var fakeControl = /*#__PURE__*/React.createElement(View, {\n style: [styles.fakeControl, value && styles.fakeControlChecked, // custom color\n value && color && {\n backgroundColor: color,\n borderColor: color\n }, disabled && styles.fakeControlDisabled, value && disabled && styles.fakeControlCheckedAndDisabled]\n });\n var nativeControl = createElement('input', {\n checked: value,\n disabled: disabled,\n onChange: handleChange,\n readOnly: accessibilityReadOnly,\n ref: forwardedRef,\n style: [styles.nativeControl, styles.cursorInherit],\n type: 'checkbox'\n });\n return /*#__PURE__*/React.createElement(View, _extends({}, other, {\n accessibilityDisabled: disabled,\n accessibilityReadOnly: accessibilityReadOnly,\n style: [styles.root, style, disabled && styles.cursorDefault]\n }), fakeControl, nativeControl);\n});\nCheckBox.displayName = 'CheckBox';\nvar styles = StyleSheet.create({\n root: {\n cursor: 'pointer',\n height: 16,\n userSelect: 'none',\n width: 16\n },\n cursorDefault: {\n cursor: 'default'\n },\n cursorInherit: {\n cursor: 'inherit'\n },\n fakeControl: {\n alignItems: 'center',\n backgroundColor: '#fff',\n borderColor: '#657786',\n borderRadius: 2,\n borderStyle: 'solid',\n borderWidth: 2,\n height: '100%',\n justifyContent: 'center',\n width: '100%'\n },\n fakeControlChecked: {\n backgroundColor: '#009688',\n backgroundImage: 'url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K\")',\n backgroundRepeat: 'no-repeat',\n borderColor: '#009688'\n },\n fakeControlDisabled: {\n borderColor: '#CCD6DD'\n },\n fakeControlCheckedAndDisabled: {\n backgroundColor: '#AAB8C2',\n borderColor: '#AAB8C2'\n },\n nativeControl: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n height: '100%',\n margin: 0,\n appearance: 'none',\n padding: 0,\n width: '100%'\n })\n});\nexport default CheckBox;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"style\", \"imageStyle\", \"imageRef\"];\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport Image from '../Image';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nvar emptyObject = {};\n/**\n * Very simple drop-in replacement for which supports nesting views.\n */\n\nvar ImageBackground = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var children = props.children,\n _props$style = props.style,\n style = _props$style === void 0 ? emptyObject : _props$style,\n imageStyle = props.imageStyle,\n imageRef = props.imageRef,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var _StyleSheet$flatten = StyleSheet.flatten(style),\n height = _StyleSheet$flatten.height,\n width = _StyleSheet$flatten.width;\n\n return /*#__PURE__*/React.createElement(View, {\n ref: forwardedRef,\n style: style\n }, /*#__PURE__*/React.createElement(Image, _extends({}, rest, {\n ref: imageRef,\n style: [{\n // Temporary Workaround:\n // Current (imperfect yet) implementation of overwrites width and height styles\n // (which is not quite correct), and these styles conflict with explicitly set styles\n // of and with our internal layout model here.\n // So, we have to proxy/reapply these styles explicitly for actual component.\n // This workaround should be removed after implementing proper support of\n // intrinsic content size of the .\n width,\n height,\n zIndex: -1\n }, StyleSheet.absoluteFill, imageStyle]\n })), children);\n});\nImageBackground.displayName = 'ImageBackground';\nexport default ImageBackground;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"behavior\", \"contentContainerStyle\", \"keyboardVerticalOffset\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport View from '../View';\n\nclass KeyboardAvoidingView extends React.Component {\n constructor() {\n super(...arguments);\n this.frame = null;\n\n this.onLayout = event => {\n this.frame = event.nativeEvent.layout;\n };\n }\n\n relativeKeyboardHeight(keyboardFrame) {\n var frame = this.frame;\n\n if (!frame || !keyboardFrame) {\n return 0;\n }\n\n var keyboardY = keyboardFrame.screenY - (this.props.keyboardVerticalOffset || 0);\n return Math.max(frame.y + frame.height - keyboardY, 0);\n }\n\n onKeyboardChange(event) {}\n\n render() {\n var _this$props = this.props,\n behavior = _this$props.behavior,\n contentContainerStyle = _this$props.contentContainerStyle,\n keyboardVerticalOffset = _this$props.keyboardVerticalOffset,\n rest = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n return /*#__PURE__*/React.createElement(View, _extends({\n onLayout: this.onLayout\n }, rest));\n }\n\n}\n\nexport default KeyboardAvoidingView;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"enabled\", \"onValueChange\", \"selectedValue\", \"style\", \"testID\", \"itemStyle\", \"mode\", \"prompt\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport createElement from '../createElement';\nimport useMergeRefs from '../../modules/useMergeRefs';\nimport usePlatformMethods from '../../modules/usePlatformMethods';\nimport PickerItem from './PickerItem';\nimport StyleSheet from '../StyleSheet';\nvar Picker = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var children = props.children,\n enabled = props.enabled,\n onValueChange = props.onValueChange,\n selectedValue = props.selectedValue,\n style = props.style,\n testID = props.testID,\n itemStyle = props.itemStyle,\n mode = props.mode,\n prompt = props.prompt,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n var hostRef = React.useRef(null);\n\n function handleChange(e) {\n var _e$target = e.target,\n selectedIndex = _e$target.selectedIndex,\n value = _e$target.value;\n\n if (onValueChange) {\n onValueChange(value, selectedIndex);\n }\n } // $FlowFixMe\n\n\n var supportedProps = _objectSpread({\n children,\n disabled: enabled === false ? true : undefined,\n onChange: handleChange,\n style: [styles.initial, style],\n testID,\n value: selectedValue\n }, other);\n\n var platformMethodsRef = usePlatformMethods(supportedProps);\n var setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);\n supportedProps.ref = setRef;\n return createElement('select', supportedProps);\n}); // $FlowFixMe\n\nPicker.Item = PickerItem;\nvar styles = StyleSheet.create({\n initial: {\n fontFamily: 'System',\n fontSize: 'inherit',\n margin: 0\n }\n});\nexport default Picker;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport createElement from '../createElement';\nexport default function PickerItem(props) {\n var color = props.color,\n label = props.label,\n testID = props.testID,\n value = props.value;\n var style = {\n color\n };\n return createElement('option', {\n children: label,\n style,\n testID,\n value\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"color\", \"indeterminate\", \"progress\", \"trackColor\", \"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nvar ProgressBar = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _props$color = props.color,\n color = _props$color === void 0 ? '#1976D2' : _props$color,\n _props$indeterminate = props.indeterminate,\n indeterminate = _props$indeterminate === void 0 ? false : _props$indeterminate,\n _props$progress = props.progress,\n progress = _props$progress === void 0 ? 0 : _props$progress,\n _props$trackColor = props.trackColor,\n trackColor = _props$trackColor === void 0 ? 'transparent' : _props$trackColor,\n style = props.style,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n var percentageProgress = progress * 100;\n var width = indeterminate ? '25%' : percentageProgress + \"%\";\n return /*#__PURE__*/React.createElement(View, _extends({}, other, {\n accessibilityRole: \"progressbar\",\n accessibilityValueMax: 100,\n accessibilityValueMin: 0,\n accessibilityValueNow: indeterminate ? null : percentageProgress,\n ref: ref,\n style: [styles.track, style, {\n backgroundColor: trackColor\n }]\n }), /*#__PURE__*/React.createElement(View, {\n style: [{\n backgroundColor: color,\n width\n }, styles.progress, indeterminate && styles.animation]\n }));\n});\nProgressBar.displayName = 'ProgressBar';\nvar styles = StyleSheet.create({\n track: {\n forcedColorAdjust: 'none',\n height: 5,\n overflow: 'hidden',\n userSelect: 'none',\n zIndex: 0\n },\n progress: {\n forcedColorAdjust: 'none',\n height: '100%',\n zIndex: -1\n },\n animation: {\n animationDuration: '1s',\n animationKeyframes: [{\n '0%': {\n transform: [{\n translateX: '-100%'\n }]\n },\n '100%': {\n transform: [{\n translateX: '400%'\n }]\n }\n }],\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite'\n }\n});\nexport default ProgressBar;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"style\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport StyleSheet from '../StyleSheet';\nimport View from '../View';\nimport canUseDOM from '../../modules/canUseDom';\n\nvar cssFunction = function () {\n if (canUseDOM && window.CSS && window.CSS.supports && window.CSS.supports('top: constant(safe-area-inset-top)')) {\n return 'constant';\n }\n\n return 'env';\n}();\n\nvar SafeAreaView = /*#__PURE__*/React.forwardRef((props, ref) => {\n var style = props.style,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(View, _extends({}, rest, {\n ref: ref,\n style: StyleSheet.compose(styles.root, style)\n }));\n});\nSafeAreaView.displayName = 'SafeAreaView';\nvar styles = StyleSheet.create({\n root: {\n paddingTop: cssFunction + \"(safe-area-inset-top)\",\n paddingRight: cssFunction + \"(safe-area-inset-right)\",\n paddingBottom: cssFunction + \"(safe-area-inset-bottom)\",\n paddingLeft: cssFunction + \"(safe-area-inset-left)\"\n }\n});\nexport default SafeAreaView;","/* eslint-disable */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * From React 16.0.0\n */\nimport invariant from 'fbjs/lib/invariant';\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n instance.destructor();\n\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = twoArgumentPooler;\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\n\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n twoArgumentPooler: twoArgumentPooler\n};\nexport default PooledClass;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport PooledClass from '../../vendor/react-native/PooledClass';\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n/**\n * PooledClass representing the bounding rectangle of a region.\n */\n\nfunction BoundingDimensions(width, height) {\n this.width = width;\n this.height = height;\n}\n\nBoundingDimensions.prototype.destructor = function () {\n this.width = null;\n this.height = null;\n};\n\nBoundingDimensions.getPooledFromElement = function (element) {\n return BoundingDimensions.getPooled(element.offsetWidth, element.offsetHeight);\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\nexport default BoundingDimensions;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport PooledClass from '../../vendor/react-native/PooledClass';\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\nfunction Position(left, top) {\n this.left = left;\n this.top = top;\n}\n\nPosition.prototype.destructor = function () {\n this.left = null;\n this.top = null;\n};\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\nexport default Position;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport AccessibilityUtil from '../../modules/AccessibilityUtil';\nimport BoundingDimensions from './BoundingDimensions';\nimport findNodeHandle from '../findNodeHandle';\nimport normalizeColor from 'normalize-css-color';\nimport Position from './Position';\nimport React from 'react';\nimport UIManager from '../UIManager';\nimport View from '../View';\n\nvar extractSingleTouch = nativeEvent => {\n var touches = nativeEvent.touches;\n var changedTouches = nativeEvent.changedTouches;\n var hasTouches = touches && touches.length > 0;\n var hasChangedTouches = changedTouches && changedTouches.length > 0;\n return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n};\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n * of the element, and no other element (like scroller) has \"stolen\" touch\n * lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the element, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n * getInitialState: function() {\n * return merge(this.touchableGetInitialState(), yourComponentState);\n * }\n *\n * - Choose the rendered component who's touches should start the interactive\n * sequence. On that rendered node, forward all `Touchable` responder\n * handlers. You can choose any rendered node you like. Choose a node whose\n * hit target you'd like to instigate the interaction sequence:\n *\n * // In render function:\n * return (\n * \n * \n * Even though the hit detection/interactions are triggered by the\n * wrapping (typically larger) node, we usually end up implementing\n * custom logic that highlights this inner one.\n * \n * \n * );\n *\n * - You may set up your own handlers for each of these events, so long as you\n * also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n * feedback to the user. See documentation for each of these class methods\n * that you should implement.\n *\n * touchableHandlePress: function() {\n * this.performBounceAnimation(); // or whatever you want to do.\n * },\n * touchableHandleActivePressIn: function() {\n * this.beginHighlighting(...); // Whatever you like to convey activation\n * },\n * touchableHandleActivePressOut: function() {\n * this.endHighlighting(...); // Whatever you like to convey deactivation\n * },\n *\n * - There are more advanced methods you can implement (see documentation below):\n * touchableGetHighlightDelayMS: function() {\n * return 20;\n * }\n * // In practice, *always* use a predeclared constant (conserve memory).\n * touchableGetPressRectOffset: function() {\n * return {top: 20, left: 20, right: 20, bottom: 100};\n * }\n */\n\n/**\n * Touchable states.\n */\n\n\nvar States = {\n NOT_RESPONDER: 'NOT_RESPONDER',\n // Not the responder\n RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN',\n // Responder, inactive, in the `PressRect`\n RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT',\n // Responder, inactive, out of `PressRect`\n RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN',\n // Responder, active, in the `PressRect`\n RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT',\n // Responder, active, out of `PressRect`\n RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n // Responder, active, in the `PressRect`, after long press threshold\n RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n // Responder, active, out of `PressRect`, after long press threshold\n ERROR: 'ERROR'\n};\n\n/*\n * Quick lookup map for states that are considered to be \"active\"\n */\nvar baseStatesConditions = {\n NOT_RESPONDER: false,\n RESPONDER_INACTIVE_PRESS_IN: false,\n RESPONDER_INACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_PRESS_IN: false,\n RESPONDER_ACTIVE_PRESS_OUT: false,\n RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n ERROR: false\n};\n\nvar IsActive = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true\n});\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\n\n\nvar IsPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n\nvar IsLongPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n/**\n * Inputs to the state machine.\n */\n\n\nvar Signals = {\n DELAY: 'DELAY',\n RESPONDER_GRANT: 'RESPONDER_GRANT',\n RESPONDER_RELEASE: 'RESPONDER_RELEASE',\n RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',\n ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',\n LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',\n LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED'\n};\n\n/**\n * Mapping from States x Signals => States\n */\nvar Transitions = {\n NOT_RESPONDER: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.ERROR,\n RESPONDER_TERMINATED: States.ERROR,\n ENTER_PRESS_RECT: States.ERROR,\n LEAVE_PRESS_RECT: States.ERROR,\n LONG_PRESS_DETECTED: States.ERROR\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR\n },\n error: {\n DELAY: States.NOT_RESPONDER,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.NOT_RESPONDER,\n LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n LONG_PRESS_DETECTED: States.NOT_RESPONDER\n }\n}; // ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\n\nvar HIGHLIGHT_DELAY_MS = 130;\nvar PRESS_EXPAND_PX = 20;\nvar LONG_PRESS_THRESHOLD = 500;\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10; // Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * +--------------------------+\n * | | - \"Start\" events in `HitRect` cause `HitRect`\n * | +--------------------+ | to become the responder.\n * | | +--------------+ | | - `HitRect` is typically expanded around\n * | | | | | | the `VisualRect`, but shifted downward.\n * | | | VisualRect | | | - After pressing down, after some delay,\n * | | | | | | and before letting up, the Visual React\n * | | +--------------+ | | will become \"active\". This makes it eligible\n * | | HitRect | | for being highlighted (so long as the\n * | +--------------------+ | press remains in the `PressRect`).\n * | PressRect o |\n * +----------------------|---+\n * Out Region |\n * +-----+ This gap between the `HitRect` and\n * `PressRect` allows a touch to move far away\n * from the original hit rect, and remain\n * highlighted, and eligible for a \"Press\".\n * Customize this via\n * `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n * +\n * | RESPONDER_GRANT (HitRect)\n * v\n * +---------------------------+ DELAY +-------------------------+ T + DELAY +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+ +-------------------------+ +------------------------------+\n * + ^ + ^ + ^\n * |LEAVE_ |ENTER_ |LEAVE_ |ENTER_ |LEAVE_ |ENTER_\n * |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT\n * | | | | | |\n * v + v + v +\n * +----------------------------+ DELAY +--------------------------+ +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT| |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+ +--------------------------+ +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\n\nvar TouchableMixin = {\n // HACK (part 1): basic support for touchable interactions using a keyboard\n componentDidMount: function componentDidMount() {\n this._touchableNode = findNodeHandle(this);\n\n if (this._touchableNode && this._touchableNode.addEventListener) {\n this._touchableBlurListener = e => {\n if (this._isTouchableKeyboardActive) {\n if (this.state.touchable.touchState && this.state.touchable.touchState !== States.NOT_RESPONDER) {\n this.touchableHandleResponderTerminate({\n nativeEvent: e\n });\n }\n\n this._isTouchableKeyboardActive = false;\n }\n };\n\n this._touchableNode.addEventListener('blur', this._touchableBlurListener);\n }\n },\n\n /**\n * Clear all timeouts on unmount\n */\n componentWillUnmount: function componentWillUnmount() {\n if (this._touchableNode && this._touchableNode.addEventListener) {\n this._touchableNode.removeEventListener('blur', this._touchableBlurListener);\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout); // Clear DOM nodes\n\n this.pressInLocation = null;\n this.state.touchable.responderID = null;\n this._touchableNode = null;\n },\n\n /**\n * It's prefer that mixins determine state in this way, having the class\n * explicitly mix the state in the one and only `getInitialState` method.\n *\n * @return {object} State object to be placed inside of\n * `this.state.touchable`.\n */\n touchableGetInitialState: function touchableGetInitialState() {\n return {\n touchable: {\n touchState: undefined,\n responderID: null\n }\n };\n },\n // ==== Hooks to Gesture Responder system ====\n\n /**\n * Must return true if embedded in a native platform scroll view.\n */\n touchableHandleResponderTerminationRequest: function touchableHandleResponderTerminationRequest() {\n return !this.props.rejectResponderTermination;\n },\n\n /**\n * Must return true to start the process of `Touchable`.\n */\n touchableHandleStartShouldSetResponder: function touchableHandleStartShouldSetResponder() {\n return !this.props.disabled;\n },\n\n /**\n * Return true to cancel press on long press.\n */\n touchableLongPressCancelsPress: function touchableLongPressCancelsPress() {\n return true;\n },\n\n /**\n * Place as callback for a DOM element's `onResponderGrant` event.\n * @param {SyntheticEvent} e Synthetic event from event system.\n *\n */\n touchableHandleResponderGrant: function touchableHandleResponderGrant(e) {\n var dispatchID = e.currentTarget; // Since e is used in a callback invoked on another event loop\n // (as in setTimeout etc), we need to call e.persist() on the\n // event to make sure it doesn't get reused in the event object pool.\n\n e.persist();\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n this.pressOutDelayTimeout = null;\n this.state.touchable.touchState = States.NOT_RESPONDER;\n this.state.touchable.responderID = dispatchID;\n\n this._receiveSignal(Signals.RESPONDER_GRANT, e);\n\n var delayMS = this.touchableGetHighlightDelayMS !== undefined ? Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n\n if (delayMS !== 0) {\n this.touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);\n } else {\n this._handleDelay(e);\n }\n\n var longDelayMS = this.touchableGetLongPressDelayMS !== undefined ? Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this.longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderRelease` event.\n */\n touchableHandleResponderRelease: function touchableHandleResponderRelease(e) {\n this.pressInLocation = null;\n\n this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderTerminate` event.\n */\n touchableHandleResponderTerminate: function touchableHandleResponderTerminate(e) {\n this.pressInLocation = null;\n\n this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderMove` event.\n */\n touchableHandleResponderMove: function touchableHandleResponderMove(e) {\n // Measurement may not have returned yet.\n if (!this.state.touchable.positionOnActivate) {\n return;\n }\n\n var positionOnActivate = this.state.touchable.positionOnActivate;\n var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n var pressRectOffset = this.touchableGetPressRectOffset ? this.touchableGetPressRectOffset() : {\n left: PRESS_EXPAND_PX,\n right: PRESS_EXPAND_PX,\n top: PRESS_EXPAND_PX,\n bottom: PRESS_EXPAND_PX\n };\n var pressExpandLeft = pressRectOffset.left;\n var pressExpandTop = pressRectOffset.top;\n var pressExpandRight = pressRectOffset.right;\n var pressExpandBottom = pressRectOffset.bottom;\n var hitSlop = this.touchableGetHitSlop ? this.touchableGetHitSlop() : null;\n\n if (hitSlop) {\n pressExpandLeft += hitSlop.left || 0;\n pressExpandTop += hitSlop.top || 0;\n pressExpandRight += hitSlop.right || 0;\n pressExpandBottom += hitSlop.bottom || 0;\n }\n\n var touch = extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n\n if (this.pressInLocation) {\n var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n var isTouchWithinActive = pageX > positionOnActivate.left - pressExpandLeft && pageY > positionOnActivate.top - pressExpandTop && pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight && pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom;\n\n if (isTouchWithinActive) {\n var prevState = this.state.touchable.touchState;\n\n this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n\n var curState = this.state.touchable.touchState;\n\n if (curState === States.RESPONDER_INACTIVE_PRESS_IN && prevState !== States.RESPONDER_INACTIVE_PRESS_IN) {\n // fix for t7967420\n this._cancelLongPressDelayTimeout();\n }\n } else {\n this._cancelLongPressDelayTimeout();\n\n this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n }\n },\n\n /**\n * Invoked when the item receives focus. Mixers might override this to\n * visually distinguish the `VisualRect` so that the user knows that it\n * currently has the focus. Most platforms only support a single element being\n * focused at a time, in which case there may have been a previously focused\n * element that was blurred just prior to this. This can be overridden when\n * using `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n */\n touchableHandleFocus: function touchableHandleFocus(e) {\n this.props.onFocus && this.props.onFocus(e);\n },\n\n /**\n * Invoked when the item loses focus. Mixers might override this to\n * visually distinguish the `VisualRect` so that the user knows that it\n * no longer has focus. Most platforms only support a single element being\n * focused at a time, in which case the focus may have moved to another.\n * This can be overridden when using\n * `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n */\n touchableHandleBlur: function touchableHandleBlur(e) {\n this.props.onBlur && this.props.onBlur(e);\n },\n // ==== Abstract Application Callbacks ====\n\n /**\n * Invoked when the item should be highlighted. Mixers should implement this\n * to visually distinguish the `VisualRect` so that the user knows that\n * releasing a touch will result in a \"selection\" (analog to click).\n *\n * @abstract\n * touchableHandleActivePressIn: function,\n */\n\n /**\n * Invoked when the item is \"active\" (in that it is still eligible to become\n * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n * again and the mixer should probably highlight the `VisualRect` again. This\n * event will not fire on an `touchEnd/mouseUp` event, only move events while\n * the user is depressing the mouse/touch.\n *\n * @abstract\n * touchableHandleActivePressOut: function\n */\n\n /**\n * Invoked when the item is \"selected\" - meaning the interaction ended by\n * letting up while the item was either in the state\n * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n *\n * @abstract\n * touchableHandlePress: function\n */\n\n /**\n * Invoked when the item is long pressed - meaning the interaction ended by\n * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n * be called as it normally is. If `touchableHandleLongPress` is provided, by\n * default any `touchableHandlePress` callback will not be invoked. To\n * override this default behavior, override `touchableLongPressCancelsPress`\n * to return false. As a result, `touchableHandlePress` will be called when\n * lifting up, even if `touchableHandleLongPress` has also been called.\n *\n * @abstract\n * touchableHandleLongPress: function\n */\n\n /**\n * Returns the number of millis to wait before triggering a highlight.\n *\n * @abstract\n * touchableGetHighlightDelayMS: function\n */\n\n /**\n * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n * numbers mean the size expands outwards.\n *\n * @abstract\n * touchableGetPressRectOffset: function\n */\n // ==== Internal Logic ====\n\n /**\n * Measures the `HitRect` node on activation. The Bounding rectangle is with\n * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n * should result in points that are in the same coordinate system as an\n * event's `globalX/globalY` data values.\n *\n * - Consider caching this for the lifetime of the component, or possibly\n * being able to share this cache between any `ScrollMap` view.\n *\n * @sideeffects\n * @private\n */\n _remeasureMetricsOnActivation: function _remeasureMetricsOnActivation() {\n var tag = this.state.touchable.responderID;\n\n if (tag == null) {\n return;\n }\n\n UIManager.measure(tag, this._handleQueryLayout);\n },\n _handleQueryLayout: function _handleQueryLayout(l, t, w, h, globalX, globalY) {\n //don't do anything UIManager failed to measure node\n if (!l && !t && !w && !h && !globalX && !globalY) {\n return;\n }\n\n this.state.touchable.positionOnActivate && Position.release(this.state.touchable.positionOnActivate);\n this.state.touchable.dimensionsOnActivate && // $FlowFixMe\n BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY); // $FlowFixMe\n\n this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n },\n _handleDelay: function _handleDelay(e) {\n this.touchableDelayTimeout = null;\n\n this._receiveSignal(Signals.DELAY, e);\n },\n _handleLongDelay: function _handleLongDelay(e) {\n this.longPressDelayTimeout = null;\n var curState = this.state.touchable.touchState;\n\n if (curState !== States.RESPONDER_ACTIVE_PRESS_IN && curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN) {\n console.error('Attempted to transition from state `' + curState + '` to `' + States.RESPONDER_ACTIVE_LONG_PRESS_IN + '`, which is not supported. This is ' + 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.');\n } else {\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n }\n },\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n *\n * @param {Signals} signal State machine signal.\n * @throws Error if invalid state transition or unrecognized signal.\n * @sideeffects\n */\n _receiveSignal: function _receiveSignal(signal, e) {\n var responderID = this.state.touchable.responderID;\n var curState = this.state.touchable.touchState;\n var nextState = Transitions[curState] && Transitions[curState][signal];\n\n if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n return;\n }\n\n if (!nextState) {\n throw new Error('Unrecognized signal `' + signal + '` or state `' + curState + '` for Touchable responder `' + responderID + '`');\n }\n\n if (nextState === States.ERROR) {\n throw new Error('Touchable cannot transition from `' + curState + '` to `' + signal + '` for responder `' + responderID + '`');\n }\n\n if (curState !== nextState) {\n this._performSideEffectsForTransition(curState, nextState, signal, e);\n\n this.state.touchable.touchState = nextState;\n }\n },\n _cancelLongPressDelayTimeout: function _cancelLongPressDelayTimeout() {\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.longPressDelayTimeout = null;\n },\n _isHighlight: function _isHighlight(state) {\n return state === States.RESPONDER_ACTIVE_PRESS_IN || state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n },\n _savePressInLocation: function _savePressInLocation(e) {\n var touch = extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n var locationX = touch && touch.locationX;\n var locationY = touch && touch.locationY;\n this.pressInLocation = {\n pageX,\n pageY,\n locationX,\n locationY\n };\n },\n _getDistanceBetweenPoints: function _getDistanceBetweenPoints(aX, aY, bX, bY) {\n var deltaX = aX - bX;\n var deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n },\n\n /**\n * Will perform a transition between touchable states, and identify any\n * highlighting or unhighlighting that must be performed for this particular\n * transition.\n *\n * @param {States} curState Current Touchable state.\n * @param {States} nextState Next Touchable state.\n * @param {Signal} signal Signal that triggered the transition.\n * @param {Event} e Native event.\n * @sideeffects\n */\n _performSideEffectsForTransition: function _performSideEffectsForTransition(curState, nextState, signal, e) {\n var curIsHighlight = this._isHighlight(curState);\n\n var newIsHighlight = this._isHighlight(nextState);\n\n var isFinalSignal = signal === Signals.RESPONDER_TERMINATED || signal === Signals.RESPONDER_RELEASE;\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n var isInitialTransition = curState === States.NOT_RESPONDER && nextState === States.RESPONDER_INACTIVE_PRESS_IN;\n var isActiveTransition = !IsActive[curState] && IsActive[nextState];\n\n if (isInitialTransition || isActiveTransition) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._startHighlight(e);\n } else if (!newIsHighlight && curIsHighlight) {\n this._endHighlight(e);\n }\n\n if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n var hasLongPressHandler = !!this.props.onLongPress;\n var pressIsLongButStillCallOnPress = IsLongPressingIn[curState] && ( // We *are* long pressing.. // But either has no long handler\n !hasLongPressHandler || !this.touchableLongPressCancelsPress()); // or we're told to ignore it.\n\n var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n\n if (shouldInvokePress && this.touchableHandlePress) {\n if (!newIsHighlight && !curIsHighlight) {\n // we never highlighted because of delay, but we should highlight now\n this._startHighlight(e);\n\n this._endHighlight(e);\n }\n\n this.touchableHandlePress(e);\n }\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.touchableDelayTimeout = null;\n },\n _playTouchSound: function _playTouchSound() {\n UIManager.playTouchSound();\n },\n _startHighlight: function _startHighlight(e) {\n this._savePressInLocation(e);\n\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n },\n _endHighlight: function _endHighlight(e) {\n if (this.touchableHandleActivePressOut) {\n if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n this.pressOutDelayTimeout = setTimeout(() => {\n this.touchableHandleActivePressOut(e);\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut(e);\n }\n }\n },\n // HACK (part 2): basic support for touchable interactions using a keyboard (including\n // delays and longPress)\n touchableHandleKeyEvent: function touchableHandleKeyEvent(e) {\n var type = e.type,\n key = e.key;\n\n if (key === 'Enter' || key === ' ') {\n if (type === 'keydown') {\n if (!this._isTouchableKeyboardActive) {\n if (!this.state.touchable.touchState || this.state.touchable.touchState === States.NOT_RESPONDER) {\n this.touchableHandleResponderGrant(e);\n this._isTouchableKeyboardActive = true;\n }\n }\n } else if (type === 'keyup') {\n if (this._isTouchableKeyboardActive) {\n if (this.state.touchable.touchState && this.state.touchable.touchState !== States.NOT_RESPONDER) {\n this.touchableHandleResponderRelease(e);\n this._isTouchableKeyboardActive = false;\n }\n }\n }\n\n e.stopPropagation(); // prevent the default behaviour unless the Touchable functions as a link\n // and Enter is pressed\n\n if (!(key === 'Enter' && AccessibilityUtil.propsToAriaRole(this.props) === 'link')) {\n e.preventDefault();\n }\n }\n },\n withoutDefaultFocusAndBlur: {}\n};\n/**\n * Provide an optional version of the mixin where `touchableHandleFocus` and\n * `touchableHandleBlur` can be overridden. This allows appropriate defaults to\n * be set on TV platforms, without breaking existing implementations of\n * `Touchable`.\n */\n\nvar touchableHandleFocus = TouchableMixin.touchableHandleFocus,\n touchableHandleBlur = TouchableMixin.touchableHandleBlur,\n TouchableMixinWithoutDefaultFocusAndBlur = _objectWithoutPropertiesLoose(TouchableMixin, [\"touchableHandleFocus\", \"touchableHandleBlur\"]);\n\nTouchableMixin.withoutDefaultFocusAndBlur = TouchableMixinWithoutDefaultFocusAndBlur;\nvar Touchable = {\n Mixin: TouchableMixin,\n TOUCH_TARGET_DEBUG: false,\n // Highlights all touchable targets. Toggle with Inspector.\n\n /**\n * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n */\n renderDebugView: _ref => {\n var color = _ref.color,\n hitSlop = _ref.hitSlop;\n\n if (!Touchable.TOUCH_TARGET_DEBUG) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!');\n }\n\n var debugHitSlopStyle = {};\n hitSlop = hitSlop || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n\n for (var key in hitSlop) {\n debugHitSlopStyle[key] = -hitSlop[key];\n }\n\n var normalizedColor = normalizeColor(color);\n\n if (typeof normalizedColor !== 'number') {\n return null;\n }\n\n var hexColor = '#' + ('00000000' + normalizedColor.toString(16)).substr(-8);\n return /*#__PURE__*/React.createElement(View, {\n pointerEvents: \"none\",\n style: _objectSpread({\n position: 'absolute',\n borderColor: hexColor.slice(0, -2) + '55',\n // More opaque\n borderWidth: 1,\n borderStyle: 'dashed',\n backgroundColor: hexColor.slice(0, -2) + '0F'\n }, debugHitSlopStyle)\n });\n }\n};\nexport default Touchable;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport View from '../../exports/View';\nimport React from 'react';\n/**\n * Common implementation for a simple stubbed view.\n */\n\nclass UnimplementedView extends React.Component {\n setNativeProps() {// Do nothing.\n }\n\n render() {\n return /*#__PURE__*/React.createElement(View, {\n style: [unimplementedViewStyles, this.props.style]\n }, this.props.children);\n }\n\n}\n\nvar unimplementedViewStyles = process.env.NODE_ENV !== 'production' ? {\n alignSelf: 'flex-start',\n borderColor: 'red',\n borderWidth: 1\n} : {};\nexport default UnimplementedView;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport UnimplementedView from '../../modules/UnimplementedView';\nexport default UnimplementedView;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport VirtualizedList from '../../vendor/react-native/VirtualizedList';\nexport default VirtualizedList;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport React from 'react';\nimport UnimplementedView from '../../modules/UnimplementedView';\n\nfunction YellowBox(props) {\n return /*#__PURE__*/React.createElement(UnimplementedView, props);\n}\n\nYellowBox.ignoreWarnings = () => {};\n\nexport default YellowBox;","/**\n * Copyright (c) 2016-present, Nicolas Gallagher.\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 */\nvar LogBox = {\n ignoreLogs() {},\n\n ignoreAllLogs() {},\n\n uninstall() {},\n\n install() {}\n\n};\nexport default LogBox;","import UnimplementedView from '../../modules/UnimplementedView';\nexport default UnimplementedView;","import UnimplementedView from '../../modules/UnimplementedView';\nexport default UnimplementedView;","import UnimplementedView from '../../modules/UnimplementedView';\nexport default UnimplementedView;","var promiseMock = () => Promise.resolve(false);\n\nexport default {\n PERMISSIONS: {},\n RESULTS: {},\n checkPermission: promiseMock,\n check: promiseMock,\n requestPermission: promiseMock,\n request: promiseMock,\n requestMultiple: promiseMock\n};","export default {};","export default {};","export default {};","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport Appearance from '../Appearance';\nexport default function useColorScheme() {\n var _React$useState = React.useState(Appearance.getColorScheme()),\n colorScheme = _React$useState[0],\n setColorScheme = _React$useState[1];\n\n React.useEffect(() => {\n function listener(appearance) {\n setColorScheme(appearance.colorScheme);\n }\n\n var _Appearance$addChange = Appearance.addChangeListener(listener),\n remove = _Appearance$addChange.remove;\n\n return remove;\n });\n return colorScheme;\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport { useLocaleContext } from '../../modules/useLocale';\nexport default useLocaleContext;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null\n};\n\nvar propsToAriaRole = _ref => {\n var accessibilityRole = _ref.accessibilityRole;\n\n if (accessibilityRole) {\n var inferredRole = accessibilityRoleToWebRole[accessibilityRole];\n\n if (inferredRole !== null) {\n // ignore roles that don't map to web\n return inferredRole || accessibilityRole;\n }\n }\n};\n\nexport default propsToAriaRole;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport propsToAriaRole from './propsToAriaRole';\nvar roleComponents = {\n article: 'article',\n banner: 'header',\n blockquote: 'blockquote',\n code: 'code',\n complementary: 'aside',\n contentinfo: 'footer',\n deletion: 'del',\n emphasis: 'em',\n figure: 'figure',\n insertion: 'ins',\n form: 'form',\n list: 'ul',\n listitem: 'li',\n main: 'main',\n navigation: 'nav',\n region: 'section',\n strong: 'strong'\n};\nvar emptyObject = {};\n\nvar propsToAccessibilityComponent = function propsToAccessibilityComponent(props) {\n if (props === void 0) {\n props = emptyObject;\n }\n\n // special-case for \"label\" role which doesn't map to an ARIA role\n if (props.accessibilityRole === 'label') {\n return 'label';\n }\n\n var role = propsToAriaRole(props);\n\n if (role) {\n if (role === 'heading') {\n var level = props.accessibilityLevel || props['aria-level'];\n\n if (level != null) {\n return \"h\" + level;\n }\n\n return 'h1';\n }\n\n return roleComponents[role];\n }\n};\n\nexport default propsToAccessibilityComponent;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport isDisabled from './isDisabled';\nimport propsToAccessibilityComponent from './propsToAccessibilityComponent';\nimport propsToAriaRole from './propsToAriaRole';\nvar AccessibilityUtil = {\n isDisabled,\n propsToAccessibilityComponent,\n propsToAriaRole\n};\nexport default AccessibilityUtil;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar isDisabled = props => props.disabled || Array.isArray(props.accessibilityStates) && props.accessibilityStates.indexOf('disabled') > -1;\n\nexport default isDisabled;","/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport UIManager from '../../exports/UIManager';\n/**\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n */\n\nvar TextInputState = {\n /**\n * Internal state\n */\n _currentlyFocusedNode: null,\n\n /**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\n currentlyFocusedField() {\n if (document.activeElement !== this._currentlyFocusedNode) {\n this._currentlyFocusedNode = null;\n }\n\n return this._currentlyFocusedNode;\n },\n\n /**\n * @param {Object} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\n focusTextInput(textFieldNode) {\n if (textFieldNode !== null) {\n this._currentlyFocusedNode = textFieldNode;\n\n if (document.activeElement !== textFieldNode) {\n UIManager.focus(textFieldNode);\n }\n }\n },\n\n /**\n * @param {Object} textFieldNode id of the text field to focus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\n blurTextInput(textFieldNode) {\n if (textFieldNode !== null) {\n this._currentlyFocusedNode = null;\n\n if (document.activeElement === textFieldNode) {\n UIManager.blur(textFieldNode);\n }\n }\n }\n\n};\nexport default TextInputState;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default canUseDOM;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"accessibilityActiveDescendant\", \"accessibilityAtomic\", \"accessibilityAutoComplete\", \"accessibilityBusy\", \"accessibilityChecked\", \"accessibilityColumnCount\", \"accessibilityColumnIndex\", \"accessibilityColumnSpan\", \"accessibilityControls\", \"accessibilityCurrent\", \"accessibilityDescribedBy\", \"accessibilityDetails\", \"accessibilityDisabled\", \"accessibilityErrorMessage\", \"accessibilityExpanded\", \"accessibilityFlowTo\", \"accessibilityHasPopup\", \"accessibilityHidden\", \"accessibilityInvalid\", \"accessibilityKeyShortcuts\", \"accessibilityLabel\", \"accessibilityLabelledBy\", \"accessibilityLevel\", \"accessibilityLiveRegion\", \"accessibilityModal\", \"accessibilityMultiline\", \"accessibilityMultiSelectable\", \"accessibilityOrientation\", \"accessibilityOwns\", \"accessibilityPlaceholder\", \"accessibilityPosInSet\", \"accessibilityPressed\", \"accessibilityReadOnly\", \"accessibilityRequired\", \"accessibilityRole\", \"accessibilityRoleDescription\", \"accessibilityRowCount\", \"accessibilityRowIndex\", \"accessibilityRowSpan\", \"accessibilitySelected\", \"accessibilitySetSize\", \"accessibilitySort\", \"accessibilityValueMax\", \"accessibilityValueMin\", \"accessibilityValueNow\", \"accessibilityValueText\", \"dataSet\", \"focusable\", \"nativeID\", \"pointerEvents\", \"style\", \"testID\"];\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport AccessibilityUtil from '../AccessibilityUtil';\nimport StyleSheet from '../../exports/StyleSheet';\nvar emptyObject = {};\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\nvar uppercasePattern = /[A-Z]/g;\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\n\nfunction hyphenateString(str) {\n return str.replace(uppercasePattern, toHyphenLower);\n}\n\nfunction processIDRefList(idRefList) {\n return isArray(idRefList) ? idRefList.join(' ') : idRefList;\n}\n\nvar pointerEventsStyles = StyleSheet.create({\n auto: {\n pointerEvents: 'auto'\n },\n 'box-none': {\n pointerEvents: 'box-none'\n },\n 'box-only': {\n pointerEvents: 'box-only'\n },\n none: {\n pointerEvents: 'none'\n }\n});\n\nvar createDOMProps = (elementType, props, options) => {\n if (!props) {\n props = emptyObject;\n }\n\n var _props = props,\n accessibilityActiveDescendant = _props.accessibilityActiveDescendant,\n accessibilityAtomic = _props.accessibilityAtomic,\n accessibilityAutoComplete = _props.accessibilityAutoComplete,\n accessibilityBusy = _props.accessibilityBusy,\n accessibilityChecked = _props.accessibilityChecked,\n accessibilityColumnCount = _props.accessibilityColumnCount,\n accessibilityColumnIndex = _props.accessibilityColumnIndex,\n accessibilityColumnSpan = _props.accessibilityColumnSpan,\n accessibilityControls = _props.accessibilityControls,\n accessibilityCurrent = _props.accessibilityCurrent,\n accessibilityDescribedBy = _props.accessibilityDescribedBy,\n accessibilityDetails = _props.accessibilityDetails,\n accessibilityDisabled = _props.accessibilityDisabled,\n accessibilityErrorMessage = _props.accessibilityErrorMessage,\n accessibilityExpanded = _props.accessibilityExpanded,\n accessibilityFlowTo = _props.accessibilityFlowTo,\n accessibilityHasPopup = _props.accessibilityHasPopup,\n accessibilityHidden = _props.accessibilityHidden,\n accessibilityInvalid = _props.accessibilityInvalid,\n accessibilityKeyShortcuts = _props.accessibilityKeyShortcuts,\n accessibilityLabel = _props.accessibilityLabel,\n accessibilityLabelledBy = _props.accessibilityLabelledBy,\n accessibilityLevel = _props.accessibilityLevel,\n accessibilityLiveRegion = _props.accessibilityLiveRegion,\n accessibilityModal = _props.accessibilityModal,\n accessibilityMultiline = _props.accessibilityMultiline,\n accessibilityMultiSelectable = _props.accessibilityMultiSelectable,\n accessibilityOrientation = _props.accessibilityOrientation,\n accessibilityOwns = _props.accessibilityOwns,\n accessibilityPlaceholder = _props.accessibilityPlaceholder,\n accessibilityPosInSet = _props.accessibilityPosInSet,\n accessibilityPressed = _props.accessibilityPressed,\n accessibilityReadOnly = _props.accessibilityReadOnly,\n accessibilityRequired = _props.accessibilityRequired,\n accessibilityRole = _props.accessibilityRole,\n accessibilityRoleDescription = _props.accessibilityRoleDescription,\n accessibilityRowCount = _props.accessibilityRowCount,\n accessibilityRowIndex = _props.accessibilityRowIndex,\n accessibilityRowSpan = _props.accessibilityRowSpan,\n accessibilitySelected = _props.accessibilitySelected,\n accessibilitySetSize = _props.accessibilitySetSize,\n accessibilitySort = _props.accessibilitySort,\n accessibilityValueMax = _props.accessibilityValueMax,\n accessibilityValueMin = _props.accessibilityValueMin,\n accessibilityValueNow = _props.accessibilityValueNow,\n accessibilityValueText = _props.accessibilityValueText,\n dataSet = _props.dataSet,\n focusable = _props.focusable,\n nativeID = _props.nativeID,\n pointerEvents = _props.pointerEvents,\n style = _props.style,\n testID = _props.testID,\n domProps = _objectWithoutPropertiesLoose(_props, _excluded);\n\n var disabled = accessibilityDisabled;\n var role = AccessibilityUtil.propsToAriaRole(props); // ACCESSIBILITY\n\n if (accessibilityActiveDescendant != null) {\n domProps['aria-activedescendant'] = accessibilityActiveDescendant;\n }\n\n if (accessibilityAtomic != null) {\n domProps['aria-atomic'] = accessibilityAtomic;\n }\n\n if (accessibilityAutoComplete != null) {\n domProps['aria-autocomplete'] = accessibilityAutoComplete;\n }\n\n if (accessibilityBusy != null) {\n domProps['aria-busy'] = accessibilityBusy;\n }\n\n if (accessibilityChecked != null) {\n domProps['aria-checked'] = accessibilityChecked;\n }\n\n if (accessibilityColumnCount != null) {\n domProps['aria-colcount'] = accessibilityColumnCount;\n }\n\n if (accessibilityColumnIndex != null) {\n domProps['aria-colindex'] = accessibilityColumnIndex;\n }\n\n if (accessibilityColumnSpan != null) {\n domProps['aria-colspan'] = accessibilityColumnSpan;\n }\n\n if (accessibilityControls != null) {\n domProps['aria-controls'] = processIDRefList(accessibilityControls);\n }\n\n if (accessibilityCurrent != null) {\n domProps['aria-current'] = accessibilityCurrent;\n }\n\n if (accessibilityDescribedBy != null) {\n domProps['aria-describedby'] = processIDRefList(accessibilityDescribedBy);\n }\n\n if (accessibilityDetails != null) {\n domProps['aria-details'] = accessibilityDetails;\n }\n\n if (disabled === true) {\n domProps['aria-disabled'] = true; // Enhance with native semantics\n\n if (elementType === 'button' || elementType === 'form' || elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n domProps.disabled = true;\n }\n }\n\n if (accessibilityErrorMessage != null) {\n domProps['aria-errormessage'] = accessibilityErrorMessage;\n }\n\n if (accessibilityExpanded != null) {\n domProps['aria-expanded'] = accessibilityExpanded;\n }\n\n if (accessibilityFlowTo != null) {\n domProps['aria-flowto'] = processIDRefList(accessibilityFlowTo);\n }\n\n if (accessibilityHasPopup != null) {\n domProps['aria-haspopup'] = accessibilityHasPopup;\n }\n\n if (accessibilityHidden === true) {\n domProps['aria-hidden'] = accessibilityHidden;\n }\n\n if (accessibilityInvalid != null) {\n domProps['aria-invalid'] = accessibilityInvalid;\n }\n\n if (accessibilityKeyShortcuts != null && Array.isArray(accessibilityKeyShortcuts)) {\n domProps['aria-keyshortcuts'] = accessibilityKeyShortcuts.join(' ');\n }\n\n if (accessibilityLabel != null) {\n domProps['aria-label'] = accessibilityLabel;\n }\n\n if (accessibilityLabelledBy != null) {\n domProps['aria-labelledby'] = processIDRefList(accessibilityLabelledBy);\n }\n\n if (accessibilityLevel != null) {\n domProps['aria-level'] = accessibilityLevel;\n }\n\n if (accessibilityLiveRegion != null) {\n domProps['aria-live'] = accessibilityLiveRegion === 'none' ? 'off' : accessibilityLiveRegion;\n }\n\n if (accessibilityModal != null) {\n domProps['aria-modal'] = accessibilityModal;\n }\n\n if (accessibilityMultiline != null) {\n domProps['aria-multiline'] = accessibilityMultiline;\n }\n\n if (accessibilityMultiSelectable != null) {\n domProps['aria-multiselectable'] = accessibilityMultiSelectable;\n }\n\n if (accessibilityOrientation != null) {\n domProps['aria-orientation'] = accessibilityOrientation;\n }\n\n if (accessibilityOwns != null) {\n domProps['aria-owns'] = processIDRefList(accessibilityOwns);\n }\n\n if (accessibilityPlaceholder != null) {\n domProps['aria-placeholder'] = accessibilityPlaceholder;\n }\n\n if (accessibilityPosInSet != null) {\n domProps['aria-posinset'] = accessibilityPosInSet;\n }\n\n if (accessibilityPressed != null) {\n domProps['aria-pressed'] = accessibilityPressed;\n }\n\n if (accessibilityReadOnly != null) {\n domProps['aria-readonly'] = accessibilityReadOnly; // Enhance with native semantics\n\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n domProps.readOnly = true;\n }\n }\n\n if (accessibilityRequired != null) {\n domProps['aria-required'] = accessibilityRequired; // Enhance with native semantics\n\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n domProps.required = true;\n }\n }\n\n if (role != null) {\n // 'presentation' synonym has wider browser support\n domProps['role'] = role === 'none' ? 'presentation' : role;\n }\n\n if (accessibilityRoleDescription != null) {\n domProps['aria-roledescription'] = accessibilityRoleDescription;\n }\n\n if (accessibilityRowCount != null) {\n domProps['aria-rowcount'] = accessibilityRowCount;\n }\n\n if (accessibilityRowIndex != null) {\n domProps['aria-rowindex'] = accessibilityRowIndex;\n }\n\n if (accessibilityRowSpan != null) {\n domProps['aria-rowspan'] = accessibilityRowSpan;\n }\n\n if (accessibilitySelected != null) {\n domProps['aria-selected'] = accessibilitySelected;\n }\n\n if (accessibilitySetSize != null) {\n domProps['aria-setsize'] = accessibilitySetSize;\n }\n\n if (accessibilitySort != null) {\n domProps['aria-sort'] = accessibilitySort;\n }\n\n if (accessibilityValueMax != null) {\n domProps['aria-valuemax'] = accessibilityValueMax;\n }\n\n if (accessibilityValueMin != null) {\n domProps['aria-valuemin'] = accessibilityValueMin;\n }\n\n if (accessibilityValueNow != null) {\n domProps['aria-valuenow'] = accessibilityValueNow;\n }\n\n if (accessibilityValueText != null) {\n domProps['aria-valuetext'] = accessibilityValueText;\n } // \"dataSet\" replaced with \"data-*\"\n\n\n if (dataSet != null) {\n for (var dataProp in dataSet) {\n if (hasOwnProperty.call(dataSet, dataProp)) {\n var dataName = hyphenateString(dataProp);\n var dataValue = dataSet[dataProp];\n\n if (dataValue != null) {\n domProps[\"data-\" + dataName] = dataValue;\n }\n }\n }\n } // FOCUS\n // \"focusable\" indicates that an element may be a keyboard tab-stop.\n\n\n if (focusable === false) {\n domProps.tabIndex = '-1';\n }\n\n if ( // These native elements are keyboard focusable by default\n elementType === 'a' || elementType === 'button' || elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n if (focusable === false || accessibilityDisabled === true) {\n domProps.tabIndex = '-1';\n }\n } else if ( // These roles are made keyboard focusable by default\n role === 'button' || role === 'checkbox' || role === 'link' || role === 'radio' || role === 'textbox' || role === 'switch') {\n if (focusable !== false) {\n domProps.tabIndex = '0';\n }\n } else {\n // Everything else must explicitly set the prop\n if (focusable === true) {\n domProps.tabIndex = '0';\n }\n } // Resolve styles\n\n\n var _StyleSheet = StyleSheet([style, pointerEvents && pointerEventsStyles[pointerEvents]], {\n writingDirection: options ? options.writingDirection : 'ltr'\n }),\n className = _StyleSheet[0],\n inlineStyle = _StyleSheet[1];\n\n if (className) {\n domProps.className = className;\n }\n\n if (inlineStyle) {\n domProps.style = inlineStyle;\n } // OTHER\n // Native element ID\n\n\n if (nativeID != null) {\n domProps.id = nativeID;\n } // Automated test IDs\n\n\n if (testID != null) {\n domProps['data-testid'] = testID;\n }\n\n return domProps;\n};\n\nexport default createDOMProps;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport TextInputState from '../TextInputState';\n\nvar dismissKeyboard = () => {\n TextInputState.blurTextInput(TextInputState.currentlyFocusedField());\n};\n\nexport default dismissKeyboard;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nexport var defaultProps = {\n children: true,\n dataSet: true,\n nativeID: true,\n ref: true,\n suppressHydrationWarning: true,\n testID: true\n};\nexport var accessibilityProps = {\n accessibilityActiveDescendant: true,\n accessibilityAtomic: true,\n accessibilityAutoComplete: true,\n accessibilityBusy: true,\n accessibilityChecked: true,\n accessibilityColumnCount: true,\n accessibilityColumnIndex: true,\n accessibilityColumnSpan: true,\n accessibilityControls: true,\n accessibilityCurrent: true,\n accessibilityDescribedBy: true,\n accessibilityDetails: true,\n accessibilityDisabled: true,\n accessibilityErrorMessage: true,\n accessibilityExpanded: true,\n accessibilityFlowTo: true,\n accessibilityHasPopup: true,\n accessibilityHidden: true,\n accessibilityInvalid: true,\n accessibilityKeyShortcuts: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLevel: true,\n accessibilityLiveRegion: true,\n accessibilityModal: true,\n accessibilityMultiline: true,\n accessibilityMultiSelectable: true,\n accessibilityOrientation: true,\n accessibilityOwns: true,\n accessibilityPlaceholder: true,\n accessibilityPosInSet: true,\n accessibilityPressed: true,\n accessibilityReadOnly: true,\n accessibilityRequired: true,\n accessibilityRole: true,\n accessibilityRoleDescription: true,\n accessibilityRowCount: true,\n accessibilityRowIndex: true,\n accessibilityRowSpan: true,\n accessibilitySelected: true,\n accessibilitySetSize: true,\n accessibilitySort: true,\n accessibilityValueMax: true,\n accessibilityValueMin: true,\n accessibilityValueNow: true,\n accessibilityValueText: true,\n dir: true,\n focusable: true\n};\nexport var clickProps = {\n onClick: true,\n onClickCapture: true,\n onContextMenu: true\n};\nexport var focusProps = {\n onBlur: true,\n onFocus: true\n};\nexport var keyboardProps = {\n onKeyDown: true,\n onKeyDownCapture: true,\n onKeyUp: true,\n onKeyUpCapture: true\n};\nexport var mouseProps = {\n onMouseDown: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseMove: true,\n onMouseOver: true,\n onMouseOut: true,\n onMouseUp: true\n};\nexport var touchProps = {\n onTouchCancel: true,\n onTouchCancelCapture: true,\n onTouchEnd: true,\n onTouchEndCapture: true,\n onTouchMove: true,\n onTouchMoveCapture: true,\n onTouchStart: true,\n onTouchStartCapture: true\n};\nexport var styleProps = {\n classList: true,\n style: true\n};","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar getBoundingClientRect = node => {\n if (node != null) {\n var isElement = node.nodeType === 1;\n /* Node.ELEMENT_NODE */\n\n if (isElement && typeof node.getBoundingClientRect === 'function') {\n return node.getBoundingClientRect();\n }\n }\n};\n\nexport default getBoundingClientRect;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nexport default function mergeRefs() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return function forwardRef(node) {\n args.forEach(ref => {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(node);\n return;\n }\n\n if (typeof ref === 'object') {\n ref.current = node;\n return;\n }\n\n console.error(\"mergeRefs cannot handle Refs of type boolean, number or string, received ref \" + String(ref));\n });\n };\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nexport default function pick(obj, list) {\n var nextObj = {};\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (list[key] === true) {\n nextObj[key] = obj[key];\n }\n }\n }\n\n return nextObj;\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport useLayoutEffect from '../useLayoutEffect';\nimport UIManager from '../../exports/UIManager';\nimport canUseDOM from '../canUseDom';\nvar DOM_LAYOUT_HANDLER_NAME = '__reactLayoutHandler';\nvar didWarn = !canUseDOM;\nvar resizeObserver = null;\n\nfunction getResizeObserver() {\n if (canUseDOM && typeof window.ResizeObserver !== 'undefined') {\n if (resizeObserver == null) {\n resizeObserver = new window.ResizeObserver(function (entries) {\n entries.forEach(entry => {\n var node = entry.target;\n var onLayout = node[DOM_LAYOUT_HANDLER_NAME];\n\n if (typeof onLayout === 'function') {\n // We still need to measure the view because browsers don't yet provide\n // border-box dimensions in the entry\n UIManager.measure(node, (x, y, width, height, left, top) => {\n var event = {\n // $FlowFixMe\n nativeEvent: {\n layout: {\n x,\n y,\n width,\n height,\n left,\n top\n }\n },\n timeStamp: Date.now()\n };\n Object.defineProperty(event.nativeEvent, 'target', {\n enumerable: true,\n get: () => entry.target\n });\n onLayout(event);\n });\n }\n });\n });\n }\n } else if (!didWarn) {\n if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n console.warn('onLayout relies on ResizeObserver which is not supported by your browser. ' + 'Please include a polyfill, e.g., https://github.com/que-etc/resize-observer-polyfill.');\n didWarn = true;\n }\n }\n\n return resizeObserver;\n}\n\nexport default function useElementLayout(ref, onLayout) {\n var observer = getResizeObserver();\n useLayoutEffect(() => {\n var node = ref.current;\n\n if (node != null) {\n node[DOM_LAYOUT_HANDLER_NAME] = onLayout;\n }\n }, [ref, onLayout]); // Observing is done in a separate effect to avoid this effect running\n // when 'onLayout' changes.\n\n useLayoutEffect(() => {\n var node = ref.current;\n\n if (node != null && observer != null) {\n if (typeof node[DOM_LAYOUT_HANDLER_NAME] === 'function') {\n observer.observe(node);\n } else {\n observer.unobserve(node);\n }\n }\n\n return () => {\n if (node != null && observer != null) {\n observer.unobserve(node);\n }\n };\n }, [ref, observer]);\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 * useLayoutEffect throws an error on the server. On the few occasions where is\n * problematic, use this hook.\n *\n * \n */\nimport { useEffect, useLayoutEffect } from 'react';\nimport canUseDOM from '../canUseDom';\nvar useLayoutEffectImpl = canUseDOM ? useLayoutEffect : useEffect;\nexport default useLayoutEffectImpl;","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nvar rtlScripts = new Set(['Arab', 'Syrc', 'Samr', 'Mand', 'Thaa', 'Mend', 'Nkoo', 'Adlm', 'Rohg', 'Hebr']);\nvar rtlLangs = new Set(['ae', // Avestan\n'ar', // Arabic\n'arc', // Aramaic\n'bcc', // Southern Balochi\n'bqi', // Bakthiari\n'ckb', // Sorani\n'dv', // Dhivehi\n'fa', 'far', // Persian\n'glk', // Gilaki\n'he', 'iw', // Hebrew\n'khw', // Khowar\n'ks', // Kashmiri\n'ku', // Kurdish\n'mzn', // Mazanderani\n'nqo', // N'Ko\n'pnb', // Western Punjabi\n'ps', // Pashto\n'sd', // Sindhi\n'ug', // Uyghur\n'ur', // Urdu\n'yi' // Yiddish\n]);\nvar cache = new Map();\n/**\n * Determine the writing direction of a locale\n */\n\nexport function isLocaleRTL(locale) {\n var cachedRTL = cache.get(locale);\n\n if (cachedRTL) {\n return cachedRTL;\n }\n\n var isRTL = false; // $FlowFixMe\n\n if (Intl.Locale) {\n // $FlowFixMe\n var script = new Intl.Locale(locale).maximize().script;\n isRTL = rtlScripts.has(script);\n } else {\n // Fallback to inferring from language\n var lang = locale.split('-')[0];\n isRTL = rtlLangs.has(lang);\n }\n\n cache.set(locale, isRTL);\n return isRTL;\n}","/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport React, { createContext, useContext } from 'react';\nimport { isLocaleRTL } from './isLocaleRTL';\nvar defaultLocale = {\n direction: 'ltr',\n locale: 'en-US'\n};\nvar LocaleContext = /*#__PURE__*/createContext(defaultLocale);\nexport function getLocaleDirection(locale) {\n return isLocaleRTL(locale) ? 'rtl' : 'ltr';\n}\nexport function LocaleProvider(props) {\n var direction = props.direction,\n locale = props.locale,\n children = props.children;\n var needsContext = direction || locale;\n return needsContext ? /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n children: children,\n value: {\n direction: locale ? getLocaleDirection(locale) : direction,\n locale\n }\n }) : children;\n}\nexport function useLocaleContext() {\n return useContext(LocaleContext);\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nimport mergeRefs from '../mergeRefs';\nexport default function useMergeRefs() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return React.useMemo(() => mergeRefs(...args), // eslint-disable-next-line\n [...args]);\n}","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Nicolas Gallagher.\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 */\nimport UIManager from '../../exports/UIManager';\nimport createDOMProps from '../createDOMProps';\nimport useStable from '../useStable';\nimport { useRef } from 'react';\nvar didWarn = false;\nvar emptyObject = {};\n\nfunction setNativeProps(node, nativeProps, pointerEvents, style, previousStyleRef) {\n if (!didWarn) {\n console.warn('setNativeProps is deprecated. Please update props using React state instead.');\n didWarn = true;\n }\n\n if (node != null && nativeProps) {\n var domProps = createDOMProps(null, _objectSpread(_objectSpread({\n pointerEvents\n }, nativeProps), {}, {\n style: [style, nativeProps.style]\n }));\n var nextDomStyle = domProps.style;\n\n if (previousStyleRef.current != null) {\n if (domProps.style == null) {\n domProps.style = {};\n }\n\n for (var styleName in previousStyleRef.current) {\n if (domProps.style[styleName] == null) {\n domProps.style[styleName] = '';\n }\n }\n }\n\n previousStyleRef.current = nextDomStyle;\n UIManager.updateView(node, domProps);\n }\n}\n/**\n * Adds non-standard methods to the hode element. This is temporarily until an\n * API like `ReactNative.measure(hostRef, callback)` is added to React Native.\n */\n\n\nexport default function usePlatformMethods(_ref) {\n var pointerEvents = _ref.pointerEvents,\n style = _ref.style;\n var previousStyleRef = useRef(null);\n var setNativePropsArgsRef = useRef(null);\n setNativePropsArgsRef.current = {\n pointerEvents,\n style\n }; // Avoid creating a new ref on every render. The props only need to be\n // available to 'setNativeProps' when it is called.\n\n var ref = useStable(() => hostNode => {\n if (hostNode != null) {\n hostNode.measure = callback => UIManager.measure(hostNode, callback);\n\n hostNode.measureLayout = (relativeToNode, success, failure) => UIManager.measureLayout(hostNode, relativeToNode, failure, success);\n\n hostNode.measureInWindow = callback => UIManager.measureInWindow(hostNode, callback);\n\n hostNode.setNativeProps = nativeProps => {\n var _ref2 = setNativePropsArgsRef.current || emptyObject,\n style = _ref2.style,\n pointerEvents = _ref2.pointerEvents;\n\n setNativeProps(hostNode, nativeProps, pointerEvents, style, previousStyleRef);\n };\n }\n });\n return ref;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nvar DELAY = 'DELAY';\nvar ERROR = 'ERROR';\nvar LONG_PRESS_DETECTED = 'LONG_PRESS_DETECTED';\nvar NOT_RESPONDER = 'NOT_RESPONDER';\nvar RESPONDER_ACTIVE_LONG_PRESS_START = 'RESPONDER_ACTIVE_LONG_PRESS_START';\nvar RESPONDER_ACTIVE_PRESS_START = 'RESPONDER_ACTIVE_PRESS_START';\nvar RESPONDER_INACTIVE_PRESS_START = 'RESPONDER_INACTIVE_PRESS_START';\nvar RESPONDER_GRANT = 'RESPONDER_GRANT';\nvar RESPONDER_RELEASE = 'RESPONDER_RELEASE';\nvar RESPONDER_TERMINATED = 'RESPONDER_TERMINATED';\nvar Transitions = Object.freeze({\n NOT_RESPONDER: {\n DELAY: ERROR,\n RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n RESPONDER_RELEASE: ERROR,\n RESPONDER_TERMINATED: ERROR,\n LONG_PRESS_DETECTED: ERROR\n },\n RESPONDER_INACTIVE_PRESS_START: {\n DELAY: RESPONDER_ACTIVE_PRESS_START,\n RESPONDER_GRANT: ERROR,\n RESPONDER_RELEASE: NOT_RESPONDER,\n RESPONDER_TERMINATED: NOT_RESPONDER,\n LONG_PRESS_DETECTED: ERROR\n },\n RESPONDER_ACTIVE_PRESS_START: {\n DELAY: ERROR,\n RESPONDER_GRANT: ERROR,\n RESPONDER_RELEASE: NOT_RESPONDER,\n RESPONDER_TERMINATED: NOT_RESPONDER,\n LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n },\n RESPONDER_ACTIVE_LONG_PRESS_START: {\n DELAY: ERROR,\n RESPONDER_GRANT: ERROR,\n RESPONDER_RELEASE: NOT_RESPONDER,\n RESPONDER_TERMINATED: NOT_RESPONDER,\n LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n },\n ERROR: {\n DELAY: NOT_RESPONDER,\n RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n RESPONDER_RELEASE: NOT_RESPONDER,\n RESPONDER_TERMINATED: NOT_RESPONDER,\n LONG_PRESS_DETECTED: NOT_RESPONDER\n }\n});\n\nvar isActiveSignal = signal => signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n\nvar isButtonRole = element => element.getAttribute('role') === 'button';\n\nvar isPressStartSignal = signal => signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n\nvar isTerminalSignal = signal => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;\n\nvar isValidKeyPress = event => {\n var key = event.key,\n target = event.target;\n var role = target.getAttribute('role');\n var isSpacebar = key === ' ' || key === 'Spacebar';\n return key === 'Enter' || isSpacebar && role === 'button';\n};\n\nvar DEFAULT_LONG_PRESS_DELAY_MS = 450; // 500 - 50\n\nvar DEFAULT_PRESS_DELAY_MS = 50;\n/**\n * =========================== PressResponder Tutorial ===========================\n *\n * The `PressResponder` class helps you create press interactions by analyzing the\n * geometry of elements and observing when another responder (e.g. ScrollView)\n * has stolen the touch lock. It offers hooks for your component to provide\n * interaction feedback to the user:\n *\n * - When a press has activated (e.g. highlight an element)\n * - When a press has deactivated (e.g. un-highlight an element)\n * - When a press sould trigger an action, meaning it activated and deactivated\n * while within the geometry of the element without the lock being stolen.\n *\n * A high quality interaction isn't as simple as you might think. There should\n * be a slight delay before activation. Moving your finger beyond an element's\n * bounds should trigger deactivation, but moving the same finger back within an\n * element's bounds should trigger reactivation.\n *\n * In order to use `PressResponder`, do the following:\n *\n * const pressResponder = new PressResponder(config);\n *\n * 2. Choose the rendered component who should collect the press events. On that\n * element, spread `pressability.getEventHandlers()` into its props.\n *\n * return (\n * \n * );\n *\n * 3. Reset `PressResponder` when your component unmounts.\n *\n * componentWillUnmount() {\n * this.state.pressResponder.reset();\n * }\n *\n * ==================== Implementation Details ====================\n *\n * `PressResponder` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * # Geometry\n *\n * ┌────────────────────────┐\n * │ ┌──────────────────┐ │ - Presses start anywhere within `HitRect`.\n * │ │ ┌────────────┐ │ │\n * │ │ │ VisualRect │ │ │\n * │ │ └────────────┘ │ │ - When pressed down for sufficient amount of time\n * │ │ HitRect │ │ before letting up, `VisualRect` activates.\n * │ └──────────────────┘ │\n * │ Out Region o │\n * └────────────────────│───┘\n * └────── When the press is released outside the `HitRect`,\n * the responder is NOT eligible for a \"press\".\n *\n * # State Machine\n *\n * ┌───────────────┐ ◀──── RESPONDER_RELEASE\n * │ NOT_RESPONDER │\n * └───┬───────────┘ ◀──── RESPONDER_TERMINATED\n * │\n * │ RESPONDER_GRANT (HitRect)\n * │\n * ▼\n * ┌─────────────────────┐ ┌───────────────────┐ ┌───────────────────┐\n * │ RESPONDER_INACTIVE_ │ DELAY │ RESPONDER_ACTIVE_ │ T + DELAY │ RESPONDER_ACTIVE_ │\n * │ PRESS_START ├────────▶ │ PRESS_START ├────────────▶ │ LONG_PRESS_START │\n * └─────────────────────┘ └───────────────────┘ └───────────────────┘\n *\n * T + DELAY => LONG_PRESS_DELAY + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the invocation of `onLongPress`. Only when the browser produces a\n * `click` event is `onPress` invoked.\n */\n\nexport default class PressResponder {\n constructor(config) {\n this._eventHandlers = null;\n this._isPointerTouch = false;\n this._longPressDelayTimeout = null;\n this._longPressDispatched = false;\n this._pressDelayTimeout = null;\n this._pressOutDelayTimeout = null;\n this._touchState = NOT_RESPONDER;\n this.configure(config);\n }\n\n configure(config) {\n this._config = config;\n }\n /**\n * Resets any pending timers. This should be called on unmount.\n */\n\n\n reset() {\n this._cancelLongPressDelayTimeout();\n\n this._cancelPressDelayTimeout();\n\n this._cancelPressOutDelayTimeout();\n }\n /**\n * Returns a set of props to spread into the interactive element.\n */\n\n\n getEventHandlers() {\n if (this._eventHandlers == null) {\n this._eventHandlers = this._createEventHandlers();\n }\n\n return this._eventHandlers;\n }\n\n _createEventHandlers() {\n var start = (event, shouldDelay) => {\n event.persist();\n\n this._cancelPressOutDelayTimeout();\n\n this._longPressDispatched = false;\n this._selectionTerminated = false;\n this._touchState = NOT_RESPONDER;\n this._isPointerTouch = event.nativeEvent.type === 'touchstart';\n\n this._receiveSignal(RESPONDER_GRANT, event);\n\n var delayPressStart = normalizeDelay(this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);\n\n if (shouldDelay !== false && delayPressStart > 0) {\n this._pressDelayTimeout = setTimeout(() => {\n this._receiveSignal(DELAY, event);\n }, delayPressStart);\n } else {\n this._receiveSignal(DELAY, event);\n }\n\n var delayLongPress = normalizeDelay(this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);\n this._longPressDelayTimeout = setTimeout(() => {\n this._handleLongPress(event);\n }, delayLongPress + delayPressStart);\n };\n\n var end = event => {\n this._receiveSignal(RESPONDER_RELEASE, event);\n };\n\n var keyupHandler = event => {\n var onPress = this._config.onPress;\n var target = event.target;\n\n if (this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {\n end(event);\n document.removeEventListener('keyup', keyupHandler);\n var role = target.getAttribute('role');\n var elementType = target.tagName.toLowerCase();\n var isNativeInteractiveElement = role === 'link' || elementType === 'a' || elementType === 'button' || elementType === 'input' || elementType === 'select' || elementType === 'textarea';\n\n if (onPress != null && !isNativeInteractiveElement) {\n onPress(event);\n }\n }\n };\n\n return {\n onStartShouldSetResponder: event => {\n var disabled = this._config.disabled;\n\n if (disabled && isButtonRole(event.currentTarget)) {\n event.stopPropagation();\n }\n\n if (disabled == null) {\n return true;\n }\n\n return !disabled;\n },\n onKeyDown: event => {\n var disabled = this._config.disabled;\n var key = event.key,\n target = event.target;\n\n if (!disabled && isValidKeyPress(event)) {\n if (this._touchState === NOT_RESPONDER) {\n start(event, false); // Listen to 'keyup' on document to account for situations where\n // focus is moved to another element during 'keydown'.\n\n document.addEventListener('keyup', keyupHandler);\n }\n\n var role = target.getAttribute('role');\n var isSpacebarKey = key === ' ' || key === 'Spacebar';\n\n var _isButtonRole = role === 'button' || role === 'menuitem';\n\n if (isSpacebarKey && _isButtonRole) {\n // Prevent spacebar scrolling the window\n event.preventDefault();\n }\n\n event.stopPropagation();\n }\n },\n onResponderGrant: event => start(event),\n onResponderMove: event => {\n if (this._config.onPressMove != null) {\n this._config.onPressMove(event);\n }\n\n var touch = getTouchFromResponderEvent(event);\n\n if (this._touchActivatePosition != null) {\n var deltaX = this._touchActivatePosition.pageX - touch.pageX;\n var deltaY = this._touchActivatePosition.pageY - touch.pageY;\n\n if (Math.hypot(deltaX, deltaY) > 10) {\n this._cancelLongPressDelayTimeout();\n }\n }\n },\n onResponderRelease: event => end(event),\n onResponderTerminate: event => {\n if (event.nativeEvent.type === 'selectionchange') {\n this._selectionTerminated = true;\n }\n\n this._receiveSignal(RESPONDER_TERMINATED, event);\n },\n onResponderTerminationRequest: event => {\n var _this$_config = this._config,\n cancelable = _this$_config.cancelable,\n disabled = _this$_config.disabled,\n onLongPress = _this$_config.onLongPress; // If `onLongPress` is provided, don't terminate on `contextmenu` as default\n // behavior will be prevented for non-mouse pointers.\n\n if (!disabled && onLongPress != null && this._isPointerTouch && event.nativeEvent.type === 'contextmenu') {\n return false;\n }\n\n if (cancelable == null) {\n return true;\n }\n\n return cancelable;\n },\n // NOTE: this diverges from react-native in 3 significant ways:\n // * The `onPress` callback is not connected to the responder system (the native\n // `click` event must be used but is dispatched in many scenarios where no pointers\n // are on the screen.) Therefore, it's possible for `onPress` to be called without\n // `onPress{Start,End}` being called first.\n // * The `onPress` callback is only be called on the first ancestor of the native\n // `click` target that is using the PressResponder.\n // * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.\n onClick: event => {\n var _this$_config2 = this._config,\n disabled = _this$_config2.disabled,\n onPress = _this$_config2.onPress;\n\n if (!disabled) {\n // If long press dispatched, cancel default click behavior.\n // If the responder terminated because text was selected during the gesture,\n // cancel the default click behavior.\n event.stopPropagation();\n\n if (this._longPressDispatched || this._selectionTerminated) {\n event.preventDefault();\n } else if (onPress != null && event.altKey === false) {\n onPress(event);\n }\n } else {\n if (isButtonRole(event.currentTarget)) {\n event.stopPropagation();\n }\n }\n },\n // If `onLongPress` is provided and a touch pointer is being used, prevent the\n // default context menu from opening.\n onContextMenu: event => {\n var _this$_config3 = this._config,\n disabled = _this$_config3.disabled,\n onLongPress = _this$_config3.onLongPress;\n\n if (!disabled) {\n if (onLongPress != null && this._isPointerTouch && !event.defaultPrevented) {\n event.preventDefault();\n event.stopPropagation();\n }\n } else {\n if (isButtonRole(event.currentTarget)) {\n event.stopPropagation();\n }\n }\n }\n };\n }\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n */\n\n\n _receiveSignal(signal, event) {\n var prevState = this._touchState;\n var nextState = null;\n\n if (Transitions[prevState] != null) {\n nextState = Transitions[prevState][signal];\n }\n\n if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {\n return;\n }\n\n if (nextState == null || nextState === ERROR) {\n console.error(\"PressResponder: Invalid signal \" + signal + \" for state \" + prevState + \" on responder\");\n } else if (prevState !== nextState) {\n this._performTransitionSideEffects(prevState, nextState, signal, event);\n\n this._touchState = nextState;\n }\n }\n /**\n * Performs a transition between touchable states and identify any activations\n * or deactivations (and callback invocations).\n */\n\n\n _performTransitionSideEffects(prevState, nextState, signal, event) {\n if (isTerminalSignal(signal)) {\n // Pressable suppression of contextmenu on windows.\n // On Windows, the contextmenu is displayed after pointerup.\n // https://github.com/necolas/react-native-web/issues/2296\n setTimeout(() => {\n this._isPointerTouch = false;\n }, 0);\n this._touchActivatePosition = null;\n\n this._cancelLongPressDelayTimeout();\n }\n\n if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {\n var onLongPress = this._config.onLongPress; // Long press is not supported for keyboards because 'click' can be dispatched\n // immediately (and multiple times) after 'keydown'.\n\n if (onLongPress != null && event.nativeEvent.key == null) {\n onLongPress(event);\n this._longPressDispatched = true;\n }\n }\n\n var isPrevActive = isActiveSignal(prevState);\n var isNextActive = isActiveSignal(nextState);\n\n if (!isPrevActive && isNextActive) {\n this._activate(event);\n } else if (isPrevActive && !isNextActive) {\n this._deactivate(event);\n }\n\n if (isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {\n var _this$_config4 = this._config,\n _onLongPress = _this$_config4.onLongPress,\n onPress = _this$_config4.onPress;\n\n if (onPress != null) {\n var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;\n\n if (!isPressCanceledByLongPress) {\n // If we never activated (due to delays), activate and deactivate now.\n if (!isNextActive && !isPrevActive) {\n this._activate(event);\n\n this._deactivate(event);\n }\n }\n }\n }\n\n this._cancelPressDelayTimeout();\n }\n\n _activate(event) {\n var _this$_config5 = this._config,\n onPressChange = _this$_config5.onPressChange,\n onPressStart = _this$_config5.onPressStart;\n var touch = getTouchFromResponderEvent(event);\n this._touchActivatePosition = {\n pageX: touch.pageX,\n pageY: touch.pageY\n };\n\n if (onPressStart != null) {\n onPressStart(event);\n }\n\n if (onPressChange != null) {\n onPressChange(true);\n }\n }\n\n _deactivate(event) {\n var _this$_config6 = this._config,\n onPressChange = _this$_config6.onPressChange,\n onPressEnd = _this$_config6.onPressEnd;\n\n function end() {\n if (onPressEnd != null) {\n onPressEnd(event);\n }\n\n if (onPressChange != null) {\n onPressChange(false);\n }\n }\n\n var delayPressEnd = normalizeDelay(this._config.delayPressEnd);\n\n if (delayPressEnd > 0) {\n this._pressOutDelayTimeout = setTimeout(() => {\n end();\n }, delayPressEnd);\n } else {\n end();\n }\n }\n\n _handleLongPress(event) {\n if (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) {\n this._receiveSignal(LONG_PRESS_DETECTED, event);\n }\n }\n\n _cancelLongPressDelayTimeout() {\n if (this._longPressDelayTimeout != null) {\n clearTimeout(this._longPressDelayTimeout);\n this._longPressDelayTimeout = null;\n }\n }\n\n _cancelPressDelayTimeout() {\n if (this._pressDelayTimeout != null) {\n clearTimeout(this._pressDelayTimeout);\n this._pressDelayTimeout = null;\n }\n }\n\n _cancelPressOutDelayTimeout() {\n if (this._pressOutDelayTimeout != null) {\n clearTimeout(this._pressOutDelayTimeout);\n this._pressOutDelayTimeout = null;\n }\n }\n\n}\n\nfunction normalizeDelay(delay, min, fallback) {\n if (min === void 0) {\n min = 0;\n }\n\n if (fallback === void 0) {\n fallback = 0;\n }\n\n return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);\n}\n\nfunction getTouchFromResponderEvent(event) {\n var _event$nativeEvent = event.nativeEvent,\n changedTouches = _event$nativeEvent.changedTouches,\n touches = _event$nativeEvent.touches;\n\n if (touches != null && touches.length > 0) {\n return touches[0];\n }\n\n if (changedTouches != null && changedTouches.length > 0) {\n return changedTouches[0];\n }\n\n return event.nativeEvent;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport PressResponder from './PressResponder';\nimport { useDebugValue, useEffect, useRef } from 'react';\nexport default function usePressEvents(hostRef, config) {\n var pressResponderRef = useRef(null);\n\n if (pressResponderRef.current == null) {\n pressResponderRef.current = new PressResponder(config);\n }\n\n var pressResponder = pressResponderRef.current; // Re-configure to use the current node and configuration.\n\n useEffect(() => {\n pressResponder.configure(config);\n }, [config, pressResponder]); // Reset the `pressResponder` when cleanup needs to occur. This is\n // a separate effect because we do not want to rest the responder when `config` changes.\n\n useEffect(() => {\n return () => {\n pressResponder.reset();\n };\n }, [pressResponder]);\n useDebugValue(config);\n return pressResponder.getEventHandlers();\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\nimport getBoundingClientRect from '../../modules/getBoundingClientRect';\n\nvar emptyFunction = () => {};\n\nvar emptyObject = {};\nvar emptyArray = [];\n/**\n * Safari produces very large identifiers that would cause the `touchBank` array\n * length to be so large as to crash the browser, if not normalized like this.\n * In the future the `touchBank` should use an object/map instead.\n */\n\nfunction normalizeIdentifier(identifier) {\n return identifier > 20 ? identifier % 20 : identifier;\n}\n/**\n * Converts a native DOM event to a ResponderEvent.\n * Mouse events are transformed into fake touch events.\n */\n\n\nexport default function createResponderEvent(domEvent, responderTouchHistoryStore) {\n var rect;\n var propagationWasStopped = false;\n var changedTouches;\n var touches;\n var domEventChangedTouches = domEvent.changedTouches;\n var domEventType = domEvent.type;\n var metaKey = domEvent.metaKey === true;\n var shiftKey = domEvent.shiftKey === true;\n var force = domEventChangedTouches && domEventChangedTouches[0].force || 0;\n var identifier = normalizeIdentifier(domEventChangedTouches && domEventChangedTouches[0].identifier || 0);\n var clientX = domEventChangedTouches && domEventChangedTouches[0].clientX || domEvent.clientX;\n var clientY = domEventChangedTouches && domEventChangedTouches[0].clientY || domEvent.clientY;\n var pageX = domEventChangedTouches && domEventChangedTouches[0].pageX || domEvent.pageX;\n var pageY = domEventChangedTouches && domEventChangedTouches[0].pageY || domEvent.pageY;\n var preventDefault = typeof domEvent.preventDefault === 'function' ? domEvent.preventDefault.bind(domEvent) : emptyFunction;\n var timestamp = domEvent.timeStamp;\n\n function normalizeTouches(touches) {\n return Array.prototype.slice.call(touches).map(touch => {\n return {\n force: touch.force,\n identifier: normalizeIdentifier(touch.identifier),\n\n get locationX() {\n return locationX(touch.clientX);\n },\n\n get locationY() {\n return locationY(touch.clientY);\n },\n\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target,\n timestamp\n };\n });\n }\n\n if (domEventChangedTouches != null) {\n changedTouches = normalizeTouches(domEventChangedTouches);\n touches = normalizeTouches(domEvent.touches);\n } else {\n var emulatedTouches = [{\n force,\n identifier,\n\n get locationX() {\n return locationX(clientX);\n },\n\n get locationY() {\n return locationY(clientY);\n },\n\n pageX,\n pageY,\n target: domEvent.target,\n timestamp\n }];\n changedTouches = emulatedTouches;\n touches = domEventType === 'mouseup' || domEventType === 'dragstart' ? emptyArray : emulatedTouches;\n }\n\n var responderEvent = {\n bubbles: true,\n cancelable: true,\n // `currentTarget` is set before dispatch\n currentTarget: null,\n defaultPrevented: domEvent.defaultPrevented,\n dispatchConfig: emptyObject,\n eventPhase: domEvent.eventPhase,\n\n isDefaultPrevented() {\n return domEvent.defaultPrevented;\n },\n\n isPropagationStopped() {\n return propagationWasStopped;\n },\n\n isTrusted: domEvent.isTrusted,\n nativeEvent: {\n altKey: false,\n ctrlKey: false,\n metaKey,\n shiftKey,\n changedTouches,\n force,\n identifier,\n\n get locationX() {\n return locationX(clientX);\n },\n\n get locationY() {\n return locationY(clientY);\n },\n\n pageX,\n pageY,\n target: domEvent.target,\n timestamp,\n touches,\n type: domEventType\n },\n persist: emptyFunction,\n preventDefault,\n\n stopPropagation() {\n propagationWasStopped = true;\n },\n\n target: domEvent.target,\n timeStamp: timestamp,\n touchHistory: responderTouchHistoryStore.touchHistory\n }; // Using getters and functions serves two purposes:\n // 1) The value of `currentTarget` is not initially available.\n // 2) Measuring the clientRect may cause layout jank and should only be done on-demand.\n\n function locationX(x) {\n rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n if (rect) {\n return x - rect.left;\n }\n }\n\n function locationY(y) {\n rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n if (rect) {\n return y - rect.top;\n }\n }\n\n return responderEvent;\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\nexport var BLUR = 'blur';\nexport var CONTEXT_MENU = 'contextmenu';\nexport var FOCUS_OUT = 'focusout';\nexport var MOUSE_DOWN = 'mousedown';\nexport var MOUSE_MOVE = 'mousemove';\nexport var MOUSE_UP = 'mouseup';\nexport var MOUSE_CANCEL = 'dragstart';\nexport var TOUCH_START = 'touchstart';\nexport var TOUCH_MOVE = 'touchmove';\nexport var TOUCH_END = 'touchend';\nexport var TOUCH_CANCEL = 'touchcancel';\nexport var SCROLL = 'scroll';\nexport var SELECT = 'select';\nexport var SELECTION_CHANGE = 'selectionchange';\nexport function isStartish(eventType) {\n return eventType === TOUCH_START || eventType === MOUSE_DOWN;\n}\nexport function isMoveish(eventType) {\n return eventType === TOUCH_MOVE || eventType === MOUSE_MOVE;\n}\nexport function isEndish(eventType) {\n return eventType === TOUCH_END || eventType === MOUSE_UP || isCancelish(eventType);\n}\nexport function isCancelish(eventType) {\n return eventType === TOUCH_CANCEL || eventType === MOUSE_CANCEL;\n}\nexport function isScroll(eventType) {\n return eventType === SCROLL;\n}\nexport function isSelectionChange(eventType) {\n return eventType === SELECT || eventType === SELECTION_CHANGE;\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\nimport isSelectionValid from '../../modules/isSelectionValid';\nvar keyName = '__reactResponderId';\n\nfunction getEventPath(domEvent) {\n // The 'selectionchange' event always has the 'document' as the target.\n // Use the anchor node as the initial target to reconstruct a path.\n // (We actually only need the first \"responder\" node in practice.)\n if (domEvent.type === 'selectionchange') {\n var target = window.getSelection().anchorNode;\n return composedPathFallback(target);\n } else {\n var path = domEvent.composedPath != null ? domEvent.composedPath() : composedPathFallback(domEvent.target);\n return path;\n }\n}\n\nfunction composedPathFallback(target) {\n var path = [];\n\n while (target != null && target !== document.body) {\n path.push(target);\n target = target.parentNode;\n }\n\n return path;\n}\n/**\n * Retrieve the responderId from a host node\n */\n\n\nfunction getResponderId(node) {\n if (node != null) {\n return node[keyName];\n }\n\n return null;\n}\n/**\n * Store the responderId on a host node\n */\n\n\nexport function setResponderId(node, id) {\n if (node != null) {\n node[keyName] = id;\n }\n}\n/**\n * Filter the event path to contain only the nodes attached to the responder system\n */\n\nexport function getResponderPaths(domEvent) {\n var idPath = [];\n var nodePath = [];\n var eventPath = getEventPath(domEvent);\n\n for (var i = 0; i < eventPath.length; i++) {\n var node = eventPath[i];\n var id = getResponderId(node);\n\n if (id != null) {\n idPath.push(id);\n nodePath.push(node);\n }\n }\n\n return {\n idPath,\n nodePath\n };\n}\n/**\n * Walk the paths and find the first common ancestor\n */\n\nexport function getLowestCommonAncestor(pathA, pathB) {\n var pathALength = pathA.length;\n var pathBLength = pathB.length;\n\n if ( // If either path is empty\n pathALength === 0 || pathBLength === 0 || // If the last elements aren't the same there can't be a common ancestor\n // that is connected to the responder system\n pathA[pathALength - 1] !== pathB[pathBLength - 1]) {\n return null;\n }\n\n var itemA = pathA[0];\n var indexA = 0;\n var itemB = pathB[0];\n var indexB = 0; // If A is deeper, skip indices that can't match.\n\n if (pathALength - pathBLength > 0) {\n indexA = pathALength - pathBLength;\n itemA = pathA[indexA];\n pathALength = pathBLength;\n } // If B is deeper, skip indices that can't match\n\n\n if (pathBLength - pathALength > 0) {\n indexB = pathBLength - pathALength;\n itemB = pathB[indexB];\n pathBLength = pathALength;\n } // Walk in lockstep until a match is found\n\n\n var depth = pathALength;\n\n while (depth--) {\n if (itemA === itemB) {\n return itemA;\n }\n\n itemA = pathA[indexA++];\n itemB = pathB[indexB++];\n }\n\n return null;\n}\n/**\n * Determine whether any of the active touches are within the current responder.\n * This cannot rely on W3C `targetTouches`, as neither IE11 nor Safari implement it.\n */\n\nexport function hasTargetTouches(target, touches) {\n if (!touches || touches.length === 0) {\n return false;\n }\n\n for (var i = 0; i < touches.length; i++) {\n var node = touches[i].target;\n\n if (node != null) {\n if (target.contains(node)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\n * Ignore 'selectionchange' events that don't correspond with a person's intent to\n * select text.\n */\n\nexport function hasValidSelection(domEvent) {\n if (domEvent.type === 'selectionchange') {\n return isSelectionValid();\n }\n\n return domEvent.type === 'select';\n}\n/**\n * Events are only valid if the primary button was used without specific modifier keys.\n */\n\nexport function isPrimaryPointerDown(domEvent) {\n var altKey = domEvent.altKey,\n button = domEvent.button,\n buttons = domEvent.buttons,\n ctrlKey = domEvent.ctrlKey,\n type = domEvent.type;\n var isTouch = type === 'touchstart' || type === 'touchmove';\n var isPrimaryMouseDown = type === 'mousedown' && (button === 0 || buttons === 1);\n var isPrimaryMouseMove = type === 'mousemove' && buttons === 1;\n var noModifiers = altKey === false && ctrlKey === false;\n\n if (isTouch || isPrimaryMouseDown && noModifiers || isPrimaryMouseMove && noModifiers) {\n return true;\n }\n\n return false;\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\nexport default function isSelectionValid() {\n var selection = window.getSelection();\n var string = selection.toString();\n var anchorNode = selection.anchorNode;\n var focusNode = selection.focusNode;\n var isTextNode = anchorNode && anchorNode.nodeType === window.Node.TEXT_NODE || focusNode && focusNode.nodeType === window.Node.TEXT_NODE;\n return string.length >= 1 && string !== '\\n' && isTextNode;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport { isStartish, isMoveish, isEndish } from './ResponderEventTypes';\n\n/**\n * Tracks the position and time of each active touch by `touch.identifier`. We\n * should typically only see IDs in the range of 1-20 because IDs get recycled\n * when touches end and start again.\n */\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar MAX_TOUCH_BANK = 20;\n\nfunction timestampForTouch(touch) {\n // The legacy internal implementation provides \"timeStamp\", which has been\n // renamed to \"timestamp\".\n return touch.timeStamp || touch.timestamp;\n}\n/**\n * TODO: Instead of making gestures recompute filtered velocity, we could\n * include a built in velocity computation that can be reused globally.\n */\n\n\nfunction createTouchRecord(touch) {\n return {\n touchActive: true,\n startPageX: touch.pageX,\n startPageY: touch.pageY,\n startTimeStamp: timestampForTouch(touch),\n currentPageX: touch.pageX,\n currentPageY: touch.pageY,\n currentTimeStamp: timestampForTouch(touch),\n previousPageX: touch.pageX,\n previousPageY: touch.pageY,\n previousTimeStamp: timestampForTouch(touch)\n };\n}\n\nfunction resetTouchRecord(touchRecord, touch) {\n touchRecord.touchActive = true;\n touchRecord.startPageX = touch.pageX;\n touchRecord.startPageY = touch.pageY;\n touchRecord.startTimeStamp = timestampForTouch(touch);\n touchRecord.currentPageX = touch.pageX;\n touchRecord.currentPageY = touch.pageY;\n touchRecord.currentTimeStamp = timestampForTouch(touch);\n touchRecord.previousPageX = touch.pageX;\n touchRecord.previousPageY = touch.pageY;\n touchRecord.previousTimeStamp = timestampForTouch(touch);\n}\n\nfunction getTouchIdentifier(_ref) {\n var identifier = _ref.identifier;\n\n if (identifier == null) {\n console.error('Touch object is missing identifier.');\n }\n\n if (__DEV__) {\n if (identifier > MAX_TOUCH_BANK) {\n console.error('Touch identifier %s is greater than maximum supported %s which causes ' + 'performance issues backfilling array locations for all of the indices.', identifier, MAX_TOUCH_BANK);\n }\n }\n\n return identifier;\n}\n\nfunction recordTouchStart(touch, touchHistory) {\n var identifier = getTouchIdentifier(touch);\n var touchRecord = touchHistory.touchBank[identifier];\n\n if (touchRecord) {\n resetTouchRecord(touchRecord, touch);\n } else {\n touchHistory.touchBank[identifier] = createTouchRecord(touch);\n }\n\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\n\nfunction recordTouchMove(touch, touchHistory) {\n var touchRecord = touchHistory.touchBank[getTouchIdentifier(touch)];\n\n if (touchRecord) {\n touchRecord.touchActive = true;\n touchRecord.previousPageX = touchRecord.currentPageX;\n touchRecord.previousPageY = touchRecord.currentPageY;\n touchRecord.previousTimeStamp = touchRecord.currentTimeStamp;\n touchRecord.currentPageX = touch.pageX;\n touchRecord.currentPageY = touch.pageY;\n touchRecord.currentTimeStamp = timestampForTouch(touch);\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n } else {\n console.warn('Cannot record touch move without a touch start.\\n', \"Touch Move: \" + printTouch(touch) + \"\\n\", \"Touch Bank: \" + printTouchBank(touchHistory));\n }\n}\n\nfunction recordTouchEnd(touch, touchHistory) {\n var touchRecord = touchHistory.touchBank[getTouchIdentifier(touch)];\n\n if (touchRecord) {\n touchRecord.touchActive = false;\n touchRecord.previousPageX = touchRecord.currentPageX;\n touchRecord.previousPageY = touchRecord.currentPageY;\n touchRecord.previousTimeStamp = touchRecord.currentTimeStamp;\n touchRecord.currentPageX = touch.pageX;\n touchRecord.currentPageY = touch.pageY;\n touchRecord.currentTimeStamp = timestampForTouch(touch);\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n } else {\n console.warn('Cannot record touch end without a touch start.\\n', \"Touch End: \" + printTouch(touch) + \"\\n\", \"Touch Bank: \" + printTouchBank(touchHistory));\n }\n}\n\nfunction printTouch(touch) {\n return JSON.stringify({\n identifier: touch.identifier,\n pageX: touch.pageX,\n pageY: touch.pageY,\n timestamp: timestampForTouch(touch)\n });\n}\n\nfunction printTouchBank(touchHistory) {\n var touchBank = touchHistory.touchBank;\n var printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK));\n\n if (touchBank.length > MAX_TOUCH_BANK) {\n printed += ' (original size: ' + touchBank.length + ')';\n }\n\n return printed;\n}\n\nexport class ResponderTouchHistoryStore {\n constructor() {\n this._touchHistory = {\n touchBank: [],\n //Array\n numberActiveTouches: 0,\n // If there is only one active touch, we remember its location. This prevents\n // us having to loop through all of the touches all the time in the most\n // common case.\n indexOfSingleActiveTouch: -1,\n mostRecentTimeStamp: 0\n };\n }\n\n recordTouchTrack(topLevelType, nativeEvent) {\n var touchHistory = this._touchHistory;\n\n if (isMoveish(topLevelType)) {\n nativeEvent.changedTouches.forEach(touch => recordTouchMove(touch, touchHistory));\n } else if (isStartish(topLevelType)) {\n nativeEvent.changedTouches.forEach(touch => recordTouchStart(touch, touchHistory));\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n\n if (touchHistory.numberActiveTouches === 1) {\n touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier;\n }\n } else if (isEndish(topLevelType)) {\n nativeEvent.changedTouches.forEach(touch => recordTouchEnd(touch, touchHistory));\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n\n if (touchHistory.numberActiveTouches === 1) {\n var touchBank = touchHistory.touchBank;\n\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrackToCheck = touchBank[i];\n\n if (touchTrackToCheck != null && touchTrackToCheck.touchActive) {\n touchHistory.indexOfSingleActiveTouch = i;\n break;\n }\n }\n\n if (__DEV__) {\n var activeRecord = touchBank[touchHistory.indexOfSingleActiveTouch];\n\n if (!(activeRecord != null && activeRecord.touchActive)) {\n console.error('Cannot find single active touch.');\n }\n }\n }\n }\n }\n\n get touchHistory() {\n return this._touchHistory;\n }\n\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\n\n/**\n * RESPONDER EVENT SYSTEM\n *\n * A single, global \"interaction lock\" on views. For a view to be the \"responder\" means\n * that pointer interactions are exclusive to that view and none other. The \"interaction\n * lock\" can be transferred (only) to ancestors of the current \"responder\" as long as\n * pointers continue to be active.\n *\n * Responder being granted:\n *\n * A view can become the \"responder\" after the following events:\n * * \"pointerdown\" (implemented using \"touchstart\", \"mousedown\")\n * * \"pointermove\" (implemented using \"touchmove\", \"mousemove\")\n * * \"scroll\" (while a pointer is down)\n * * \"selectionchange\" (while a pointer is down)\n *\n * If nothing is already the \"responder\", the event propagates to (capture) and from\n * (bubble) the event target until a view returns `true` for\n * `on*ShouldSetResponder(Capture)`.\n *\n * If something is already the responder, the event propagates to (capture) and from\n * (bubble) the lowest common ancestor of the event target and the current \"responder\".\n * Then negotiation happens between the current \"responder\" and a view that wants to\n * become the \"responder\": see the timing diagram below.\n *\n * (NOTE: Scrolled views either automatically become the \"responder\" or release the\n * \"interaction lock\". A native scroll view that isn't built on top of the responder\n * system must result in the current \"responder\" being notified that it no longer has\n * the \"interaction lock\" - the native system has taken over.\n *\n * Responder being released:\n *\n * As soon as there are no more active pointers that *started* inside descendants\n * of the *current* \"responder\", an `onResponderRelease` event is dispatched to the\n * current \"responder\", and the responder lock is released.\n *\n * Typical sequence of events:\n * * startShouldSetResponder\n * * responderGrant/Reject\n * * responderStart\n * * responderMove\n * * responderEnd\n * * responderRelease\n */\n\n/* Negotiation Performed\n +-----------------------+\n / \\\nProcess low level events to + Current Responder + wantsResponderID\ndetermine who to perform negot-| (if any exists at all) |\niation/transition | Otherwise just pass through|\n-------------------------------+----------------------------+------------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +--------------+ | |\n | onTouchStart | | |\n +------+-------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onStartShouldSetResponder|----->| onResponderStart (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderReject\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest | |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderStart|\n | | +----------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +-------------+ | |\n | onTouchMove | | |\n +------+------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onMoveShouldSetResponder |----->| onResponderMove (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderReject\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest| |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderMove |\n | | +----------------+\n | |\n | |\n Some active touch started| |\n inside current responder | +------------------------+ |\n +------------------------->| onResponderEnd | |\n | | +------------------------+ |\n +---+---------+ | |\n | onTouchEnd | | |\n +---+---------+ | |\n | | +------------------------+ |\n +------------------------->| onResponderEnd | |\n No active touches started| +-----------+------------+ |\n inside current responder | | |\n | v |\n | +------------------------+ |\n | | onResponderRelease | |\n | +------------------------+ |\n | |\n + + */\nimport createResponderEvent from './createResponderEvent';\nimport { isCancelish, isEndish, isMoveish, isScroll, isSelectionChange, isStartish } from './ResponderEventTypes';\nimport { getLowestCommonAncestor, getResponderPaths, hasTargetTouches, hasValidSelection, isPrimaryPointerDown, setResponderId } from './utils';\nimport { ResponderTouchHistoryStore } from './ResponderTouchHistoryStore';\nimport canUseDOM from '../canUseDom';\n/* ------------ TYPES ------------ */\n\nvar emptyObject = {};\n/* ------------ IMPLEMENTATION ------------ */\n\nvar startRegistration = ['onStartShouldSetResponderCapture', 'onStartShouldSetResponder', {\n bubbles: true\n}];\nvar moveRegistration = ['onMoveShouldSetResponderCapture', 'onMoveShouldSetResponder', {\n bubbles: true\n}];\nvar scrollRegistration = ['onScrollShouldSetResponderCapture', 'onScrollShouldSetResponder', {\n bubbles: false\n}];\nvar shouldSetResponderEvents = {\n touchstart: startRegistration,\n mousedown: startRegistration,\n touchmove: moveRegistration,\n mousemove: moveRegistration,\n scroll: scrollRegistration\n};\nvar emptyResponder = {\n id: null,\n idPath: null,\n node: null\n};\nvar responderListenersMap = new Map();\nvar isEmulatingMouseEvents = false;\nvar trackedTouchCount = 0;\nvar currentResponder = {\n id: null,\n node: null,\n idPath: null\n};\nvar responderTouchHistoryStore = new ResponderTouchHistoryStore();\n\nfunction changeCurrentResponder(responder) {\n currentResponder = responder;\n}\n\nfunction getResponderConfig(id) {\n var config = responderListenersMap.get(id);\n return config != null ? config : emptyObject;\n}\n/**\n * Process native events\n *\n * A single event listener is used to manage the responder system.\n * All pointers are tracked in the ResponderTouchHistoryStore. Native events\n * are interpreted in terms of the Responder System and checked to see if\n * the responder should be transferred. Each host node that is attached to\n * the Responder System has an ID, which is used to look up its associated\n * callbacks.\n */\n\n\nfunction eventListener(domEvent) {\n var eventType = domEvent.type;\n var eventTarget = domEvent.target;\n /**\n * Manage emulated events and early bailout.\n * Since PointerEvent is not used yet (lack of support in older Safari), it's\n * necessary to manually manage the mess of browser touch/mouse events.\n * And bailout early for termination events when there is no active responder.\n */\n // Flag when browser may produce emulated events\n\n if (eventType === 'touchstart') {\n isEmulatingMouseEvents = true;\n } // Remove flag when browser will not produce emulated events\n\n\n if (eventType === 'touchmove' || trackedTouchCount > 1) {\n isEmulatingMouseEvents = false;\n } // Ignore various events in particular circumstances\n\n\n if ( // Ignore browser emulated mouse events\n eventType === 'mousedown' && isEmulatingMouseEvents || eventType === 'mousemove' && isEmulatingMouseEvents || // Ignore mousemove if a mousedown didn't occur first\n eventType === 'mousemove' && trackedTouchCount < 1) {\n return;\n } // Remove flag after emulated events are finished\n\n\n if (isEmulatingMouseEvents && eventType === 'mouseup') {\n if (trackedTouchCount === 0) {\n isEmulatingMouseEvents = false;\n }\n\n return;\n }\n\n var isStartEvent = isStartish(eventType) && isPrimaryPointerDown(domEvent);\n var isMoveEvent = isMoveish(eventType);\n var isEndEvent = isEndish(eventType);\n var isScrollEvent = isScroll(eventType);\n var isSelectionChangeEvent = isSelectionChange(eventType);\n var responderEvent = createResponderEvent(domEvent, responderTouchHistoryStore);\n /**\n * Record the state of active pointers\n */\n\n if (isStartEvent || isMoveEvent || isEndEvent) {\n if (domEvent.touches) {\n trackedTouchCount = domEvent.touches.length;\n } else {\n if (isStartEvent) {\n trackedTouchCount = 1;\n } else if (isEndEvent) {\n trackedTouchCount = 0;\n }\n }\n\n responderTouchHistoryStore.recordTouchTrack(eventType, responderEvent.nativeEvent);\n }\n /**\n * Responder System logic\n */\n\n\n var eventPaths = getResponderPaths(domEvent);\n var wasNegotiated = false;\n var wantsResponder; // If an event occured that might change the current responder...\n\n if (isStartEvent || isMoveEvent || isScrollEvent && trackedTouchCount > 0) {\n // If there is already a responder, prune the event paths to the lowest common ancestor\n // of the existing responder and deepest target of the event.\n var currentResponderIdPath = currentResponder.idPath;\n var eventIdPath = eventPaths.idPath;\n\n if (currentResponderIdPath != null && eventIdPath != null) {\n var lowestCommonAncestor = getLowestCommonAncestor(currentResponderIdPath, eventIdPath);\n\n if (lowestCommonAncestor != null) {\n var indexOfLowestCommonAncestor = eventIdPath.indexOf(lowestCommonAncestor); // Skip the current responder so it doesn't receive unexpected \"shouldSet\" events.\n\n var index = indexOfLowestCommonAncestor + (lowestCommonAncestor === currentResponder.id ? 1 : 0);\n eventPaths = {\n idPath: eventIdPath.slice(index),\n nodePath: eventPaths.nodePath.slice(index)\n };\n } else {\n eventPaths = null;\n }\n }\n\n if (eventPaths != null) {\n // If a node wants to become the responder, attempt to transfer.\n wantsResponder = findWantsResponder(eventPaths, domEvent, responderEvent);\n\n if (wantsResponder != null) {\n // Sets responder if none exists, or negotates with existing responder.\n attemptTransfer(responderEvent, wantsResponder);\n wasNegotiated = true;\n }\n }\n } // If there is now a responder, invoke its callbacks for the lifecycle of the gesture.\n\n\n if (currentResponder.id != null && currentResponder.node != null) {\n var _currentResponder = currentResponder,\n id = _currentResponder.id,\n node = _currentResponder.node;\n\n var _getResponderConfig = getResponderConfig(id),\n onResponderStart = _getResponderConfig.onResponderStart,\n onResponderMove = _getResponderConfig.onResponderMove,\n onResponderEnd = _getResponderConfig.onResponderEnd,\n onResponderRelease = _getResponderConfig.onResponderRelease,\n onResponderTerminate = _getResponderConfig.onResponderTerminate,\n onResponderTerminationRequest = _getResponderConfig.onResponderTerminationRequest;\n\n responderEvent.bubbles = false;\n responderEvent.cancelable = false;\n responderEvent.currentTarget = node; // Start\n\n if (isStartEvent) {\n if (onResponderStart != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderStart';\n onResponderStart(responderEvent);\n }\n } // Move\n else if (isMoveEvent) {\n if (onResponderMove != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderMove';\n onResponderMove(responderEvent);\n }\n } else {\n var isTerminateEvent = isCancelish(eventType) || // native context menu\n eventType === 'contextmenu' || // window blur\n eventType === 'blur' && eventTarget === window || // responder (or ancestors) blur\n eventType === 'blur' && eventTarget.contains(node) && domEvent.relatedTarget !== node || // native scroll without using a pointer\n isScrollEvent && trackedTouchCount === 0 || // native scroll on node that is parent of the responder (allow siblings to scroll)\n isScrollEvent && eventTarget.contains(node) && eventTarget !== node || // native select/selectionchange on node\n isSelectionChangeEvent && hasValidSelection(domEvent);\n var isReleaseEvent = isEndEvent && !isTerminateEvent && !hasTargetTouches(node, domEvent.touches); // End\n\n if (isEndEvent) {\n if (onResponderEnd != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderEnd';\n onResponderEnd(responderEvent);\n }\n } // Release\n\n\n if (isReleaseEvent) {\n if (onResponderRelease != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderRelease';\n onResponderRelease(responderEvent);\n }\n\n changeCurrentResponder(emptyResponder);\n } // Terminate\n\n\n if (isTerminateEvent) {\n var shouldTerminate = true; // Responders can still avoid termination but only for these events.\n\n if (eventType === 'contextmenu' || eventType === 'scroll' || eventType === 'selectionchange') {\n // Only call this function is it wasn't already called during negotiation.\n if (wasNegotiated) {\n shouldTerminate = false;\n } else if (onResponderTerminationRequest != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderTerminationRequest';\n\n if (onResponderTerminationRequest(responderEvent) === false) {\n shouldTerminate = false;\n }\n }\n }\n\n if (shouldTerminate) {\n if (onResponderTerminate != null) {\n responderEvent.dispatchConfig.registrationName = 'onResponderTerminate';\n onResponderTerminate(responderEvent);\n }\n\n changeCurrentResponder(emptyResponder);\n isEmulatingMouseEvents = false;\n trackedTouchCount = 0;\n }\n }\n }\n }\n}\n/**\n * Walk the event path to/from the target node. At each node, stop and call the\n * relevant \"shouldSet\" functions for the given event type. If any of those functions\n * call \"stopPropagation\" on the event, stop searching for a responder.\n */\n\n\nfunction findWantsResponder(eventPaths, domEvent, responderEvent) {\n var shouldSetCallbacks = shouldSetResponderEvents[domEvent.type]; // for Flow\n\n if (shouldSetCallbacks != null) {\n var idPath = eventPaths.idPath,\n nodePath = eventPaths.nodePath;\n var shouldSetCallbackCaptureName = shouldSetCallbacks[0];\n var shouldSetCallbackBubbleName = shouldSetCallbacks[1];\n var bubbles = shouldSetCallbacks[2].bubbles;\n\n var check = function check(id, node, callbackName) {\n var config = getResponderConfig(id);\n var shouldSetCallback = config[callbackName];\n\n if (shouldSetCallback != null) {\n responderEvent.currentTarget = node;\n\n if (shouldSetCallback(responderEvent) === true) {\n // Start the path from the potential responder\n var prunedIdPath = idPath.slice(idPath.indexOf(id));\n return {\n id,\n node,\n idPath: prunedIdPath\n };\n }\n }\n }; // capture\n\n\n for (var i = idPath.length - 1; i >= 0; i--) {\n var id = idPath[i];\n var node = nodePath[i];\n var result = check(id, node, shouldSetCallbackCaptureName);\n\n if (result != null) {\n return result;\n }\n\n if (responderEvent.isPropagationStopped() === true) {\n return;\n }\n } // bubble\n\n\n if (bubbles) {\n for (var _i = 0; _i < idPath.length; _i++) {\n var _id = idPath[_i];\n var _node = nodePath[_i];\n\n var _result = check(_id, _node, shouldSetCallbackBubbleName);\n\n if (_result != null) {\n return _result;\n }\n\n if (responderEvent.isPropagationStopped() === true) {\n return;\n }\n }\n } else {\n var _id2 = idPath[0];\n var _node2 = nodePath[0];\n var target = domEvent.target;\n\n if (target === _node2) {\n return check(_id2, _node2, shouldSetCallbackBubbleName);\n }\n }\n }\n}\n/**\n * Attempt to transfer the responder.\n */\n\n\nfunction attemptTransfer(responderEvent, wantsResponder) {\n var _currentResponder2 = currentResponder,\n currentId = _currentResponder2.id,\n currentNode = _currentResponder2.node;\n var id = wantsResponder.id,\n node = wantsResponder.node;\n\n var _getResponderConfig2 = getResponderConfig(id),\n onResponderGrant = _getResponderConfig2.onResponderGrant,\n onResponderReject = _getResponderConfig2.onResponderReject;\n\n responderEvent.bubbles = false;\n responderEvent.cancelable = false;\n responderEvent.currentTarget = node; // Set responder\n\n if (currentId == null) {\n if (onResponderGrant != null) {\n responderEvent.currentTarget = node;\n responderEvent.dispatchConfig.registrationName = 'onResponderGrant';\n onResponderGrant(responderEvent);\n }\n\n changeCurrentResponder(wantsResponder);\n } // Negotiate with current responder\n else {\n var _getResponderConfig3 = getResponderConfig(currentId),\n onResponderTerminate = _getResponderConfig3.onResponderTerminate,\n onResponderTerminationRequest = _getResponderConfig3.onResponderTerminationRequest;\n\n var allowTransfer = true;\n\n if (onResponderTerminationRequest != null) {\n responderEvent.currentTarget = currentNode;\n responderEvent.dispatchConfig.registrationName = 'onResponderTerminationRequest';\n\n if (onResponderTerminationRequest(responderEvent) === false) {\n allowTransfer = false;\n }\n }\n\n if (allowTransfer) {\n // Terminate existing responder\n if (onResponderTerminate != null) {\n responderEvent.currentTarget = currentNode;\n responderEvent.dispatchConfig.registrationName = 'onResponderTerminate';\n onResponderTerminate(responderEvent);\n } // Grant next responder\n\n\n if (onResponderGrant != null) {\n responderEvent.currentTarget = node;\n responderEvent.dispatchConfig.registrationName = 'onResponderGrant';\n onResponderGrant(responderEvent);\n }\n\n changeCurrentResponder(wantsResponder);\n } else {\n // Reject responder request\n if (onResponderReject != null) {\n responderEvent.currentTarget = node;\n responderEvent.dispatchConfig.registrationName = 'onResponderReject';\n onResponderReject(responderEvent);\n }\n }\n }\n}\n/* ------------ PUBLIC API ------------ */\n\n/**\n * Attach Listeners\n *\n * Use native events as ReactDOM doesn't have a non-plugin API to implement\n * this system.\n */\n\n\nvar documentEventsCapturePhase = ['blur', 'scroll'];\nvar documentEventsBubblePhase = [// mouse\n'mousedown', 'mousemove', 'mouseup', 'dragstart', // touch\n'touchstart', 'touchmove', 'touchend', 'touchcancel', // other\n'contextmenu', 'select', 'selectionchange'];\nexport function attachListeners() {\n if (canUseDOM && window.__reactResponderSystemActive == null) {\n window.addEventListener('blur', eventListener);\n documentEventsBubblePhase.forEach(eventType => {\n document.addEventListener(eventType, eventListener);\n });\n documentEventsCapturePhase.forEach(eventType => {\n document.addEventListener(eventType, eventListener, true);\n });\n window.__reactResponderSystemActive = true;\n }\n}\n/**\n * Register a node with the ResponderSystem.\n */\n\nexport function addNode(id, node, config) {\n setResponderId(node, id);\n responderListenersMap.set(id, config);\n}\n/**\n * Unregister a node with the ResponderSystem.\n */\n\nexport function removeNode(id) {\n if (currentResponder.id === id) {\n terminateResponder();\n }\n\n if (responderListenersMap.has(id)) {\n responderListenersMap.delete(id);\n }\n}\n/**\n * Allow the current responder to be terminated from within components to support\n * more complex requirements, such as use with other React libraries for working\n * with scroll views, input views, etc.\n */\n\nexport function terminateResponder() {\n var _currentResponder3 = currentResponder,\n id = _currentResponder3.id,\n node = _currentResponder3.node;\n\n if (id != null && node != null) {\n var _getResponderConfig4 = getResponderConfig(id),\n onResponderTerminate = _getResponderConfig4.onResponderTerminate;\n\n if (onResponderTerminate != null) {\n var event = createResponderEvent({}, responderTouchHistoryStore);\n event.currentTarget = node;\n onResponderTerminate(event);\n }\n\n changeCurrentResponder(emptyResponder);\n }\n\n isEmulatingMouseEvents = false;\n trackedTouchCount = 0;\n}\n/**\n * Allow unit tests to inspect the current responder in the system.\n * FOR TESTING ONLY.\n */\n\nexport function getResponderNode() {\n return currentResponder.node;\n}","/**\n * Copyright (c) Nicolas Gallagher\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 */\n\n/**\n * Hook for integrating the Responder System into React\n *\n * function SomeComponent({ onStartShouldSetResponder }) {\n * const ref = useRef(null);\n * useResponderEvents(ref, { onStartShouldSetResponder });\n * return
\n * }\n */\nimport * as React from 'react';\nimport * as ResponderSystem from './ResponderSystem';\nvar emptyObject = {};\nvar idCounter = 0;\n\nfunction useStable(getInitialValue) {\n var ref = React.useRef(null);\n\n if (ref.current == null) {\n ref.current = getInitialValue();\n }\n\n return ref.current;\n}\n\nexport default function useResponderEvents(hostRef, config) {\n if (config === void 0) {\n config = emptyObject;\n }\n\n var id = useStable(() => idCounter++);\n var isAttachedRef = React.useRef(false); // This is a separate effects so it doesn't run when the config changes.\n // On initial mount, attach global listeners if needed.\n // On unmount, remove node potentially attached to the Responder System.\n\n React.useEffect(() => {\n ResponderSystem.attachListeners();\n return () => {\n ResponderSystem.removeNode(id);\n };\n }, [id]); // Register and unregister with the Responder System as necessary\n\n React.useEffect(() => {\n var _config = config,\n onMoveShouldSetResponder = _config.onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture = _config.onMoveShouldSetResponderCapture,\n onScrollShouldSetResponder = _config.onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture = _config.onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder = _config.onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture = _config.onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder = _config.onStartShouldSetResponder,\n onStartShouldSetResponderCapture = _config.onStartShouldSetResponderCapture;\n var requiresResponderSystem = onMoveShouldSetResponder != null || onMoveShouldSetResponderCapture != null || onScrollShouldSetResponder != null || onScrollShouldSetResponderCapture != null || onSelectionChangeShouldSetResponder != null || onSelectionChangeShouldSetResponderCapture != null || onStartShouldSetResponder != null || onStartShouldSetResponderCapture != null;\n var node = hostRef.current;\n\n if (requiresResponderSystem) {\n ResponderSystem.addNode(id, node, config);\n isAttachedRef.current = true;\n } else if (isAttachedRef.current) {\n ResponderSystem.removeNode(id);\n isAttachedRef.current = false;\n }\n }, [config, hostRef, id]);\n React.useDebugValue({\n isResponder: hostRef.current === ResponderSystem.getResponderNode()\n });\n React.useDebugValue(config);\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 */\nimport * as React from 'react';\nvar UNINITIALIZED = typeof Symbol === 'function' && typeof Symbol() === 'symbol' ? Symbol() : Object.freeze({});\nexport default function useStable(getInitialValue) {\n var ref = React.useRef(UNINITIALIZED);\n\n if (ref.current === UNINITIALIZED) {\n ref.current = getInitialValue();\n } // $FlowFixMe (#64650789) Trouble refining types where `Symbol` is concerned.\n\n\n return ref.current;\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport EventEmitter from './_EventEmitter';\nexport default EventEmitter;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport EventEmitter from '../emitter/EventEmitter'; // FIXME: use typed events\n\n/**\n * Global EventEmitter used by the native platform to emit events to JavaScript.\n * Events are identified by globally unique event names.\n *\n * NativeModules that emit events should instead subclass `NativeEventEmitter`.\n */\nexport default new EventEmitter();","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport Platform from '../../../exports/Platform';\nimport RCTDeviceEventEmitter from './RCTDeviceEventEmitter';\nimport invariant from 'fbjs/lib/invariant';\n\n/**\n * `NativeEventEmitter` is intended for use by Native Modules to emit events to\n * JavaScript listeners. If a `NativeModule` is supplied to the constructor, it\n * will be notified (via `addListener` and `removeListeners`) when the listener\n * count changes to manage \"native memory\".\n *\n * Currently, all native events are fired via a global `RCTDeviceEventEmitter`.\n * This means event names must be globally unique, and it means that call sites\n * can theoretically listen to `RCTDeviceEventEmitter` (although discouraged).\n */\nexport default class NativeEventEmitter {\n constructor(nativeModule) {\n if (Platform.OS === 'ios') {\n invariant(nativeModule != null, '`new NativeEventEmitter()` requires a non-null argument.');\n this._nativeModule = nativeModule;\n }\n }\n\n addListener(eventType, listener, context) {\n var _this$_nativeModule;\n\n (_this$_nativeModule = this._nativeModule) == null ? void 0 : _this$_nativeModule.addListener(eventType);\n var subscription = RCTDeviceEventEmitter.addListener(eventType, listener, context);\n return {\n remove: () => {\n if (subscription != null) {\n var _this$_nativeModule2;\n\n (_this$_nativeModule2 = this._nativeModule) == null ? void 0 : _this$_nativeModule2.removeListeners(1); // $FlowFixMe[incompatible-use]\n\n subscription.remove();\n subscription = null;\n }\n }\n };\n }\n /**\n * @deprecated Use `remove` on the EventSubscription from `addListener`.\n */\n\n\n removeListener(eventType, listener) {\n var _this$_nativeModule3;\n\n (_this$_nativeModule3 = this._nativeModule) == null ? void 0 : _this$_nativeModule3.removeListeners(1); // NOTE: This will report a deprecation notice via `console.error`.\n // $FlowFixMe[prop-missing] - `removeListener` exists but is deprecated.\n\n RCTDeviceEventEmitter.removeListener(eventType, listener);\n }\n\n emit(eventType) {\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 // Generally, `RCTDeviceEventEmitter` is directly invoked. But this is\n // included for completeness.\n RCTDeviceEventEmitter.emit(eventType, ...args);\n }\n\n removeAllListeners(eventType) {\n var _this$_nativeModule4;\n\n invariant(eventType != null, '`NativeEventEmitter.removeAllListener()` requires a non-null argument.');\n (_this$_nativeModule4 = this._nativeModule) == null ? void 0 : _this$_nativeModule4.removeListeners(this.listenerCount(eventType));\n RCTDeviceEventEmitter.removeAllListeners(eventType);\n }\n\n listenerCount(eventType) {\n return RCTDeviceEventEmitter.listenerCount(eventType);\n }\n\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport invariant from 'fbjs/lib/invariant';\n/**\n * Used to find the indices of the frames that overlap the given offsets. Useful for finding the\n * items that bound different windows of content, such as the visible area or the buffered overscan\n * area.\n */\n\nexport function elementsThatOverlapOffsets(offsets, itemCount, getFrameMetrics) {\n var out = [];\n var outLength = 0;\n\n for (var ii = 0; ii < itemCount; ii++) {\n var frame = getFrameMetrics(ii);\n var trailingOffset = frame.offset + frame.length;\n\n for (var kk = 0; kk < offsets.length; kk++) {\n if (out[kk] == null && trailingOffset >= offsets[kk]) {\n out[kk] = ii;\n outLength++;\n\n if (kk === offsets.length - 1) {\n invariant(outLength === offsets.length, 'bad offsets input, should be in increasing order: %s', JSON.stringify(offsets));\n return out;\n }\n }\n }\n }\n\n return out;\n}\n/**\n * Computes the number of elements in the `next` range that are new compared to the `prev` range.\n * Handy for calculating how many new items will be rendered when the render window changes so we\n * can restrict the number of new items render at once so that content can appear on the screen\n * faster.\n */\n\nexport function newRangeCount(prev, next) {\n return next.last - next.first + 1 - Math.max(0, 1 + Math.min(next.last, prev.last) - Math.max(next.first, prev.first));\n}\n/**\n * Custom logic for determining which items should be rendered given the current frame and scroll\n * metrics, as well as the previous render state. The algorithm may evolve over time, but generally\n * prioritizes the visible area first, then expands that with overscan regions ahead and behind,\n * biased in the direction of scroll.\n */\n\nexport function computeWindowedRenderLimits(data, getItemCount, maxToRenderPerBatch, windowSize, prev, getFrameMetricsApprox, scrollMetrics) {\n var itemCount = getItemCount(data);\n\n if (itemCount === 0) {\n return prev;\n }\n\n var offset = scrollMetrics.offset,\n velocity = scrollMetrics.velocity,\n visibleLength = scrollMetrics.visibleLength; // Start with visible area, then compute maximum overscan region by expanding from there, biased\n // in the direction of scroll. Total overscan area is capped, which should cap memory consumption\n // too.\n\n var visibleBegin = Math.max(0, offset);\n var visibleEnd = visibleBegin + visibleLength;\n var overscanLength = (windowSize - 1) * visibleLength; // Considering velocity seems to introduce more churn than it's worth.\n\n var leadFactor = 0.5; // Math.max(0, Math.min(1, velocity / 25 + 0.5));\n\n var fillPreference = velocity > 1 ? 'after' : velocity < -1 ? 'before' : 'none';\n var overscanBegin = Math.max(0, visibleBegin - (1 - leadFactor) * overscanLength);\n var overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);\n var lastItemOffset = getFrameMetricsApprox(itemCount - 1).offset;\n\n if (lastItemOffset < overscanBegin) {\n // Entire list is before our overscan window\n return {\n first: Math.max(0, itemCount - 1 - maxToRenderPerBatch),\n last: itemCount - 1\n };\n } // Find the indices that correspond to the items at the render boundaries we're targeting.\n\n\n var _elementsThatOverlapO = elementsThatOverlapOffsets([overscanBegin, visibleBegin, visibleEnd, overscanEnd], itemCount, getFrameMetricsApprox),\n overscanFirst = _elementsThatOverlapO[0],\n first = _elementsThatOverlapO[1],\n last = _elementsThatOverlapO[2],\n overscanLast = _elementsThatOverlapO[3];\n\n overscanFirst = overscanFirst == null ? 0 : overscanFirst;\n first = first == null ? Math.max(0, overscanFirst) : first;\n overscanLast = overscanLast == null ? itemCount - 1 : overscanLast;\n last = last == null ? Math.min(overscanLast, first + maxToRenderPerBatch - 1) : last;\n var visible = {\n first,\n last\n }; // We want to limit the number of new cells we're rendering per batch so that we can fill the\n // content on the screen quickly. If we rendered the entire overscan window at once, the user\n // could be staring at white space for a long time waiting for a bunch of offscreen content to\n // render.\n\n var newCellCount = newRangeCount(prev, visible);\n\n while (true) {\n if (first <= overscanFirst && last >= overscanLast) {\n // If we fill the entire overscan range, we're done.\n break;\n }\n\n var maxNewCells = newCellCount >= maxToRenderPerBatch;\n var firstWillAddMore = first <= prev.first || first > prev.last;\n var firstShouldIncrement = first > overscanFirst && (!maxNewCells || !firstWillAddMore);\n var lastWillAddMore = last >= prev.last || last < prev.first;\n var lastShouldIncrement = last < overscanLast && (!maxNewCells || !lastWillAddMore);\n\n if (maxNewCells && !firstShouldIncrement && !lastShouldIncrement) {\n // We only want to stop if we've hit maxNewCells AND we cannot increment first or last\n // without rendering new items. This let's us preserve as many already rendered items as\n // possible, reducing render churn and keeping the rendered overscan range as large as\n // possible.\n break;\n }\n\n if (firstShouldIncrement && !(fillPreference === 'after' && lastShouldIncrement && lastWillAddMore)) {\n if (firstWillAddMore) {\n newCellCount++;\n }\n\n first--;\n }\n\n if (lastShouldIncrement && !(fillPreference === 'before' && firstShouldIncrement && firstWillAddMore)) {\n if (lastWillAddMore) {\n newCellCount++;\n }\n\n last++;\n }\n }\n\n if (!(last >= first && first >= 0 && last < itemCount && first >= overscanFirst && last <= overscanLast && first <= visible.first && last >= visible.last)) {\n throw new Error('Bad window calculation ' + JSON.stringify({\n first,\n last,\n itemCount,\n overscanFirst,\n overscanLast,\n visible\n }));\n }\n\n return {\n first,\n last\n };\n}\nexport function keyExtractor(item, index) {\n if (typeof item === 'object' && (item == null ? void 0 : item.key) != null) {\n return item.key;\n }\n\n if (typeof item === 'object' && (item == null ? void 0 : item.id) != null) {\n return item.id;\n }\n\n return String(index);\n}","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nimport InteractionManager from '../../../exports/InteractionManager';\n/**\n * A simple class for batching up invocations of a low-pri callback. A timeout is set to run the\n * callback once after a delay, no matter how many times it's scheduled. Once the delay is reached,\n * InteractionManager.runAfterInteractions is used to invoke the callback after any hi-pri\n * interactions are done running.\n *\n * Make sure to cleanup with dispose(). Example:\n *\n * class Widget extends React.Component {\n * _batchedSave: new Batchinator(() => this._saveState, 1000);\n * _saveSate() {\n * // save this.state to disk\n * }\n * componentDidUpdate() {\n * this._batchedSave.schedule();\n * }\n * componentWillUnmount() {\n * this._batchedSave.dispose();\n * }\n * ...\n * }\n */\n\nclass Batchinator {\n constructor(callback, delayMS) {\n this._delay = delayMS;\n this._callback = callback;\n }\n /*\n * Cleanup any pending tasks.\n *\n * By default, if there is a pending task the callback is run immediately. Set the option abort to\n * true to not call the callback if it was pending.\n */\n\n\n dispose(options) {\n if (options === void 0) {\n options = {\n abort: false\n };\n }\n\n if (this._taskHandle) {\n this._taskHandle.cancel();\n\n if (!options.abort) {\n this._callback();\n }\n\n this._taskHandle = null;\n }\n }\n\n schedule() {\n if (this._taskHandle) {\n return;\n }\n\n var timeoutHandle = setTimeout(() => {\n this._taskHandle = InteractionManager.runAfterInteractions(() => {\n // Note that we clear the handle before invoking the callback so that if the callback calls\n // schedule again, it will actually schedule another task.\n this._taskHandle = null;\n\n this._callback();\n });\n }, this._delay);\n this._taskHandle = {\n cancel: () => clearTimeout(timeoutHandle)\n };\n }\n\n}\n\nexport default Batchinator;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\nclass Info {\n constructor() {\n this.any_blank_count = 0;\n this.any_blank_ms = 0;\n this.any_blank_speed_sum = 0;\n this.mostly_blank_count = 0;\n this.mostly_blank_ms = 0;\n this.pixels_blank = 0;\n this.pixels_sampled = 0;\n this.pixels_scrolled = 0;\n this.total_time_spent = 0;\n this.sample_count = 0;\n }\n\n}\n\nvar DEBUG = false;\nvar _listeners = [];\nvar _minSampleCount = 10;\n\nvar _sampleRate = DEBUG ? 1 : null;\n/**\n * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.\n * By default the sampling rate is set to zero and this will do nothing. If you want to collect\n * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.\n *\n * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with\n * `SceneTracker.getActiveScene` to determine the context of the events.\n */\n\n\nclass FillRateHelper {\n static addListener(callback) {\n if (_sampleRate === null) {\n console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');\n }\n\n _listeners.push(callback);\n\n return {\n remove: () => {\n _listeners = _listeners.filter(listener => callback !== listener);\n }\n };\n }\n\n static setSampleRate(sampleRate) {\n _sampleRate = sampleRate;\n }\n\n static setMinSampleCount(minSampleCount) {\n _minSampleCount = minSampleCount;\n }\n\n constructor(getFrameMetrics) {\n this._anyBlankStartTime = null;\n this._enabled = false;\n this._info = new Info();\n this._mostlyBlankStartTime = null;\n this._samplesStartTime = null;\n this._getFrameMetrics = getFrameMetrics;\n this._enabled = (_sampleRate || 0) > Math.random();\n\n this._resetData();\n }\n\n activate() {\n if (this._enabled && this._samplesStartTime == null) {\n DEBUG && console.debug('FillRateHelper: activate');\n this._samplesStartTime = global.performance.now();\n }\n }\n\n deactivateAndFlush() {\n if (!this._enabled) {\n return;\n }\n\n var start = this._samplesStartTime; // const for flow\n\n if (start == null) {\n DEBUG && console.debug('FillRateHelper: bail on deactivate with no start time');\n return;\n }\n\n if (this._info.sample_count < _minSampleCount) {\n // Don't bother with under-sampled events.\n this._resetData();\n\n return;\n }\n\n var total_time_spent = global.performance.now() - start;\n\n var info = _objectSpread(_objectSpread({}, this._info), {}, {\n total_time_spent\n });\n\n if (DEBUG) {\n var derived = {\n avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,\n avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),\n avg_speed_when_any_blank: this._info.any_blank_speed_sum / this._info.any_blank_count,\n any_blank_per_min: this._info.any_blank_count / (total_time_spent / 1000 / 60),\n any_blank_time_frac: this._info.any_blank_ms / total_time_spent,\n mostly_blank_per_min: this._info.mostly_blank_count / (total_time_spent / 1000 / 60),\n mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent\n };\n\n for (var key in derived) {\n derived[key] = Math.round(1000 * derived[key]) / 1000;\n }\n\n console.debug('FillRateHelper deactivateAndFlush: ', {\n derived,\n info\n });\n }\n\n _listeners.forEach(listener => listener(info));\n\n this._resetData();\n }\n\n computeBlankness(props, state, scrollMetrics) {\n if (!this._enabled || props.getItemCount(props.data) === 0 || this._samplesStartTime == null) {\n return 0;\n }\n\n var dOffset = scrollMetrics.dOffset,\n offset = scrollMetrics.offset,\n velocity = scrollMetrics.velocity,\n visibleLength = scrollMetrics.visibleLength; // Denominator metrics that we track for all events - most of the time there is no blankness and\n // we want to capture that.\n\n this._info.sample_count++;\n this._info.pixels_sampled += Math.round(visibleLength);\n this._info.pixels_scrolled += Math.round(Math.abs(dOffset));\n var scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec\n // Whether blank now or not, record the elapsed time blank if we were blank last time.\n\n var now = global.performance.now();\n\n if (this._anyBlankStartTime != null) {\n this._info.any_blank_ms += now - this._anyBlankStartTime;\n }\n\n this._anyBlankStartTime = null;\n\n if (this._mostlyBlankStartTime != null) {\n this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;\n }\n\n this._mostlyBlankStartTime = null;\n var blankTop = 0;\n var first = state.first;\n\n var firstFrame = this._getFrameMetrics(first);\n\n while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) {\n firstFrame = this._getFrameMetrics(first);\n first++;\n } // Only count blankTop if we aren't rendering the first item, otherwise we will count the header\n // as blank.\n\n\n if (firstFrame && first > 0) {\n blankTop = Math.min(visibleLength, Math.max(0, firstFrame.offset - offset));\n }\n\n var blankBottom = 0;\n var last = state.last;\n\n var lastFrame = this._getFrameMetrics(last);\n\n while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) {\n lastFrame = this._getFrameMetrics(last);\n last--;\n } // Only count blankBottom if we aren't rendering the last item, otherwise we will count the\n // footer as blank.\n\n\n if (lastFrame && last < props.getItemCount(props.data) - 1) {\n var bottomEdge = lastFrame.offset + lastFrame.length;\n blankBottom = Math.min(visibleLength, Math.max(0, offset + visibleLength - bottomEdge));\n }\n\n var pixels_blank = Math.round(blankTop + blankBottom);\n var blankness = pixels_blank / visibleLength;\n\n if (blankness > 0) {\n this._anyBlankStartTime = now;\n this._info.any_blank_speed_sum += scrollSpeed;\n this._info.any_blank_count++;\n this._info.pixels_blank += pixels_blank;\n\n if (blankness > 0.5) {\n this._mostlyBlankStartTime = now;\n this._info.mostly_blank_count++;\n }\n } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {\n this.deactivateAndFlush();\n }\n\n return blankness;\n }\n\n enabled() {\n return this._enabled;\n }\n\n _resetData() {\n this._anyBlankStartTime = null;\n this._info = new Info();\n this._mostlyBlankStartTime = null;\n this._samplesStartTime = null;\n }\n\n}\n\nexport default FillRateHelper;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\n'use strict';\n\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport invariant from 'fbjs/lib/invariant';\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n * visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nclass ViewabilityHelper {\n constructor(config) {\n if (config === void 0) {\n config = {\n viewAreaCoveragePercentThreshold: 0\n };\n }\n\n this._hasInteracted = false;\n this._timers = new Set();\n this._viewableIndices = [];\n this._viewableItems = new Map();\n this._config = config;\n }\n /**\n * Cleanup, e.g. on unmount. Clears any pending timers.\n */\n\n\n dispose() {\n this._timers.forEach(clearTimeout);\n }\n /**\n * Determines which items are viewable based on the current metrics and config.\n */\n\n\n computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange // Optional optimization to reduce the scan size\n ) {\n var _this$_config = this._config,\n itemVisiblePercentThreshold = _this$_config.itemVisiblePercentThreshold,\n viewAreaCoveragePercentThreshold = _this$_config.viewAreaCoveragePercentThreshold;\n var viewAreaMode = viewAreaCoveragePercentThreshold != null;\n var viewablePercentThreshold = viewAreaMode ? viewAreaCoveragePercentThreshold : itemVisiblePercentThreshold;\n invariant(viewablePercentThreshold != null && itemVisiblePercentThreshold != null !== (viewAreaCoveragePercentThreshold != null), 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');\n var viewableIndices = [];\n\n if (itemCount === 0) {\n return viewableIndices;\n }\n\n var firstVisible = -1;\n\n var _ref = renderRange || {\n first: 0,\n last: itemCount - 1\n },\n first = _ref.first,\n last = _ref.last;\n\n if (last >= itemCount) {\n console.warn('Invalid render range computing viewability ' + JSON.stringify({\n renderRange,\n itemCount\n }));\n return [];\n }\n\n for (var idx = first; idx <= last; idx++) {\n var metrics = getFrameMetrics(idx);\n\n if (!metrics) {\n continue;\n }\n\n var top = metrics.offset - scrollOffset;\n var bottom = top + metrics.length;\n\n if (top < viewportHeight && bottom > 0) {\n firstVisible = idx;\n\n if (_isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, metrics.length)) {\n viewableIndices.push(idx);\n }\n } else if (firstVisible >= 0) {\n break;\n }\n }\n\n return viewableIndices;\n }\n /**\n * Figures out which items are viewable and how that has changed from before and calls\n * `onViewableItemsChanged` as appropriate.\n */\n\n\n onUpdate(itemCount, scrollOffset, viewportHeight, getFrameMetrics, createViewToken, onViewableItemsChanged, renderRange // Optional optimization to reduce the scan size\n ) {\n if (this._config.waitForInteraction && !this._hasInteracted || itemCount === 0 || !getFrameMetrics(0)) {\n return;\n }\n\n var viewableIndices = [];\n\n if (itemCount) {\n viewableIndices = this.computeViewableItems(itemCount, scrollOffset, viewportHeight, getFrameMetrics, renderRange);\n }\n\n if (this._viewableIndices.length === viewableIndices.length && this._viewableIndices.every((v, ii) => v === viewableIndices[ii])) {\n // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n // extra work in those cases.\n return;\n }\n\n this._viewableIndices = viewableIndices;\n\n if (this._config.minimumViewTime) {\n var handle = setTimeout(() => {\n this._timers.delete(handle);\n\n this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }, this._config.minimumViewTime);\n\n this._timers.add(handle);\n } else {\n this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken);\n }\n }\n /**\n * clean-up cached _viewableIndices to evaluate changed items on next update\n */\n\n\n resetViewableIndices() {\n this._viewableIndices = [];\n }\n /**\n * Records that an interaction has happened even if there has been no scroll.\n */\n\n\n recordInteraction() {\n this._hasInteracted = true;\n }\n\n _onUpdateSync( // $FlowFixMe\n viewableIndicesToCheck, // $FlowFixMe\n onViewableItemsChanged, // $FlowFixMe\n createViewToken) {\n // Filter out indices that have gone out of view since this call was scheduled.\n viewableIndicesToCheck = viewableIndicesToCheck.filter(ii => this._viewableIndices.includes(ii));\n var prevItems = this._viewableItems;\n var nextItems = new Map(viewableIndicesToCheck.map(ii => {\n var viewable = createViewToken(ii, true);\n return [viewable.key, viewable];\n }));\n var changed = [];\n\n for (var _iterator = _createForOfIteratorHelperLoose(nextItems), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n viewable = _step$value[1];\n\n if (!prevItems.has(key)) {\n changed.push(viewable);\n }\n }\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(prevItems), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n _key = _step2$value[0],\n _viewable = _step2$value[1];\n\n if (!nextItems.has(_key)) {\n changed.push(_objectSpread(_objectSpread({}, _viewable), {}, {\n isViewable: false\n }));\n }\n }\n\n if (changed.length > 0) {\n this._viewableItems = nextItems;\n onViewableItemsChanged({\n viewableItems: Array.from(nextItems.values()),\n changed,\n viewabilityConfig: this._config\n });\n }\n }\n\n}\n\nfunction _isViewable(viewAreaMode, viewablePercentThreshold, top, bottom, viewportHeight, itemLength) {\n if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n return true;\n } else {\n var pixels = _getPixelsVisible(top, bottom, viewportHeight);\n\n var percent = 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n return percent >= viewablePercentThreshold;\n }\n}\n\nfunction _getPixelsVisible(top, bottom, viewportHeight) {\n var visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(top, bottom, viewportHeight) {\n return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nexport default ViewabilityHelper;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Intentional info-level logging for clear separation from ad-hoc console debug logging.\n */\n\nfunction infoLog() {\n return console.log(...arguments);\n}\n\nexport default infoLog;","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport * as React from 'react';\nimport { useMemo, useContext } from 'react';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nexport var VirtualizedListContext = /*#__PURE__*/React.createContext(null);\n\nif (__DEV__) {\n VirtualizedListContext.displayName = 'VirtualizedListContext';\n}\n/**\n * Resets the context. Intended for use by portal-like components (e.g. Modal).\n */\n\n\nexport function VirtualizedListContextResetter(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(VirtualizedListContext.Provider, {\n value: null\n }, children);\n}\n/**\n * Sets the context with memoization. Intended to be used by `VirtualizedList`.\n */\n\nexport function VirtualizedListContextProvider(_ref2) {\n var children = _ref2.children,\n value = _ref2.value;\n // Avoid setting a newly created context object if the values are identical.\n var context = useMemo(() => ({\n cellKey: null,\n getScrollMetrics: value.getScrollMetrics,\n horizontal: value.horizontal,\n getOutermostParentListRef: value.getOutermostParentListRef,\n getNestedChildState: value.getNestedChildState,\n registerAsNestedChild: value.registerAsNestedChild,\n unregisterAsNestedChild: value.unregisterAsNestedChild,\n debugInfo: {\n cellKey: value.debugInfo.cellKey,\n horizontal: value.debugInfo.horizontal,\n listKey: value.debugInfo.listKey,\n parent: value.debugInfo.parent\n }\n }), [value.getScrollMetrics, value.horizontal, value.getOutermostParentListRef, value.getNestedChildState, value.registerAsNestedChild, value.unregisterAsNestedChild, value.debugInfo.cellKey, value.debugInfo.horizontal, value.debugInfo.listKey, value.debugInfo.parent]);\n return /*#__PURE__*/React.createElement(VirtualizedListContext.Provider, {\n value: context\n }, children);\n}\n/**\n * Sets the `cellKey`. Intended to be used by `VirtualizedList` for each cell.\n */\n\nexport function VirtualizedListCellContextProvider(_ref3) {\n var cellKey = _ref3.cellKey,\n children = _ref3.children;\n var context = useContext(VirtualizedListContext);\n return /*#__PURE__*/React.createElement(VirtualizedListContext.Provider, {\n value: context == null ? null : _objectSpread(_objectSpread({}, context), {}, {\n cellKey\n })\n }, children);\n}","import _createForOfIteratorHelperLoose from \"@babel/runtime/helpers/createForOfIteratorHelperLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\n\n/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n */\nimport Batchinator from '../Batchinator';\nimport FillRateHelper from '../FillRateHelper';\nimport findNodeHandle from '../../../exports/findNodeHandle';\nimport RefreshControl from '../../../exports/RefreshControl';\nimport ScrollView from '../../../exports/ScrollView';\nimport StyleSheet from '../../../exports/StyleSheet';\nimport View from '../../../exports/View';\nimport ViewabilityHelper from '../ViewabilityHelper';\nvar flattenStyle = StyleSheet.flatten;\nimport infoLog from '../infoLog';\nimport invariant from 'fbjs/lib/invariant';\nimport { keyExtractor as defaultKeyExtractor, computeWindowedRenderLimits } from '../VirtualizeUtils';\nimport * as React from 'react';\nimport { VirtualizedListCellContextProvider, VirtualizedListContext, VirtualizedListContextProvider } from './VirtualizedListContext.js';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar _usedIndexForKey = false;\nvar _keylessItemComponentName = '';\n\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n// horizontalOrDefault(this.props.horizontal)\nfunction horizontalOrDefault(horizontal) {\n return horizontal !== null && horizontal !== void 0 ? horizontal : false;\n} // initialNumToRenderOrDefault(this.props.initialNumToRenderOrDefault)\n\n\nfunction initialNumToRenderOrDefault(initialNumToRender) {\n return initialNumToRender !== null && initialNumToRender !== void 0 ? initialNumToRender : 10;\n} // maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch)\n\n\nfunction maxToRenderPerBatchOrDefault(maxToRenderPerBatch) {\n return maxToRenderPerBatch !== null && maxToRenderPerBatch !== void 0 ? maxToRenderPerBatch : 10;\n} // onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold)\n\n\nfunction onEndReachedThresholdOrDefault(onEndReachedThreshold) {\n return onEndReachedThreshold !== null && onEndReachedThreshold !== void 0 ? onEndReachedThreshold : 2;\n} // scrollEventThrottleOrDefault(this.props.scrollEventThrottle)\n\n\nfunction scrollEventThrottleOrDefault(scrollEventThrottle) {\n return scrollEventThrottle !== null && scrollEventThrottle !== void 0 ? scrollEventThrottle : 50;\n} // windowSizeOrDefault(this.props.windowSize)\n\n\nfunction windowSizeOrDefault(windowSize) {\n return windowSize !== null && windowSize !== void 0 ? windowSize : 21;\n}\n/**\n * Base implementation for the more convenient [``](https://reactnative.dev/docs/flatlist)\n * and [``](https://reactnative.dev/docs/sectionlist) components, which are also better\n * documented. In general, this should only really be used if you need more flexibility than\n * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.\n *\n * Virtualization massively improves memory consumption and performance of large lists by\n * maintaining a finite render window of active items and replacing all items outside of the render\n * window with appropriately sized blank space. The window adapts to scrolling behavior, and items\n * are rendered incrementally with low-pri (after any running interactions) if they are far from the\n * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.\n *\n * Some caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` or `id` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n * - As an effort to remove defaultProps, use helper functions when referencing certain props\n *\n */\n\n\nclass VirtualizedList extends React.PureComponent {\n // scrollToEnd may be janky without getItemLayout prop\n scrollToEnd(params) {\n var animated = params ? params.animated : true;\n var veryLast = this.props.getItemCount(this.props.data) - 1;\n\n var frame = this._getFrameMetricsApprox(veryLast);\n\n var offset = Math.max(0, frame.offset + frame.length + this._footerLength - this._scrollMetrics.visibleLength);\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n console.warn('No scrollTo method provided. This may be because you have two nested ' + 'VirtualizedLists with the same orientation, or because you are ' + 'using a custom component that does not implement scrollTo.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n } // scrollToIndex may be janky without getItemLayout prop\n\n\n scrollToIndex(params) {\n var _this$props = this.props,\n data = _this$props.data,\n horizontal = _this$props.horizontal,\n getItemCount = _this$props.getItemCount,\n getItemLayout = _this$props.getItemLayout,\n onScrollToIndexFailed = _this$props.onScrollToIndexFailed;\n var animated = params.animated,\n index = params.index,\n viewOffset = params.viewOffset,\n viewPosition = params.viewPosition;\n invariant(index >= 0, \"scrollToIndex out of range: requested index \" + index + \" but minimum is 0\");\n invariant(getItemCount(data) >= 1, \"scrollToIndex out of range: item length \" + getItemCount(data) + \" but minimum is 1\");\n invariant(index < getItemCount(data), \"scrollToIndex out of range: requested index \" + index + \" is out of 0 to \" + (getItemCount(data) - 1));\n\n if (!getItemLayout && index > this._highestMeasuredFrameIndex) {\n invariant(!!onScrollToIndexFailed, 'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' + 'otherwise there is no way to know the location of offscreen indices or handle failures.');\n onScrollToIndexFailed({\n averageItemLength: this._averageCellLength,\n highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,\n index\n });\n return;\n }\n\n var frame = this._getFrameMetricsApprox(index);\n\n var offset = Math.max(0, frame.offset - (viewPosition || 0) * (this._scrollMetrics.visibleLength - frame.length)) - (viewOffset || 0);\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n console.warn('No scrollTo method provided. This may be because you have two nested ' + 'VirtualizedLists with the same orientation, or because you are ' + 'using a custom component that does not implement scrollTo.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontal ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n } // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n // use scrollToIndex instead if possible.\n\n\n scrollToItem(params) {\n var item = params.item;\n var _this$props2 = this.props,\n data = _this$props2.data,\n getItem = _this$props2.getItem,\n getItemCount = _this$props2.getItemCount;\n var itemCount = getItemCount(data);\n\n for (var _index = 0; _index < itemCount; _index++) {\n if (getItem(data, _index) === item) {\n this.scrollToIndex(_objectSpread(_objectSpread({}, params), {}, {\n index: _index\n }));\n break;\n }\n }\n }\n /**\n * Scroll to a specific content pixel offset in the list.\n *\n * Param `offset` expects the offset to scroll to.\n * In case of `horizontal` is true, the offset is the x-value,\n * in any other case the offset is the y-value.\n *\n * Param `animated` (`true` by default) defines whether the list\n * should do an animation while scrolling.\n */\n\n\n scrollToOffset(params) {\n var animated = params.animated,\n offset = params.offset;\n\n if (this._scrollRef == null) {\n return;\n }\n\n if (this._scrollRef.scrollTo == null) {\n console.warn('No scrollTo method provided. This may be because you have two nested ' + 'VirtualizedLists with the same orientation, or because you are ' + 'using a custom component that does not implement scrollTo.');\n return;\n }\n\n this._scrollRef.scrollTo(horizontalOrDefault(this.props.horizontal) ? {\n x: offset,\n animated\n } : {\n y: offset,\n animated\n });\n }\n\n recordInteraction() {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref.recordInteraction();\n });\n\n this._viewabilityTuples.forEach(t => {\n t.viewabilityHelper.recordInteraction();\n });\n\n this._updateViewableItems(this.props.data);\n }\n\n flashScrollIndicators() {\n if (this._scrollRef == null) {\n return;\n }\n\n this._scrollRef.flashScrollIndicators();\n }\n /**\n * Provides a handle to the underlying scroll responder.\n * Note that `this._scrollRef` might not be a `ScrollView`, so we\n * need to check that it responds to `getScrollResponder` before calling it.\n */\n\n\n getScrollResponder() {\n if (this._scrollRef && this._scrollRef.getScrollResponder) {\n return this._scrollRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n return this._scrollRef.getScrollableNode();\n } else {\n return findNodeHandle(this._scrollRef);\n }\n }\n\n getScrollRef() {\n if (this._scrollRef && this._scrollRef.getScrollRef) {\n return this._scrollRef.getScrollRef();\n } else {\n return this._scrollRef;\n }\n }\n\n setNativeProps(props) {\n if (this._scrollRef) {\n this._scrollRef.setNativeProps(props);\n }\n }\n\n _getCellKey() {\n var _this$context;\n\n return ((_this$context = this.context) == null ? void 0 : _this$context.cellKey) || 'rootList';\n }\n\n _getListKey() {\n return this.props.listKey || this._getCellKey();\n }\n\n _getDebugInfo() {\n var _this$context2;\n\n return {\n listKey: this._getListKey(),\n cellKey: this._getCellKey(),\n horizontal: horizontalOrDefault(this.props.horizontal),\n parent: (_this$context2 = this.context) == null ? void 0 : _this$context2.debugInfo\n };\n }\n\n hasMore() {\n return this._hasMore;\n }\n\n constructor(_props) {\n var _this$props$updateCel;\n\n super(_props);\n\n this._getScrollMetrics = () => {\n return this._scrollMetrics;\n };\n\n this._getOutermostParentListRef = () => {\n if (this._isNestedWithSameOrientation()) {\n return this.context.getOutermostParentListRef();\n } else {\n return this;\n }\n };\n\n this._getNestedChildState = key => {\n var existingChildData = this._nestedChildLists.get(key);\n\n return existingChildData && existingChildData.state;\n };\n\n this._registerAsNestedChild = childList => {\n // Register the mapping between this child key and the cellKey for its cell\n var childListsInCell = this._cellKeysToChildListKeys.get(childList.cellKey) || new Set();\n childListsInCell.add(childList.key);\n\n this._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);\n\n var existingChildData = this._nestedChildLists.get(childList.key);\n\n if (existingChildData && existingChildData.ref !== null) {\n console.error('A VirtualizedList contains a cell which itself contains ' + 'more than one VirtualizedList of the same orientation as the parent ' + 'list. You must pass a unique listKey prop to each sibling list.\\n\\n' + describeNestedLists(_objectSpread(_objectSpread({}, childList), {}, {\n // We're called from the child's componentDidMount, so it's safe to\n // read the child's props here (albeit weird).\n horizontal: !!childList.ref.props.horizontal\n })));\n }\n\n this._nestedChildLists.set(childList.key, {\n ref: childList.ref,\n state: null\n });\n\n if (this._hasInteracted) {\n childList.ref.recordInteraction();\n }\n };\n\n this._unregisterAsNestedChild = childList => {\n this._nestedChildLists.set(childList.key, {\n ref: null,\n state: childList.state\n });\n };\n\n this._onUpdateSeparators = (keys, newProps) => {\n keys.forEach(key => {\n var ref = key != null && this._cellRefs[key];\n ref && ref.updateSeparatorProps(newProps);\n });\n };\n\n this._getSpacerKey = isVertical => isVertical ? 'height' : 'width';\n\n this._averageCellLength = 0;\n this._cellKeysToChildListKeys = new Map();\n this._cellRefs = {};\n this._frames = {};\n this._footerLength = 0;\n this._hasDoneInitialScroll = false;\n this._hasInteracted = false;\n this._hasMore = false;\n this._hasWarned = {};\n this._headerLength = 0;\n this._hiPriInProgress = false;\n this._highestMeasuredFrameIndex = 0;\n this._indicesToKeys = new Map();\n this._nestedChildLists = new Map();\n this._offsetFromParentVirtualizedList = 0;\n this._prevParentOffset = 0;\n this._scrollMetrics = {\n contentLength: 0,\n dOffset: 0,\n dt: 10,\n offset: 0,\n timestamp: 0,\n velocity: 0,\n visibleLength: 0\n };\n this._scrollRef = null;\n this._sentEndForContentLength = 0;\n this._totalCellLength = 0;\n this._totalCellsMeasured = 0;\n this._viewabilityTuples = [];\n\n this._captureScrollRef = ref => {\n this._scrollRef = ref;\n };\n\n this._defaultRenderScrollComponent = props => {\n var onRefresh = props.onRefresh;\n\n if (this._isNestedWithSameOrientation()) {\n // $FlowFixMe[prop-missing] - Typing ReactNativeComponent revealed errors\n return /*#__PURE__*/React.createElement(View, props);\n } else if (onRefresh) {\n var _props$refreshing;\n\n invariant(typeof props.refreshing === 'boolean', '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' + JSON.stringify((_props$refreshing = props.refreshing) !== null && _props$refreshing !== void 0 ? _props$refreshing : 'undefined') + '`');\n return (\n /*#__PURE__*/\n // $FlowFixMe[prop-missing] Invalid prop usage\n React.createElement(ScrollView, _extends({}, props, {\n refreshControl: props.refreshControl == null ? /*#__PURE__*/React.createElement(RefreshControl, {\n refreshing: props.refreshing,\n onRefresh: onRefresh,\n progressViewOffset: props.progressViewOffset\n }) : props.refreshControl\n }))\n );\n } else {\n // $FlowFixMe[prop-missing] Invalid prop usage\n return /*#__PURE__*/React.createElement(ScrollView, props);\n }\n };\n\n this._onCellUnmount = cellKey => {\n var curr = this._frames[cellKey];\n\n if (curr) {\n this._frames[cellKey] = _objectSpread(_objectSpread({}, curr), {}, {\n inLayout: false\n });\n }\n };\n\n this._onLayout = e => {\n if (this._isNestedWithSameOrientation()) {\n // Need to adjust our scroll metrics to be relative to our containing\n // VirtualizedList before we can make claims about list item viewability\n this.measureLayoutRelativeToContainingList();\n } else {\n this._scrollMetrics.visibleLength = this._selectLength(e.nativeEvent.layout);\n }\n\n this.props.onLayout && this.props.onLayout(e);\n\n this._scheduleCellsToRenderUpdate();\n\n this._maybeCallOnEndReached();\n };\n\n this._onLayoutEmpty = e => {\n this.props.onLayout && this.props.onLayout(e);\n };\n\n this._onLayoutFooter = e => {\n this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());\n\n this._footerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n this._onLayoutHeader = e => {\n this._headerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n this._onContentSizeChange = (width, height) => {\n if (width > 0 && height > 0 && this.props.initialScrollIndex != null && this.props.initialScrollIndex > 0 && !this._hasDoneInitialScroll) {\n if (this.props.contentOffset == null) {\n this.scrollToIndex({\n animated: false,\n index: this.props.initialScrollIndex\n });\n }\n\n this._hasDoneInitialScroll = true;\n }\n\n if (this.props.onContentSizeChange) {\n this.props.onContentSizeChange(width, height);\n }\n\n this._scrollMetrics.contentLength = this._selectLength({\n height,\n width\n });\n\n this._scheduleCellsToRenderUpdate();\n\n this._maybeCallOnEndReached();\n };\n\n this._convertParentScrollMetrics = metrics => {\n // Offset of the top of the nested list relative to the top of its parent's viewport\n var offset = metrics.offset - this._offsetFromParentVirtualizedList; // Child's visible length is the same as its parent's\n\n var visibleLength = metrics.visibleLength;\n var dOffset = offset - this._scrollMetrics.offset;\n var contentLength = this._scrollMetrics.contentLength;\n return {\n visibleLength,\n contentLength,\n offset,\n dOffset\n };\n };\n\n this._onScroll = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScroll(e);\n });\n\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n\n var timestamp = e.timeStamp;\n\n var visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n\n var contentLength = this._selectLength(e.nativeEvent.contentSize);\n\n var offset = this._selectOffset(e.nativeEvent.contentOffset);\n\n var dOffset = offset - this._scrollMetrics.offset;\n\n if (this._isNestedWithSameOrientation()) {\n if (this._scrollMetrics.contentLength === 0) {\n // Ignore scroll events until onLayout has been called and we\n // know our offset from our offset from our parent\n return;\n }\n\n var _this$_convertParentS = this._convertParentScrollMetrics({\n visibleLength,\n offset\n });\n\n visibleLength = _this$_convertParentS.visibleLength;\n contentLength = _this$_convertParentS.contentLength;\n offset = _this$_convertParentS.offset;\n dOffset = _this$_convertParentS.dOffset;\n }\n\n var dt = this._scrollMetrics.timestamp ? Math.max(1, timestamp - this._scrollMetrics.timestamp) : 1;\n var velocity = dOffset / dt;\n\n if (dt > 500 && this._scrollMetrics.dt > 500 && contentLength > 5 * visibleLength && !this._hasWarned.perf) {\n infoLog('VirtualizedList: You have a large list that is slow to update - make sure your ' + 'renderItem function renders components that follow React performance best practices ' + 'like PureComponent, shouldComponentUpdate, etc.', {\n dt,\n prevDt: this._scrollMetrics.dt,\n contentLength\n });\n this._hasWarned.perf = true;\n }\n\n this._scrollMetrics = {\n contentLength,\n dt,\n dOffset,\n offset,\n timestamp,\n velocity,\n visibleLength\n };\n\n this._updateViewableItems(this.props.data);\n\n if (!this.props) {\n return;\n }\n\n this._maybeCallOnEndReached();\n\n if (velocity !== 0) {\n this._fillRateHelper.activate();\n }\n\n this._computeBlankness();\n\n this._scheduleCellsToRenderUpdate();\n };\n\n this._onScrollBeginDrag = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScrollBeginDrag(e);\n });\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.recordInteraction();\n });\n\n this._hasInteracted = true;\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n };\n\n this._onScrollEndDrag = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScrollEndDrag(e);\n });\n\n var velocity = e.nativeEvent.velocity;\n\n if (velocity) {\n this._scrollMetrics.velocity = this._selectOffset(velocity);\n }\n\n this._computeBlankness();\n\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n };\n\n this._onMomentumScrollBegin = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onMomentumScrollBegin(e);\n });\n\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n };\n\n this._onMomentumScrollEnd = e => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onMomentumScrollEnd(e);\n });\n\n this._scrollMetrics.velocity = 0;\n\n this._computeBlankness();\n\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n };\n\n this._updateCellsToRender = () => {\n var _this$props3 = this.props,\n data = _this$props3.data,\n getItemCount = _this$props3.getItemCount,\n _onEndReachedThreshold = _this$props3.onEndReachedThreshold;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(_onEndReachedThreshold);\n\n var isVirtualizationDisabled = this._isVirtualizationDisabled();\n\n this._updateViewableItems(data);\n\n if (!data) {\n return;\n }\n\n this.setState(state => {\n var newState;\n var _this$_scrollMetrics = this._scrollMetrics,\n contentLength = _this$_scrollMetrics.contentLength,\n offset = _this$_scrollMetrics.offset,\n visibleLength = _this$_scrollMetrics.visibleLength;\n\n if (!isVirtualizationDisabled) {\n // If we run this with bogus data, we'll force-render window {first: 0, last: 0},\n // and wipe out the initialNumToRender rendered elements.\n // So let's wait until the scroll view metrics have been set up. And until then,\n // we will trust the initialNumToRender suggestion\n if (visibleLength > 0 && contentLength > 0) {\n // If we have a non-zero initialScrollIndex and run this before we've scrolled,\n // we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.\n // So let's wait until we've scrolled the view to the right place. And until then,\n // we will trust the initialScrollIndex suggestion.\n if (!this.props.initialScrollIndex || this._scrollMetrics.offset) {\n newState = computeWindowedRenderLimits(this.props.data, this.props.getItemCount, maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch), windowSizeOrDefault(this.props.windowSize), state, this._getFrameMetricsApprox, this._scrollMetrics);\n }\n }\n } else {\n var distanceFromEnd = contentLength - visibleLength - offset;\n var renderAhead = distanceFromEnd < onEndReachedThreshold * visibleLength ? maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch) : 0;\n newState = {\n first: 0,\n last: Math.min(state.last + renderAhead, getItemCount(data) - 1)\n };\n }\n\n if (newState && this._nestedChildLists.size > 0) {\n var newFirst = newState.first;\n var newLast = newState.last; // If some cell in the new state has a child list in it, we should only render\n // up through that item, so that we give that list a chance to render.\n // Otherwise there's churn from multiple child lists mounting and un-mounting\n // their items.\n\n for (var ii = newFirst; ii <= newLast; ii++) {\n var cellKeyForIndex = this._indicesToKeys.get(ii);\n\n var childListKeys = cellKeyForIndex && this._cellKeysToChildListKeys.get(cellKeyForIndex);\n\n if (!childListKeys) {\n continue;\n }\n\n var someChildHasMore = false; // For each cell, need to check whether any child list in it has more elements to render\n\n for (var _iterator = _createForOfIteratorHelperLoose(childListKeys), _step; !(_step = _iterator()).done;) {\n var childKey = _step.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n if (childList && childList.ref && childList.ref.hasMore()) {\n someChildHasMore = true;\n break;\n }\n }\n\n if (someChildHasMore) {\n // $FlowFixMe[incompatible-use] The newState definitely exists past \"if (newState &&\"\n newState.last = ii;\n break;\n }\n }\n }\n\n if (newState != null && newState.first === state.first && newState.last === state.last) {\n newState = null;\n }\n\n return newState;\n });\n };\n\n this._createViewToken = (index, isViewable) => {\n var _this$props4 = this.props,\n data = _this$props4.data,\n getItem = _this$props4.getItem;\n var item = getItem(data, index);\n return {\n index,\n item,\n key: this._keyExtractor(item, index),\n isViewable\n };\n };\n\n this._getFrameMetricsApprox = index => {\n var frame = this._getFrameMetrics(index);\n\n if (frame && frame.index === index) {\n // check for invalid frames due to row re-ordering\n return frame;\n } else {\n var getItemLayout = this.props.getItemLayout;\n invariant(!getItemLayout, 'Should not have to estimate frames when a measurement metrics function is provided');\n return {\n length: this._averageCellLength,\n offset: this._averageCellLength * index\n };\n }\n };\n\n this._getFrameMetrics = index => {\n var _this$props5 = this.props,\n data = _this$props5.data,\n getItem = _this$props5.getItem,\n getItemCount = _this$props5.getItemCount,\n getItemLayout = _this$props5.getItemLayout;\n invariant(getItemCount(data) > index, 'Tried to get frame for out of range index ' + index);\n var item = getItem(data, index);\n\n var frame = item && this._frames[this._keyExtractor(item, index)];\n\n if (!frame || frame.index !== index) {\n if (getItemLayout) {\n frame = getItemLayout(data, index);\n }\n }\n /* $FlowFixMe[prop-missing] (>=0.63.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.63 was deployed. To see the error\n * delete this comment and run Flow. */\n\n\n return frame;\n };\n\n invariant( // $FlowFixMe[prop-missing]\n !_props.onScroll || !_props.onScroll.__isNative, 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' + 'to support native onScroll events with useNativeDriver');\n invariant(windowSizeOrDefault(_props.windowSize) > 0, 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.');\n this._fillRateHelper = new FillRateHelper(this._getFrameMetrics);\n this._updateCellsToRenderBatcher = new Batchinator(this._updateCellsToRender, (_this$props$updateCel = this.props.updateCellsBatchingPeriod) !== null && _this$props$updateCel !== void 0 ? _this$props$updateCel : 50);\n\n if (this.props.viewabilityConfigCallbackPairs) {\n this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(pair => ({\n viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n onViewableItemsChanged: pair.onViewableItemsChanged\n }));\n } else if (this.props.onViewableItemsChanged) {\n this._viewabilityTuples.push({\n viewabilityHelper: new ViewabilityHelper(this.props.viewabilityConfig),\n // $FlowFixMe[incompatible-call]\n onViewableItemsChanged: this.props.onViewableItemsChanged\n });\n }\n\n var initialState = {\n first: this.props.initialScrollIndex || 0,\n last: Math.min(this.props.getItemCount(this.props.data), (this.props.initialScrollIndex || 0) + initialNumToRenderOrDefault(this.props.initialNumToRender)) - 1\n };\n\n if (this._isNestedWithSameOrientation()) {\n var storedState = this.context.getNestedChildState(this._getListKey());\n\n if (storedState) {\n initialState = storedState;\n this.state = storedState;\n this._frames = storedState.frames;\n }\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n // For issue https://github.com/necolas/react-native-web/issues/995\n\n\n this.invertedWheelEventHandler = ev => {\n if (this.props.inverted && this._scrollRef && this._scrollRef.getScrollableNode) {\n var node = this._scrollRef.getScrollableNode();\n\n if (this.props.horizontal) {\n node.scrollLeft -= ev.deltaX || ev.wheelDeltaX;\n } else {\n node.scrollTop -= ev.deltaY || ev.wheelDeltaY;\n }\n\n ev.preventDefault();\n }\n };\n\n this.state = initialState;\n }\n\n componentDidMount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.registerAsNestedChild({\n cellKey: this._getCellKey(),\n key: this._getListKey(),\n ref: this,\n // NOTE: When the child mounts (here) it's not necessarily safe to read\n // the parent's props. This is why we explicitly propagate debugInfo\n // \"down\" via context and \"up\" again via this method call on the\n // parent.\n parentDebugInfo: this.context.debugInfo\n });\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n this.setupWebWheelHandler();\n }\n\n componentWillUnmount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.unregisterAsNestedChild({\n key: this._getListKey(),\n state: {\n first: this.state.first,\n last: this.state.last,\n frames: this._frames\n }\n });\n }\n\n this._updateViewableItems(null);\n\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.dispose();\n });\n\n this._fillRateHelper.deactivateAndFlush(); // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n this.teardownWebWheelHandler();\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n setupWebWheelHandler() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().addEventListener('wheel', this.invertedWheelEventHandler);\n } else {\n setTimeout(() => this.setupWebWheelHandler(), 50);\n return;\n }\n } // REACT-NATIVE-WEB patch to preserve during future RN merges: Support inverted wheel scroller.\n\n\n teardownWebWheelHandler() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n this._scrollRef.getScrollableNode().removeEventListener('wheel', this.invertedWheelEventHandler);\n }\n }\n\n static getDerivedStateFromProps(newProps, prevState) {\n var data = newProps.data,\n getItemCount = newProps.getItemCount;\n var maxToRenderPerBatch = maxToRenderPerBatchOrDefault(newProps.maxToRenderPerBatch); // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make\n // sure we're rendering a reasonable range here.\n\n return {\n first: Math.max(0, Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch)),\n last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1))\n };\n }\n\n _pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, first, last, inversionStyle) {\n var _this = this;\n\n var _this$props6 = this.props,\n CellRendererComponent = _this$props6.CellRendererComponent,\n ItemSeparatorComponent = _this$props6.ItemSeparatorComponent,\n data = _this$props6.data,\n getItem = _this$props6.getItem,\n getItemCount = _this$props6.getItemCount,\n horizontal = _this$props6.horizontal;\n var stickyOffset = this.props.ListHeaderComponent ? 1 : 0;\n var end = getItemCount(data) - 1;\n var prevCellKey;\n last = Math.min(end, last);\n\n var _loop = function _loop(ii) {\n var item = getItem(data, ii);\n\n var key = _this._keyExtractor(item, ii);\n\n _this._indicesToKeys.set(ii, key);\n\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n stickyHeaderIndices.push(cells.length);\n }\n\n cells.push( /*#__PURE__*/React.createElement(CellRenderer, {\n CellRendererComponent: CellRendererComponent,\n ItemSeparatorComponent: ii < end ? ItemSeparatorComponent : undefined,\n cellKey: key,\n fillRateHelper: _this._fillRateHelper,\n horizontal: horizontal,\n index: ii,\n inversionStyle: inversionStyle,\n item: item,\n key: key,\n prevCellKey: prevCellKey,\n onUpdateSeparators: _this._onUpdateSeparators,\n onLayout: e => _this._onCellLayout(e, key, ii),\n onUnmount: _this._onCellUnmount,\n parentProps: _this.props,\n ref: _ref => {\n _this._cellRefs[key] = _ref;\n }\n }));\n prevCellKey = key;\n };\n\n for (var ii = first; ii <= last; ii++) {\n _loop(ii);\n }\n }\n\n _isVirtualizationDisabled() {\n return this.props.disableVirtualization || false;\n }\n\n _isNestedWithSameOrientation() {\n var nestedContext = this.context;\n return !!(nestedContext && !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal));\n }\n\n _keyExtractor(item, index) {\n if (this.props.keyExtractor != null) {\n return this.props.keyExtractor(item, index);\n }\n\n var key = defaultKeyExtractor(item, index);\n\n if (key === String(index)) {\n _usedIndexForKey = true;\n\n if (item.type && item.type.displayName) {\n _keylessItemComponentName = item.type.displayName;\n }\n }\n\n return key;\n }\n\n render() {\n if (__DEV__) {\n var flatStyles = flattenStyle(this.props.contentContainerStyle);\n\n if (flatStyles != null && flatStyles.flexWrap === 'wrap') {\n console.warn('`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' + 'Consider using `numColumns` with `FlatList` instead.');\n }\n }\n\n var _this$props7 = this.props,\n ListEmptyComponent = _this$props7.ListEmptyComponent,\n ListFooterComponent = _this$props7.ListFooterComponent,\n ListHeaderComponent = _this$props7.ListHeaderComponent;\n var _this$props8 = this.props,\n data = _this$props8.data,\n horizontal = _this$props8.horizontal;\n\n var isVirtualizationDisabled = this._isVirtualizationDisabled();\n\n var inversionStyle = this.props.inverted ? horizontalOrDefault(this.props.horizontal) ? styles.horizontallyInverted : styles.verticallyInverted : null;\n var cells = [];\n var stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n var stickyHeaderIndices = [];\n\n if (ListHeaderComponent) {\n if (stickyIndicesFromProps.has(0)) {\n stickyHeaderIndices.push(0);\n }\n\n var element = /*#__PURE__*/React.isValidElement(ListHeaderComponent) ? ListHeaderComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListHeaderComponent, null);\n cells.push( /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getCellKey() + '-header',\n key: \"$header\"\n }, /*#__PURE__*/React.createElement(View, {\n onLayout: this._onLayoutHeader,\n style: StyleSheet.compose(inversionStyle, this.props.ListHeaderComponentStyle)\n }, // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n element)));\n }\n\n var itemCount = this.props.getItemCount(data);\n\n if (itemCount > 0) {\n _usedIndexForKey = false;\n _keylessItemComponentName = '';\n\n var spacerKey = this._getSpacerKey(!horizontal);\n\n var lastInitialIndex = this.props.initialScrollIndex ? -1 : initialNumToRenderOrDefault(this.props.initialNumToRender) - 1;\n var _this$state = this.state,\n first = _this$state.first,\n last = _this$state.last;\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, 0, lastInitialIndex, inversionStyle);\n\n var firstAfterInitial = Math.max(lastInitialIndex + 1, first);\n\n if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {\n var insertedStickySpacer = false;\n\n if (stickyIndicesFromProps.size > 0) {\n var stickyOffset = ListHeaderComponent ? 1 : 0; // See if there are any sticky headers in the virtualized space that we need to render.\n\n for (var ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n var initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n\n var stickyBlock = this._getFrameMetricsApprox(ii);\n\n var leadSpace = stickyBlock.offset - initBlock.offset - (this.props.initialScrollIndex ? 0 : initBlock.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$sticky_lead\",\n style: {\n [spacerKey]: leadSpace\n }\n }));\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, ii, ii, inversionStyle);\n\n var trailSpace = this._getFrameMetricsApprox(first).offset - (stickyBlock.offset + stickyBlock.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$sticky_trail\",\n style: {\n [spacerKey]: trailSpace\n }\n }));\n insertedStickySpacer = true;\n break;\n }\n }\n }\n\n if (!insertedStickySpacer) {\n var _initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n\n var firstSpace = this._getFrameMetricsApprox(first).offset - (_initBlock.offset + _initBlock.length);\n\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$lead_spacer\",\n style: {\n [spacerKey]: firstSpace\n }\n }));\n }\n }\n\n this._pushCells(cells, stickyHeaderIndices, stickyIndicesFromProps, firstAfterInitial, last, inversionStyle);\n\n if (!this._hasWarned.keys && _usedIndexForKey) {\n console.warn('VirtualizedList: missing keys for items, make sure to specify a key or id property on each ' + 'item or provide a custom keyExtractor.', _keylessItemComponentName);\n this._hasWarned.keys = true;\n }\n\n if (!isVirtualizationDisabled && last < itemCount - 1) {\n var lastFrame = this._getFrameMetricsApprox(last); // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to\n // prevent the user for hyperscrolling into un-measured area because otherwise content will\n // likely jump around as it renders in above the viewport.\n\n\n var end = this.props.getItemLayout ? itemCount - 1 : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);\n\n var endFrame = this._getFrameMetricsApprox(end);\n\n var tailSpacerLength = endFrame.offset + endFrame.length - (lastFrame.offset + lastFrame.length);\n cells.push( /*#__PURE__*/React.createElement(View, {\n key: \"$tail_spacer\",\n style: {\n [spacerKey]: tailSpacerLength\n }\n }));\n }\n } else if (ListEmptyComponent) {\n var _element = /*#__PURE__*/React.isValidElement(ListEmptyComponent) ? ListEmptyComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListEmptyComponent, null);\n\n cells.push( /*#__PURE__*/React.cloneElement(_element, {\n key: '$empty',\n onLayout: event => {\n this._onLayoutEmpty(event);\n\n if (_element.props.onLayout) {\n _element.props.onLayout(event);\n }\n },\n style: StyleSheet.compose(inversionStyle, _element.props.style)\n }));\n }\n\n if (ListFooterComponent) {\n var _element2 = /*#__PURE__*/React.isValidElement(ListFooterComponent) ? ListFooterComponent :\n /*#__PURE__*/\n // $FlowFixMe[not-a-component]\n // $FlowFixMe[incompatible-type-arg]\n React.createElement(ListFooterComponent, null);\n\n cells.push( /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this._getFooterCellKey(),\n key: \"$footer\"\n }, /*#__PURE__*/React.createElement(View, {\n onLayout: this._onLayoutFooter,\n style: StyleSheet.compose(inversionStyle, this.props.ListFooterComponentStyle)\n }, // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n _element2)));\n }\n\n var scrollProps = _objectSpread(_objectSpread({}, this.props), {}, {\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n onScroll: this._onScroll,\n onScrollBeginDrag: this._onScrollBeginDrag,\n onScrollEndDrag: this._onScrollEndDrag,\n onMomentumScrollBegin: this._onMomentumScrollBegin,\n onMomentumScrollEnd: this._onMomentumScrollEnd,\n scrollEventThrottle: scrollEventThrottleOrDefault(this.props.scrollEventThrottle),\n // TODO: Android support\n invertStickyHeaders: this.props.invertStickyHeaders !== undefined ? this.props.invertStickyHeaders : this.props.inverted,\n stickyHeaderIndices,\n style: inversionStyle ? [inversionStyle, this.props.style] : this.props.style\n });\n\n this._hasMore = this.state.last < this.props.getItemCount(this.props.data) - 1;\n var innerRet = /*#__PURE__*/React.createElement(VirtualizedListContextProvider, {\n value: {\n cellKey: null,\n getScrollMetrics: this._getScrollMetrics,\n horizontal: horizontalOrDefault(this.props.horizontal),\n getOutermostParentListRef: this._getOutermostParentListRef,\n getNestedChildState: this._getNestedChildState,\n registerAsNestedChild: this._registerAsNestedChild,\n unregisterAsNestedChild: this._unregisterAsNestedChild,\n debugInfo: this._getDebugInfo()\n }\n }, /*#__PURE__*/React.cloneElement((this.props.renderScrollComponent || this._defaultRenderScrollComponent)(scrollProps), {\n ref: this._captureScrollRef\n }, cells));\n var ret = innerRet;\n /* https://github.com/necolas/react-native-web/issues/2239: Re-enable when ScrollView.Context.Consumer is available.\n if (__DEV__) {\n ret = (\n \n {scrollContext => {\n if (\n scrollContext != null &&\n !scrollContext.horizontal ===\n !horizontalOrDefault(this.props.horizontal) &&\n !this._hasWarned.nesting &&\n this.context == null\n ) {\n // TODO (T46547044): use React.warn once 16.9 is sync'd: https://github.com/facebook/react/pull/15170\n console.error(\n 'VirtualizedLists should never be nested inside plain ScrollViews with the same ' +\n 'orientation because it can break windowing and other functionality - use another ' +\n 'VirtualizedList-backed container instead.',\n );\n this._hasWarned.nesting = true;\n }\n return innerRet;\n }}\n \n );\n }*/\n\n if (this.props.debug) {\n return /*#__PURE__*/React.createElement(View, {\n style: styles.debug\n }, ret, this._renderDebugOverlay());\n } else {\n return ret;\n }\n }\n\n componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n data = _this$props9.data,\n extraData = _this$props9.extraData;\n\n if (data !== prevProps.data || extraData !== prevProps.extraData) {\n // clear the viewableIndices cache to also trigger\n // the onViewableItemsChanged callback with the new data\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.resetViewableIndices();\n });\n } // The `this._hiPriInProgress` is guaranteeing a hiPri cell update will only happen\n // once per fiber update. The `_scheduleCellsToRenderUpdate` will set it to true\n // if a hiPri update needs to perform. If `componentDidUpdate` is triggered with\n // `this._hiPriInProgress=true`, means it's triggered by the hiPri update. The\n // `_scheduleCellsToRenderUpdate` will check this condition and not perform\n // another hiPri update.\n\n\n var hiPriInProgress = this._hiPriInProgress;\n\n this._scheduleCellsToRenderUpdate(); // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`\n // is triggered with `this._hiPriInProgress = true`\n\n\n if (hiPriInProgress) {\n this._hiPriInProgress = false;\n }\n }\n\n _computeBlankness() {\n this._fillRateHelper.computeBlankness(this.props, this.state, this._scrollMetrics);\n }\n\n _onCellLayout(e, cellKey, index) {\n var layout = e.nativeEvent.layout;\n var next = {\n offset: this._selectOffset(layout),\n length: this._selectLength(layout),\n index,\n inLayout: true\n };\n var curr = this._frames[cellKey];\n\n if (!curr || next.offset !== curr.offset || next.length !== curr.length || index !== curr.index) {\n this._totalCellLength += next.length - (curr ? curr.length : 0);\n this._totalCellsMeasured += curr ? 0 : 1;\n this._averageCellLength = this._totalCellLength / this._totalCellsMeasured;\n this._frames[cellKey] = next;\n this._highestMeasuredFrameIndex = Math.max(this._highestMeasuredFrameIndex, index);\n\n this._scheduleCellsToRenderUpdate();\n } else {\n this._frames[cellKey].inLayout = true;\n }\n\n this._triggerRemeasureForChildListsInCell(cellKey);\n\n this._computeBlankness();\n\n this._updateViewableItems(this.props.data);\n }\n\n _triggerRemeasureForChildListsInCell(cellKey) {\n var childListKeys = this._cellKeysToChildListKeys.get(cellKey);\n\n if (childListKeys) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(childListKeys), _step2; !(_step2 = _iterator2()).done;) {\n var childKey = _step2.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n }\n\n measureLayoutRelativeToContainingList() {\n // TODO (T35574538): findNodeHandle sometimes crashes with \"Unable to find\n // node on an unmounted component\" during scrolling\n try {\n if (!this._scrollRef) {\n return;\n } // We are assuming that getOutermostParentListRef().getScrollRef()\n // is a non-null reference to a ScrollView\n\n\n this._scrollRef.measureLayout(this.context.getOutermostParentListRef().getScrollRef(), (x, y, width, height) => {\n this._offsetFromParentVirtualizedList = this._selectOffset({\n x,\n y\n });\n this._scrollMetrics.contentLength = this._selectLength({\n width,\n height\n });\n\n var scrollMetrics = this._convertParentScrollMetrics(this.context.getScrollMetrics());\n\n var metricsChanged = this._scrollMetrics.visibleLength !== scrollMetrics.visibleLength || this._scrollMetrics.offset !== scrollMetrics.offset;\n\n if (metricsChanged) {\n this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n this._scrollMetrics.offset = scrollMetrics.offset; // If metrics of the scrollView changed, then we triggered remeasure for child list\n // to ensure VirtualizedList has the right information.\n\n this._cellKeysToChildListKeys.forEach(childListKeys => {\n if (childListKeys) {\n for (var _iterator3 = _createForOfIteratorHelperLoose(childListKeys), _step3; !(_step3 = _iterator3()).done;) {\n var childKey = _step3.value;\n\n var childList = this._nestedChildLists.get(childKey);\n\n childList && childList.ref && childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n });\n }\n }, error => {\n console.warn(\"VirtualizedList: Encountered an error while measuring a list's\" + ' offset from its containing VirtualizedList.');\n });\n } catch (error) {\n console.warn('measureLayoutRelativeToContainingList threw an error', error.stack);\n }\n }\n\n _getFooterCellKey() {\n return this._getCellKey() + '-footer';\n }\n\n _renderDebugOverlay() {\n var normalize = this._scrollMetrics.visibleLength / (this._scrollMetrics.contentLength || 1);\n var framesInLayout = [];\n var itemCount = this.props.getItemCount(this.props.data);\n\n for (var ii = 0; ii < itemCount; ii++) {\n var frame = this._getFrameMetricsApprox(ii);\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the\n * error delete this comment and run Flow. */\n\n\n if (frame.inLayout) {\n framesInLayout.push(frame);\n }\n }\n\n var windowTop = this._getFrameMetricsApprox(this.state.first).offset;\n\n var frameLast = this._getFrameMetricsApprox(this.state.last);\n\n var windowLen = frameLast.offset + frameLast.length - windowTop;\n var visTop = this._scrollMetrics.offset;\n var visLen = this._scrollMetrics.visibleLength;\n return /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlay]\n }, framesInLayout.map((f, ii) => /*#__PURE__*/React.createElement(View, {\n key: 'f' + ii,\n style: [styles.debugOverlayBase, styles.debugOverlayFrame, {\n top: f.offset * normalize,\n height: f.length * normalize\n }]\n })), /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameLast, {\n top: windowTop * normalize,\n height: windowLen * normalize\n }]\n }), /*#__PURE__*/React.createElement(View, {\n style: [styles.debugOverlayBase, styles.debugOverlayFrameVis, {\n top: visTop * normalize,\n height: visLen * normalize\n }]\n }));\n }\n\n _selectLength(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.height : metrics.width;\n }\n\n _selectOffset(metrics) {\n return !horizontalOrDefault(this.props.horizontal) ? metrics.y : metrics.x;\n }\n\n _maybeCallOnEndReached() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n getItemCount = _this$props10.getItemCount,\n onEndReached = _this$props10.onEndReached,\n onEndReachedThreshold = _this$props10.onEndReachedThreshold;\n var _this$_scrollMetrics2 = this._scrollMetrics,\n contentLength = _this$_scrollMetrics2.contentLength,\n visibleLength = _this$_scrollMetrics2.visibleLength,\n offset = _this$_scrollMetrics2.offset;\n var distanceFromEnd = contentLength - visibleLength - offset;\n var threshold = onEndReachedThreshold != null ? onEndReachedThreshold * visibleLength : 2;\n\n if (onEndReached && this.state.last === getItemCount(data) - 1 && distanceFromEnd < threshold && this._scrollMetrics.contentLength !== this._sentEndForContentLength) {\n // Only call onEndReached once for a given content length\n this._sentEndForContentLength = this._scrollMetrics.contentLength;\n onEndReached({\n distanceFromEnd\n });\n } else if (distanceFromEnd > threshold) {\n // If the user scrolls away from the end and back again cause\n // an onEndReached to be triggered again\n this._sentEndForContentLength = 0;\n }\n }\n\n _scheduleCellsToRenderUpdate() {\n var _this$state2 = this.state,\n first = _this$state2.first,\n last = _this$state2.last;\n var _this$_scrollMetrics3 = this._scrollMetrics,\n offset = _this$_scrollMetrics3.offset,\n visibleLength = _this$_scrollMetrics3.visibleLength,\n velocity = _this$_scrollMetrics3.velocity;\n var itemCount = this.props.getItemCount(this.props.data);\n var hiPri = false;\n var onEndReachedThreshold = onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold);\n var scrollingThreshold = onEndReachedThreshold * visibleLength / 2; // Mark as high priority if we're close to the start of the first item\n // But only if there are items before the first rendered item\n\n if (first > 0) {\n var distTop = offset - this._getFrameMetricsApprox(first).offset;\n\n hiPri = hiPri || distTop < 0 || velocity < -2 && distTop < scrollingThreshold;\n } // Mark as high priority if we're close to the end of the last item\n // But only if there are items after the last rendered item\n\n\n if (last < itemCount - 1) {\n var distBottom = this._getFrameMetricsApprox(last).offset - (offset + visibleLength);\n hiPri = hiPri || distBottom < 0 || velocity > 2 && distBottom < scrollingThreshold;\n } // Only trigger high-priority updates if we've actually rendered cells,\n // and with that size estimate, accurately compute how many cells we should render.\n // Otherwise, it would just render as many cells as it can (of zero dimension),\n // each time through attempting to render more (limited by maxToRenderPerBatch),\n // starving the renderer from actually laying out the objects and computing _averageCellLength.\n // If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate\n // We shouldn't do another hipri cellToRenderUpdate\n\n\n if (hiPri && (this._averageCellLength || this.props.getItemLayout) && !this._hiPriInProgress) {\n this._hiPriInProgress = true; // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n // as possible.\n\n this._updateCellsToRenderBatcher.dispose({\n abort: true\n });\n\n this._updateCellsToRender();\n\n return;\n } else {\n this._updateCellsToRenderBatcher.schedule();\n }\n }\n\n _updateViewableItems(data) {\n var getItemCount = this.props.getItemCount;\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.onUpdate(getItemCount(data), this._scrollMetrics.offset, this._scrollMetrics.visibleLength, this._getFrameMetrics, this._createViewToken, tuple.onViewableItemsChanged, this.state);\n });\n }\n\n}\n\nVirtualizedList.contextType = VirtualizedListContext;\n\nclass CellRenderer extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n separatorProps: {\n highlighted: false,\n leadingItem: this.props.item\n }\n };\n this._separators = {\n highlight: () => {\n var _this$props11 = this.props,\n cellKey = _this$props11.cellKey,\n prevCellKey = _this$props11.prevCellKey;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: true\n });\n },\n unhighlight: () => {\n var _this$props12 = this.props,\n cellKey = _this$props12.cellKey,\n prevCellKey = _this$props12.prevCellKey;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: false\n });\n },\n updateProps: (select, newProps) => {\n var _this$props13 = this.props,\n cellKey = _this$props13.cellKey,\n prevCellKey = _this$props13.prevCellKey;\n this.props.onUpdateSeparators([select === 'leading' ? prevCellKey : cellKey], newProps);\n }\n };\n }\n\n static getDerivedStateFromProps(props, prevState) {\n return {\n separatorProps: _objectSpread(_objectSpread({}, prevState.separatorProps), {}, {\n leadingItem: props.item\n })\n };\n } // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not\n // reused by SectionList and we can keep VirtualizedList simpler.\n\n\n updateSeparatorProps(newProps) {\n this.setState(state => ({\n separatorProps: _objectSpread(_objectSpread({}, state.separatorProps), newProps)\n }));\n }\n\n componentWillUnmount() {\n this.props.onUnmount(this.props.cellKey);\n }\n\n _renderElement(renderItem, ListItemComponent, item, index) {\n if (renderItem && ListItemComponent) {\n console.warn('VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' + ' precedence over renderItem.');\n }\n\n if (ListItemComponent) {\n /* $FlowFixMe[not-a-component] (>=0.108.0 site=react_native_fb) This\n * comment suppresses an error found when Flow v0.108 was deployed. To\n * see the error, delete this comment and run Flow. */\n\n /* $FlowFixMe[incompatible-type-arg] (>=0.108.0 site=react_native_fb)\n * This comment suppresses an error found when Flow v0.108 was deployed.\n * To see the error, delete this comment and run Flow. */\n return /*#__PURE__*/React.createElement(ListItemComponent, {\n item,\n index,\n separators: this._separators\n });\n }\n\n if (renderItem) {\n return renderItem({\n item,\n index,\n separators: this._separators\n });\n }\n\n invariant(false, 'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.');\n }\n\n render() {\n var _this$props14 = this.props,\n CellRendererComponent = _this$props14.CellRendererComponent,\n ItemSeparatorComponent = _this$props14.ItemSeparatorComponent,\n fillRateHelper = _this$props14.fillRateHelper,\n horizontal = _this$props14.horizontal,\n item = _this$props14.item,\n index = _this$props14.index,\n inversionStyle = _this$props14.inversionStyle,\n parentProps = _this$props14.parentProps;\n var renderItem = parentProps.renderItem,\n getItemLayout = parentProps.getItemLayout,\n ListItemComponent = parentProps.ListItemComponent;\n\n var element = this._renderElement(renderItem, ListItemComponent, item, index);\n\n var onLayout =\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=react_native_fb) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the\n * error delete this comment and run Flow. */\n getItemLayout && !parentProps.debug && !fillRateHelper.enabled() ? undefined : this.props.onLayout; // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and\n // called explicitly by `ScrollViewStickyHeader`.\n\n var itemSeparator = ItemSeparatorComponent && /*#__PURE__*/React.createElement(ItemSeparatorComponent, this.state.separatorProps);\n var cellStyle = inversionStyle ? horizontal ? [styles.rowReverse, inversionStyle] : [styles.columnReverse, inversionStyle] : horizontal ? [styles.row, inversionStyle] : inversionStyle;\n var result = !CellRendererComponent ?\n /*#__PURE__*/\n\n /* $FlowFixMe[incompatible-type-arg] (>=0.89.0 site=react_native_fb) *\n This comment suppresses an error found when Flow v0.89 was deployed. *\n To see the error, delete this comment and run Flow. */\n React.createElement(View, {\n style: cellStyle,\n onLayout: onLayout\n }, element, itemSeparator) : /*#__PURE__*/React.createElement(CellRendererComponent, _extends({}, this.props, {\n style: cellStyle,\n onLayout: onLayout\n }), element, itemSeparator);\n return /*#__PURE__*/React.createElement(VirtualizedListCellContextProvider, {\n cellKey: this.props.cellKey\n }, result);\n }\n\n}\n\nfunction describeNestedLists(childList) {\n var trace = 'VirtualizedList trace:\\n' + (\" Child (\" + (childList.horizontal ? 'horizontal' : 'vertical') + \"):\\n\") + (\" listKey: \" + childList.key + \"\\n\") + (\" cellKey: \" + childList.cellKey);\n var debugInfo = childList.parentDebugInfo;\n\n while (debugInfo) {\n trace += \"\\n Parent (\" + (debugInfo.horizontal ? 'horizontal' : 'vertical') + \"):\\n\" + (\" listKey: \" + debugInfo.listKey + \"\\n\") + (\" cellKey: \" + debugInfo.cellKey);\n debugInfo = debugInfo.parent;\n }\n\n return trace;\n}\n\nvar styles = StyleSheet.create({\n verticallyInverted: {\n transform: [{\n scaleY: -1\n }]\n },\n horizontallyInverted: {\n transform: [{\n scaleX: -1\n }]\n },\n row: {\n flexDirection: 'row'\n },\n rowReverse: {\n flexDirection: 'row-reverse'\n },\n columnReverse: {\n flexDirection: 'column-reverse'\n },\n debug: {\n flex: 1\n },\n debugOverlayBase: {\n position: 'absolute',\n top: 0,\n right: 0\n },\n debugOverlay: {\n bottom: 0,\n width: 20,\n borderColor: 'blue',\n borderWidth: 1\n },\n debugOverlayFrame: {\n left: 0,\n backgroundColor: 'orange'\n },\n debugOverlayFrameLast: {\n left: 0,\n borderColor: 'green',\n borderWidth: 2\n },\n debugOverlayFrameVis: {\n left: 0,\n borderColor: 'red',\n borderWidth: 2\n }\n});\nexport default VirtualizedList;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass _EventSubscription {\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n constructor(subscriber) {\n this.subscriber = subscriber;\n }\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n\n\n remove() {\n this.subscriber.removeSubscription(this);\n }\n\n}\n\nexport default _EventSubscription;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nimport _EventSubscription from './_EventSubscription';\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends _EventSubscription {\n /**\n * @param {EventEmitter} emitter - The event emitter that registered this\n * subscription\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n constructor(emitter, subscriber, listener, context) {\n super(subscriber);\n this.emitter = emitter;\n this.listener = listener;\n this.context = context;\n }\n /**\n * Removes this subscription from the emitter that registered it.\n * Note: we're overriding the `remove()` method of _EventSubscription here\n * but deliberately not calling `super.remove()` as the responsibility\n * for removing the subscription lies with the EventEmitter.\n */\n\n\n remove() {\n this.emitter.removeSubscription(this);\n }\n\n}\n\nexport default EmitterSubscription;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n */\n'use strict';\n\nimport invariant from 'fbjs/lib/invariant';\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n constructor() {\n this._subscriptionsForType = {};\n }\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n\n\n addSubscription(eventType, subscription) {\n invariant(subscription.subscriber === this, 'The subscriber of the subscription is incorrectly set.');\n\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n\n var key = this._subscriptionsForType[eventType].length;\n\n this._subscriptionsForType[eventType].push(subscription);\n\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n\n\n removeAllSubscriptions(eventType) {\n if (eventType == null) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n\n\n removeSubscription(subscription) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n var subscriptionsForType = this._subscriptionsForType[eventType];\n\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @returns {?array}\n */\n\n\n getSubscriptionsForType(eventType) {\n return this._subscriptionsForType[eventType];\n }\n\n}\n\nexport default EventSubscriptionVendor;","/**\n * Copyright (c) Meta Platforms, Inc. and 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 * @format\n * \n * @typecheck\n */\nimport invariant from 'fbjs/lib/invariant';\nimport EmitterSubscription from './_EmitterSubscription';\nimport EventSubscriptionVendor from './_EventSubscriptionVendor';\n\nvar sparseFilterPredicate = () => true;\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n /**\n * @constructor\n *\n * @param {EventSubscriptionVendor} subscriber - Optional subscriber instance\n * to use. If omitted, a new subscriber will be created for the emitter.\n */\n constructor(subscriber) {\n this._subscriber = subscriber || new EventSubscriptionVendor();\n }\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n\n addListener(eventType, // FIXME: listeners should return void instead of mixed to prevent issues\n listener, context) {\n return this._subscriber.addSubscription(eventType, new EmitterSubscription(this, this._subscriber, listener, context));\n }\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n\n\n removeAllListeners(eventType) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n /**\n * @deprecated Use `remove` on the EventSubscription from `addListener`.\n */\n\n\n removeSubscription(subscription) {\n invariant(subscription.emitter === this, 'Subscription does not belong to this emitter.');\n\n this._subscriber.removeSubscription(subscription);\n }\n /**\n * Returns the number of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @returns {number}\n */\n\n\n listenerCount(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n\n return subscriptions ? // We filter out missing entries because the array is sparse.\n // \"callbackfn is called only for elements of the array which actually\n // exist; it is not called for missing elements of the array.\"\n // https://www.ecma-international.org/ecma-262/9.0/index.html#sec-array.prototype.filter\n subscriptions.filter(sparseFilterPredicate).length : 0;\n }\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n\n\n emit(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n\n if (subscriptions) {\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 for (var i = 0, l = subscriptions.length; i < l; i++) {\n var subscription = subscriptions[i]; // The subscription may have been removed during this event loop.\n\n if (subscription && subscription.listener) {\n subscription.listener.apply(subscription.context, args);\n }\n }\n }\n }\n /**\n * @deprecated Use `remove` on the EventSubscription from `addListener`.\n */\n\n\n removeListener(eventType, // FIXME: listeners should return void instead of mixed to prevent issues\n listener) {\n console.error(\"EventEmitter.removeListener('\" + eventType + \"', ...): Method has been \" + 'deprecated. Please instead use `remove()` on the subscription ' + 'returned by `EventEmitter.addListener`.');\n\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n\n if (subscriptions) {\n for (var i = 0, l = subscriptions.length; i < l; i++) {\n var subscription = subscriptions[i]; // The subscription may have been removed during this event loop.\n // its listener matches the listener in method parameters\n\n if (subscription && subscription.listener === listener) {\n subscription.remove();\n }\n }\n }\n }\n\n}\n\nexport default EventEmitter;","/**\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\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n 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\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\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\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction filterUniqueArray(arr) {\n return arr.filter(function (val, index) {\n return arr.lastIndexOf(val) === index;\n });\n}\n\nexport default function assignStyle(base) {\n for (var i = 0, len = arguments.length <= 1 ? 0 : arguments.length - 1; i < len; ++i) {\n var style = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];\n\n for (var property in style) {\n var value = style[property];\n var baseValue = base[property];\n\n if (baseValue && value) {\n if (Array.isArray(baseValue)) {\n base[property] = filterUniqueArray(baseValue.concat(value));\n continue;\n }\n\n if (Array.isArray(value)) {\n base[property] = filterUniqueArray([baseValue].concat(_toConsumableArray(value)));\n continue;\n }\n\n if (_typeof(value) === 'object') {\n base[property] = assignStyle({}, baseValue, value);\n continue;\n }\n }\n\n base[property] = value;\n }\n }\n\n return base;\n}","var DASH = /-([a-z])/g;\nvar MS = /^Ms/g;\nvar cache = {};\n\nfunction toUpper(match) {\n return match[1].toUpperCase();\n}\n\nexport default function camelCaseProperty(property) {\n if (cache.hasOwnProperty(property)) {\n return cache[property];\n }\n\n var camelProp = property.replace(DASH, toUpper).replace(MS, 'ms');\n cache[property] = camelProp;\n return camelProp;\n}","import hyphenateStyleName from 'hyphenate-style-name';\nexport default function hyphenateProperty(property) {\n return hyphenateStyleName(property);\n}","import hyphenateProperty from './hyphenateProperty';\nexport default function cssifyDeclaration(property, value) {\n return hyphenateProperty(property) + ':' + value;\n}","import cssifyDeclaration from './cssifyDeclaration';\nexport default function cssifyObject(style) {\n var css = '';\n\n for (var property in style) {\n var value = style[property];\n\n if (typeof value !== 'string' && typeof value !== 'number') {\n continue;\n } // prevents the semicolon after\n // the last rule declaration\n\n\n if (css) {\n css += ';';\n }\n\n css += cssifyDeclaration(property, value);\n }\n\n return css;\n}","var RE = /^(Webkit|Moz|O|ms)/;\nexport default function isPrefixedProperty(property) {\n return RE.test(property);\n}","var RE = /-webkit-|-moz-|-ms-/;\nexport default function isPrefixedValue(value) {\n return typeof value === 'string' && RE.test(value);\n}","import hyphenateProperty from './hyphenateProperty';\nvar unitlessProperties = {\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n fontWeight: true,\n lineHeight: true,\n opacity: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\nvar prefixedUnitlessProperties = ['animationIterationCount', 'boxFlex', 'boxFlexGroup', 'boxOrdinalGroup', 'columnCount', 'flex', 'flexGrow', 'flexPositive', 'flexShrink', 'flexNegative', 'flexOrder', 'gridColumn', 'gridColumnEnd', 'gridColumnStart', 'gridRow', 'gridRowEnd', 'gridRowStart', 'lineClamp', 'order'];\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\nfunction getPrefixedProperty(prefix, property) {\n return prefix + property.charAt(0).toUpperCase() + property.slice(1);\n} // add all prefixed properties to the unitless properties\n\n\nfor (var i = 0, len = prefixedUnitlessProperties.length; i < len; ++i) {\n var property = prefixedUnitlessProperties[i];\n unitlessProperties[property] = true;\n\n for (var j = 0, jLen = prefixes.length; j < jLen; ++j) {\n unitlessProperties[getPrefixedProperty(prefixes[j], property)] = true;\n }\n} // add all hypenated properties as well\n\n\nfor (var _property in unitlessProperties) {\n unitlessProperties[hyphenateProperty(_property)] = true;\n}\n\nexport default function isUnitlessProperty(property) {\n return unitlessProperties.hasOwnProperty(property);\n}","var RE = /^(ms|Webkit|Moz|O)/;\nexport default function unprefixProperty(property) {\n var propertyWithoutPrefix = property.replace(RE, '');\n return propertyWithoutPrefix.charAt(0).toLowerCase() + propertyWithoutPrefix.slice(1);\n}","import camelCaseProperty from './camelCaseProperty';\nimport unprefixProperty from './unprefixProperty';\nexport default function normalizeProperty(property) {\n return unprefixProperty(camelCaseProperty(property));\n}","import hyphenateProperty from './hyphenateProperty';\nexport default function resolveArrayValue(property, value) {\n return value.join(';' + hyphenateProperty(property) + ':');\n}","var RE = /(-ms-|-webkit-|-moz-|-o-)/g;\nexport default function unprefixValue(value) {\n if (typeof value === 'string') {\n return value.replace(RE, '');\n }\n\n return value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = hyphenateProperty;\n\nvar _hyphenateStyleName = require(\"hyphenate-style-name\");\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2[\"default\"])(property);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isPrefixedValue;\nvar RE = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && RE.test(value);\n}","\"use strict\";\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 */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\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 */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\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 to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\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 var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/* Font Face Observer v2.3.0 - © Bram Stein. License: BSD-3-Clause */(function(){function p(a,c){document.addEventListener?a.addEventListener(\"scroll\",c,!1):a.attachEvent(\"scroll\",c)}function u(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function b(){document.removeEventListener(\"DOMContentLoaded\",b);a()}):document.attachEvent(\"onreadystatechange\",function g(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",g),a()})};function w(a){this.g=document.createElement(\"div\");this.g.setAttribute(\"aria-hidden\",\"true\");this.g.appendChild(document.createTextNode(a));this.h=document.createElement(\"span\");this.i=document.createElement(\"span\");this.m=document.createElement(\"span\");this.j=document.createElement(\"span\");this.l=-1;this.h.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.i.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.j.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.m.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.h.appendChild(this.m);this.i.appendChild(this.j);this.g.appendChild(this.h);this.g.appendChild(this.i)}\nfunction x(a,c){a.g.style.cssText=\"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\"+c+\";\"}function B(a){var c=a.g.offsetWidth,b=c+100;a.j.style.width=b+\"px\";a.i.scrollLeft=b;a.h.scrollLeft=a.h.scrollWidth+100;return a.l!==c?(a.l=c,!0):!1}function C(a,c){function b(){var e=g;B(e)&&null!==e.g.parentNode&&c(e.l)}var g=a;p(a.h,b);p(a.i,b);B(a)};function D(a,c,b){c=c||{};b=b||window;this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\";this.context=b}var E=null,F=null,G=null,H=null;function I(a){null===F&&(M(a)&&/Apple/.test(window.navigator.vendor)?(a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent),F=!!a&&603>parseInt(a[1],10)):F=!1);return F}function M(a){null===H&&(H=!!a.document.fonts);return H}\nfunction N(a,c){var b=a.style,g=a.weight;if(null===G){var e=document.createElement(\"div\");try{e.style.font=\"condensed 100px sans-serif\"}catch(q){}G=\"\"!==e.style.font}return[b,g,G?a.stretch:\"\",\"100px\",c].join(\" \")}\nD.prototype.load=function(a,c){var b=this,g=a||\"BESbswy\",e=0,q=c||3E3,J=(new Date).getTime();return new Promise(function(K,L){if(M(b.context)&&!I(b.context)){var O=new Promise(function(r,t){function h(){(new Date).getTime()-J>=q?t(Error(\"\"+q+\"ms timeout exceeded\")):b.context.document.fonts.load(N(b,'\"'+b.family+'\"'),g).then(function(n){1<=n.length?r():setTimeout(h,25)},t)}h()}),P=new Promise(function(r,t){e=setTimeout(function(){t(Error(\"\"+q+\"ms timeout exceeded\"))},q)});Promise.race([P,O]).then(function(){clearTimeout(e);\nK(b)},L)}else u(function(){function r(){var d;if(d=-1!=k&&-1!=l||-1!=k&&-1!=m||-1!=l&&-1!=m)(d=k!=l&&k!=m&&l!=m)||(null===E&&(d=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),E=!!d&&(536>parseInt(d[1],10)||536===parseInt(d[1],10)&&11>=parseInt(d[2],10))),d=E&&(k==y&&l==y&&m==y||k==z&&l==z&&m==z||k==A&&l==A&&m==A)),d=!d;d&&(null!==f.parentNode&&f.parentNode.removeChild(f),clearTimeout(e),K(b))}function t(){if((new Date).getTime()-J>=q)null!==f.parentNode&&f.parentNode.removeChild(f),\nL(Error(\"\"+q+\"ms timeout exceeded\"));else{var d=b.context.document.hidden;if(!0===d||void 0===d)k=h.g.offsetWidth,l=n.g.offsetWidth,m=v.g.offsetWidth,r();e=setTimeout(t,50)}}var h=new w(g),n=new w(g),v=new w(g),k=-1,l=-1,m=-1,y=-1,z=-1,A=-1,f=document.createElement(\"div\");f.dir=\"ltr\";x(h,N(b,\"sans-serif\"));x(n,N(b,\"serif\"));x(v,N(b,\"monospace\"));f.appendChild(h.g);f.appendChild(n.g);f.appendChild(v.g);b.context.document.body.appendChild(f);y=h.g.offsetWidth;z=n.g.offsetWidth;A=v.g.offsetWidth;t();\nC(h,function(d){k=d;r()});x(h,N(b,'\"'+b.family+'\",sans-serif'));C(n,function(d){l=d;r()});x(n,N(b,'\"'+b.family+'\",serif'));C(v,function(d){m=d;r()});x(v,N(b,'\"'+b.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=D:(window.FontFaceObserver=D,window.FontFaceObserver.prototype.load=D.prototype.load);}());\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPrefixer;\n\nvar _prefixProperty = require('./utils/prefixProperty');\n\nvar _prefixProperty2 = _interopRequireDefault(_prefixProperty);\n\nvar _prefixValue = require('./utils/prefixValue');\n\nvar _prefixValue2 = _interopRequireDefault(_prefixValue);\n\nvar _addNewValuesOnly = require('./utils/addNewValuesOnly');\n\nvar _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);\n\nvar _isObject = require('./utils/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n return function prefix(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);\n\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = (0, _prefixProperty2.default)(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = backgroundClip;\nfunction backgroundClip() {\n return null;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _cssInJsUtils = require('css-in-js-utils');\n\nvar CROSS_FADE_REGEX = /cross-fade\\(/g;\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\n\nfunction crossFade(property, value) {\n if (typeof value === 'string' && !(0, _cssInJsUtils.isPrefixedValue)(value) && value.indexOf('cross-fade(') !== -1) {\n return prefixes.map(function (prefix) {\n return value.replace(CROSS_FADE_REGEX, prefix + 'cross-fade(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _cssInJsUtils = require('css-in-js-utils');\n\nvar FILTER_REGEX = /filter\\(/g;\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\n\nfunction filter(property, value) {\n if (typeof value === 'string' && !(0, _cssInJsUtils.isPrefixedValue)(value) && value.indexOf('filter(') !== -1) {\n return prefixes.map(function (prefix) {\n return value.replace(FILTER_REGEX, prefix + 'filter(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\n\nfunction imageSet(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = logical;\nvar alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nfunction logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\nfunction position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nfunction sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\nvar _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');\n\nvar _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);\n\nvar _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nvar _capitalizeString = require('../utils/capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if ((0, _isPrefixedValue2.default)(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = (0, _hyphenateProperty2.default)(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nfunction transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;\n style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;\n return outputValue;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addNewValuesOnly;\nfunction addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nfunction addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\nfunction isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixProperty;\n\nvar _capitalizeString = require('./capitalizeString');\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction prefixProperty(prefixProperties, property, style) {\n var requiredPrefixes = prefixProperties[property];\n\n if (requiredPrefixes && style.hasOwnProperty(property)) {\n var capitalizedProperty = (0, _capitalizeString2.default)(property);\n\n for (var i = 0; i < requiredPrefixes.length; ++i) {\n var prefixedProperty = requiredPrefixes[i] + capitalizedProperty;\n\n if (!style[prefixedProperty]) {\n style[prefixedProperty] = style[property];\n }\n }\n }\n\n return style;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixValue;\nfunction prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\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","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var 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\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\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 */\n function 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\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\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 */\n function 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\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function 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\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 */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\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 */\n function 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\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\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 */\n function 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\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 */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\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 */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\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 */\n function 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\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\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 */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\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 */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\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 */\n function 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\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\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 */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\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 */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\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 */\n function stackHas(key) {\n return this.__data__.has(key);\n }\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 */\n function 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\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\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 */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\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 */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\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 */\n function 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\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 */\n function 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\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\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 */\n function 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\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\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 */\n function 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\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 */\n function 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\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 */\n function 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\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\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 */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\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 */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\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 */\n function 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\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 */\n var 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\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\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 */\n function 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\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\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 */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\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 (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\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 */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\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 */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '